Rôles des bases de données : le partage des rôles de la base de données avec de futures attributions n’est pas autorisé

Attention

Ce changement de comportement est présent dans le bundle 2023_05.

Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.

Le comportement des futures attributions et des rôles de base de données est le suivant :

Précédemment

Vous pouvez accorder des privilèges futurs à un rôle de base de données et accorder le rôle de base de données à un partage. Deux scénarios sont possibles :

  1. Accordez les privilèges au rôle de base de données, puis accordez le rôle de base de données au partage.

    GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
    GRANT DATABASE ROLE dbr1 TO SHARE myshare;
    
    Copy
  2. Accordez le rôle de base de données à un partage, puis accordez les privilèges futurs au rôle de base de données.

    GRANT DATABASE ROLE dbr1 TO SHARE myshare;
    GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
    
    Copy

Vous pouvez utiliser les commandes suivantes pour identifier si vous avez des rôles de base de données qui sont affectés par les modifications en attente :

SHOW FUTURE GRANTS IN DATABASE parent_db;
SHOW FUTURE GRANTS IN shared_schema;
Copy
Actuellement

Vous ne pourrez pas accorder de subventions futures sur des objets lorsque le rôle de base de données est accordé à un partage. Snowflake renvoie un message d’erreur unique en fonction du scénario que vous essayez :

  1. Dans le cas du premier scénario, le message d’erreur est le suivant :

    Cannot share a database role with future grants to it.
    

    Utilisez une instruction REVOKE <privilèges> pour révoquer l’attribution future du rôle de base de données. Si nécessaire, mettez à jour l’instruction GRANT <privilèges> afin qu’elle ne spécifie pas d’attributions futures. Enfin, accordez le rôle de base de données au partage.

  2. Dans le cas du deuxième scénario, le message d’erreur est le suivant :

    Cannot grant future grants to a database role that is granted to a share.
    

    Modifiez l’instruction GRANT <privilèges> de manière à ce qu’elle ne spécifie pas les attributions futures.

Réf : 1144