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

  • 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, 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 pour les 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.

  • Actuellement, le partage d’un 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 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;