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, UDFs, 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 <privilèges>

Syntaxe

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

Où :

objectPrivilege ::=
-- For DATABASE
   REFERENCE_USAGE [ , ... ]
-- For DATABASE, FUNCTION, or SCHEMA
   USAGE [ , ... ]
-- For TABLE
   EVOLVE SCHEMA [ , ... ]
-- For TABLE or VIEW
   SELECT [ , ... ]
-- For TAG
   READ
Copy

Paramètres

name

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

schema_name

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

share_name

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

Notes sur l’utilisation

  • Le privilège USAGE sur une seule base de données peut être accordé à un partage ; toutefois, au sein de cette base de données, des privilèges sur plusieurs schémas, UDFs, tables et vues peuvent être accordés au partage.

  • Les privilèges sur les objets individuels doivent être accordés à un partage dans des instructions GRANT distinctes. La seule exception est le privilège SELECT sur les tables. En utilisant une clause ALL vous pouvez accorder SELECT à un partage sur toutes les tables d’un schéma spécifié.

  • Le privilège SELECT sur des vues ne peut être accordé que sur des vues sécurisées. La tentative d’accorder le privilège SELECT sur une vue non sécurisée à un partage renvoie une erreur.

  • Le privilège USAGE ne peut être accordé que sur des UDFs sécurisées. La tentative d’accorder le privilège USAGE sur une UDF non sécurisée à un partage renvoie une erreur.

  • Actuellement, le partage d’une UDF qui fait référence à un objet d’une autre base de données n’est pas pris en charge. Par exemple, si vous essayez d’accorder USAGE sur un UDF qui fait référence à une vue sécurisée d’une autre base de données, une erreur est renvoyée.

  • 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, comme suit :

    • 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 le privilège SELECT sur une vue sécurisée d’un partage.

  • Secure Data Sharing : les fournisseurs de données ne peuvent pas ajouter automatiquement de nouveaux objets à un partage en utilisant des autorisations futures. En d’autres termes, les fournisseurs de données ne peuvent pas accorder de privilèges sur des objets futurs pour un partage en utilisant les instructions GRANT <privilège> … TO SHARE.

  • Vous ne pouvez pas partager à nouveau une base de données ou des objets de base de données créés à partir d’un partage. Si vous tentez d’accorder le privilège USAGE à une base de données ou à des objets de base de données créés à partir d’un partage vers un partage différent, une erreur est renvoyée.

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 USAGE ON FUNCTION mydb.shared_schema.function1 TO SHARE share1;

GRANT USAGE ON FUNCTION mydb.shared_schema.function2 TO SHARE share1;

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

GRANT SELECT ON ALL DYNAMIC 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;

GRANT SELECT ON DYNAMIC TABLE mydb.public TO SHARE share1;
Copy

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;
Copy