■ はじめに
https://dk521123.hatenablog.com/entry/2021/11/16/231010
で、アクセス制御で少し触れた GRANT OWNERSHIP を使って 所有者の変更したので、メモしておく
目次
【1】GRANT OWNERSHIP 1)オプション「[ REVOKE | COPY ] CURRENT GRANTS」 補足:アウトバウンド権限とは? 【2】所有者権限の付与 1)データベースの所有者権限付与 2)スキーマの所有者権限付与 3)ロールの所有者権限付与 4)ユーザの所有者権限付与 【3】所有権の変更について 1)テーブルの所有権の変更
【1】GRANT OWNERSHIP
https://docs.snowflake.com/ja/sql-reference/sql/grant-ownership.html
構文
GRANT OWNERSHIP ON { objectType <object_name> | ALL schemaObjectsType IN SCHEMA <schema_name> } TO ROLE <name> [ { REVOKE | COPY } CURRENT GRANTS ]
1)オプション「[ REVOKE | COPY ] CURRENT GRANTS」
https://docs.snowflake.com/ja/sql-reference/sql/grant-ownership.html#optional-parameters
* 所有権が新しいロールに変更される際、 オブジェクトの既存のアウトバウンド権限(※)すべてを 削除する or 譲渡するかを指定
# | 項目 | 説明 |
---|---|---|
1 | revoke current grants | 所有権が新しいロールに譲渡されるとき、オブジェクトの既存のアウトバウンド権限すべてを削除する |
2 | copy current grants | 所有権が新しいロールに譲渡されるとき、オブジェクトの既存のアウトバウンド権限すべてを譲渡する |
[1] revoke
* 変更前に前権限を削除する cf. REVOKE = 取り消す
[2] copy
* 変更前に前権限を引き継がれる(コピーされる)
補足:アウトバウンド権限とは?
https://docs.snowflake.com/ja/sql-reference/sql/grant-ownership.html#optional-parameters
より抜粋 ~~~~~~~~ アウトバウンド 権限とは、 所有権が変更される個々のオブジェクトに対して付与される権限を指します。 ~~~~~~~~
【2】所有者権限の付与
* 基本「GRANT <権限> ... TO ROLE」の形。
https://docs.snowflake.com/ja/sql-reference/sql/grant-privilege.html
1)データベースの所有者権限付与
構文
GRANT OWNERSHIP ON DATABASE <DB_NAME> TO ROLE <ROLE_NAME>;
2)スキーマの所有者権限付与
構文
GRANT OWNERSHIP ON SCHEMA <SCHEMA_NAME> TO <ROLE_NAME>;
3)ロールの所有者権限付与
構文
GRANT OWNERSHIP ON ROLE <CHILD_ROLE_NAME> TO ROLE <PARENT_ROLE_NAME>;
コマンド例
GRANT OWNERSHIP ON USER demo_user TO ROLE demo_owner_role; GRANT OWNERSHIP ON ROLE demo_role TO ROLE demo_owner_role;
4)ユーザの所有者権限付与
構文
GRANT OWNERSHIP ON USER <USER_NAME> TO ROLE <ROLE_NAME>;
コマンド例
GRANT OWNERSHIP ON USER demo_user TO ROLE demo_owner_role;
【2】所有権の変更について
* 変更についても、GRANT OWNERSHIP を使う(ALTER XXXじゃない)
1)テーブルの所有権の変更
構文例
-- revoke|copy => revoke or copy どっちか選択 grant ownership on table <対象テーブル> to role <変更したいロール> revoke|copy current grants;
revoke
-- test_db.public.test_table テーブルの所有権をadminロールに変更。 -- その際、現在のアウトバウンド権限すべての破棄し adminロールに付与 grant ownership on table "test_db"."public"."test_table" to role admin revoke current grants; -- [構文] -- grant ownership on table <対象テーブル> -- to role <変更したいロール> revoke current grants;
copy
-- test_db.public.test_table テーブルの所有権をadminロールに変更。 -- その際、現在のアウトバウンド権限すべてのコピーとともに adminロールに付与 grant ownership on table "test_db"."public"."test_table" to role admin copy current grants;
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / データ型 ~
https://dk521123.hatenablog.com/entry/2021/12/16/095524
Snowflake ~ 基本編 / キャスト ~ ~
https://dk521123.hatenablog.com/entry/2021/12/15/162658
Snowflake ~ 基本編 / データロード ~
https://dk521123.hatenablog.com/entry/2021/11/15/221245
Snowflake ~ 基本編 / アクセス制御 ~
https://dk521123.hatenablog.com/entry/2021/11/16/231010
Snowflake ~ 基本編 / ゼロコピークローン ~
https://dk521123.hatenablog.com/entry/2021/11/27/134934
Snowflake ~ SHOW / DESCRIBE ~
https://dk521123.hatenablog.com/entry/2022/02/24/231532
Snowflake ~ SHOW GRANT ~
https://dk521123.hatenablog.com/entry/2022/10/25/213624
権限トラブル時のTips
https://dk521123.hatenablog.com/entry/2022/08/19/131922
エラー「Failed to cast variant value "" to XXX」時の対応
https://dk521123.hatenablog.com/entry/2021/12/17/102659