データベースロール: 将来の付与を使用したデータベースロールの共有禁止

注意

この動作変更は2023_05バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

将来の付与とデータベースロールの動作は以下のとおりです。

以前:

データベースロールに将来の権限を付与し、共有にデータベースロールを付与することができます。2つのシナリオがあります。

  1. データベースロールに権限を付与し、共有にデータベースロールを付与します。

    GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
    GRANT DATABASE ROLE dbr1 TO SHARE myshare;
    
    Copy
  2. 共有にデータベースロールを付与し、データベースロールに将来の権限を付与します。

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

以下のコマンドを使用して、保留中の変更の影響を受けるデータベースロールがあるかどうかを識別できます。

SHOW FUTURE GRANTS IN DATABASE parent_db;
SHOW FUTURE GRANTS IN shared_schema;
Copy
現在:

データベースロールが共有に付与されている場合、オブジェクトに将来の付与を許可することはできません。Snowflakeは、試行するシナリオに応じて固有のエラーメッセージを返します。

  1. シナリオ1では、エラーメッセージは次のようになります。

    Cannot share a database role with future grants to it.
    

    REVOKE <権限> ステートメントを使用して、データベースロールから将来の付与を取り消します。必要に応じて、 GRANT <権限> ステートメントを更新し、将来の付与を指定しないようにします。最後に、データベースロールを共有に付与します。

  2. シナリオ2では、エラーメッセージは次のようになります。

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

    GRANT <権限> ステートメントを修正し、将来の付与を指定しないようにします。

参照: 1144