Catégories :

Utilisateur et sécurité DDL (contrôle d’accès)

GRANT <privilège> … TO SHARE

Accorde des privilèges d’accès pour les bases de données et d’autres objets de base de données pris en charge (schémas, tables et vues) à un partage. L’octroi de privilèges sur ces objets ajoute effectivement les objets au partage, qui peut ensuite être partagé avec un ou plusieurs comptes consommateurs.

Pour plus de détails, voir Présentation de Secure Data Sharing et Utilisation des partages.

Voir aussi :

REVOKE <privilège> … FROM SHARE

GRANT <privileges> … TO ROLE

Syntaxe

GRANT objectPrivilege ON
     {  DATABASE <name>
      | SCHEMA <name>
      | { TABLE <name> | ALL TABLES IN SCHEMA <schema_name> }
      | { VIEW <name> | ALL VIEWS IN SCHEMA <schema_name> }  }
  TO SHARE <share_name>

Où :

objectPrivilege ::=
-- For DATABASE or SCHEMA
    USAGE
-- For TABLE or VIEW
    SELECT
-- For DATABASE
    REFERENCE_USAGE

Paramètres

nom

Indique l’identificateur de l’objet (base de données, schéma, table ou vue sécurisée) pour lequel le privilège spécifié est accordé.

nom_schéma

Indique l’identificateur du schéma pour lequel le privilège spécifié est accordé pour toutes les tables ou vues.

nom_partage

Indique l’identificateur du partage à partir duquel le privilège spécifié est accordé.

Notes sur l’utilisation

  • Chaque privilège d’objet doit être accordé individuellement à un rôle, à l’exception des tables et des vues. En utilisant une clause ALL, vous pouvez accorder SELECT à un rôle sur toutes les tables ou vues d’un schéma spécifié.

  • Un partage peut obtenir le privilège USAGE pour une base de données unique ; cependant, dans la base de données, plusieurs schémas, tables et vues peuvent bénéficier de ce privilège.

  • Actuellement, un partage ne peut obtenir que le privilège SELECT pour des vues sécurisées. Si vous essayez d’accorder une vue non sécurisée à un partage, une erreur est renvoyée.

    En raison de cette limitation, n’utilisez ALL VIEWS IN SCHEMA nom_schéma que si toutes les vues du schéma spécifié sont sécurisées.

  • Utilisez le privilège REFERENCE_USAGE lorsque vous partagez une vue sécurisée faisant référence à des objets appartenant à plusieurs bases de données.

  • Le privilège REFERENCE_USAGE doit être accordé individuellement à chaque base de données.

  • Le privilège REFERENCE_USAGE doit être accordé à une base de données avant d’octroyer SELECT sur une vue sécurisée d’un partage.

Exemples

Voici un exemple de partage d’objets à partir d’une base de données unique :

GRANT USAGE ON DATABASE mydb TO SHARE share1;

GRANT USAGE ON SCHEMA mydb.public TO SHARE share1;

GRANT SELECT ON ALL TABLES IN SCHEMA mydb.public TO SHARE share1;

GRANT USAGE ON SCHEMA mydb.shared_schema TO SHARE share1;

GRANT SELECT ON VIEW mydb.shared_schema.view1 TO SHARE share1;

GRANT SELECT ON VIEW mydb.shared_schema.view3 TO SHARE share1;

Voici un exemple de partage d’une vue sécurisée faisant référence à des objets d’une autre base de données :

CREATE SECURE VIEW view2 AS SELECT * FROM database2.public.sampletable;

GRANT USAGE ON DATABASE database1 TO SHARE share1;

GRANT USAGE ON SCHEMA database1.schema1 TO SHARE share1;

GRANT REFERENCE_USAGE ON DATABASE database2 TO SHARE share1;

GRANT SELECT ON VIEW view2 TO SHARE share1;