データベースロール: 将来の付与を使用したデータベースロールの共有禁止¶
将来の付与とデータベースロールの動作は以下のとおりです。
- 以前:
データベースロールに将来の権限を付与し、共有にデータベースロールを付与することができます。2つのシナリオがあります。
データベースロールに権限を付与し、共有にデータベースロールを付与します。
GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1; GRANT DATABASE ROLE dbr1 TO SHARE myshare;
共有にデータベースロールを付与し、データベースロールに将来の権限を付与します。
GRANT DATABASE ROLE dbr1 TO SHARE myshare; GRANT SELECT ON FUTURE TABLES IN SCHEMA sh TO DATABASE ROLE dbr1;
以下のコマンドを使用して、保留中の変更の影響を受けるデータベースロールがあるかどうかを識別できます。
SHOW FUTURE GRANTS IN DATABASE parent_db; SHOW FUTURE GRANTS IN shared_schema;
- 現在:
データベースロールが共有に付与されている場合、オブジェクトに将来の付与を許可することはできません。Snowflakeは、試行するシナリオに応じて固有のエラーメッセージを返します。
シナリオ1では、エラーメッセージは次のようになります。
Cannot share a database role with future grants to it.
REVOKE <権限> ステートメントを使用して、データベースロールから将来の付与を取り消します。必要に応じて、 GRANT <権限> ステートメントを更新し、将来の付与を指定しないようにします。最後に、データベースロールを共有に付与します。
シナリオ2では、エラーメッセージは次のようになります。
Cannot grant future grants to a database role that is granted to a share.
GRANT <権限> ステートメントを修正し、将来の付与を指定しないようにします。
参照: 1144