はじめに
Snowflakeの運用保守を担当した中で、ロール間で親子関係を構成した際の権限の継承に対する理解が十分でなかったためにトラブルシューティングで苦労したので注意点を記事に残そうと思いました。
カスタムロールで親子関係を構成する時に注意すること
複数のカスタムロールの間で親子関係を構成する際、以下を注意して親ロールを指定する必要があります。
・親ロールに指定されたロールは、子となるロールが持つ全ての権限を持ちます。
・カスタムロールの親子関係の中で最上位のカスタムロールでは、親ロールにSYSADMINロールを指定する必要があります。
↓親子関係で最上位となるカスタムロールを作成する時に指定する親ロール
- 参考:カスタムロールの管理
カスタムロールの構成例
以下のカスタムロールを作り、親子関係を構成しています(R_PARENTロールは、R_CHILD1ロールとR_CHILD2ロールの親ロールです)。
・R_PARENTロール
・R_CHILD1ロール
・R_CHILD2ロール
R_CHILD1とR_CHILD2ロールは、それぞれデータベースに対するUSAGE、スキーマに対するUSAGEとCREATE TABLE、ウェアハウスに対するUSAGEとOPERATE権限を持ちます。
R_CHILD1とR_CHILD2ロールにおいて、親ロールにR_PARENTロールを指定すると、R_PARENTロールは子ロールが持つ権限を継承するため、R_CHILD1とR_CHILD2の両方のロールの権限を持つことができます。
さらに、カスタムロールの親子関係で最上位であるR_PARENTロールでは、親ロールにSYSADMINロール(システム定義ロール)を指定する必要があります。
SYSADMINロールを親ロールにすることで、SYSADMINロールがカスタムロールで作成された全てのデータベースオブジェクト(テーブル、タスクやストリーム等)を管理することができます。
もし、親ロールにSYSADMINロールを指定していないと、SYSADMIN並びにACCOUNTADMINですら、カスタムロールで作成されたデータベースオブジェクトを管理できなくなってしまいます。
(例えば、ACCOUNTADMINがカスタムロールで作成されたテーブルに対してデータを登録したり、テーブルの削除もできません)
例) カスタムロールの権限が継承されていない状態で、ACCOUNTADMINがカスタムロールで作成されたテーブルを削除しようとした場合
おわりに
Snowflakeの運用では権限のコントロールが課題となります。利用者の用途が増えると、新たな要件が加わり、権限のコントロールも複雑になって見直しを迫られる場合もあります。今後もSnowflakeの運用で試行錯誤した経験を記事に掲載していきたいと思います。
ご案内
株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area