こんにちは。データサイエンティスト兼、データ基盤エンジニアのshobyです。
皆さんはRedShiftで「アカウント追加お願いします!」「権限追加お願いします!」といった運用オペレーションを依頼されることはどの程度ありますか?
今回は、週に一度は権限周りの依頼をされる私が、権限管理オペレーションによく使うSQLをチートシートにしました。 ご活用ください。
概要
- おすすめの権限管理方針について
- チートシート
おすすめの権限管理方針について
チートシートに入る前に、おすすめの権限管理の方針についてご紹介します。
RedShiftの権限管理は、個別のユーザーには権限設定をせず、グループに対して権限設定をする方針がおすすめです。 全てのスキーマ、全てのテーブルについて、個別のアカウントごとに権限を管理してしまうと、権限を変更するのが困難になるためです。
ユーザーは役割ごとにグループに所属させ、スキーマやテーブルごとに、グループ単位でのアクセス権限を設定するのをおすすめします。
チートシート
それでは、実際に私がよく使うオペレーション用SQLをご紹介します。
ユーザーの一覧を取得
SELECT * FROM pg_user;
グループの一覧と所属ユーザーを取得
SELECT * FROM pg_group;
スキーマ一覧とユーザーごとの権限を取得
SELECT * FROM pg_namespace;
テーブルごとの権限を取得
ユーザーを作成
CREATE USER user_name PASSWORD 'password';
ユーザーをグループに追加
ALTER GROUP read_only_group ADD USER user_name;
特定スキーマのUSAGE権限を特定グループに付与する
GRANT USAGE ON SCHEMA schema_name TO GROUP group_name;
特定のスキーマに存在する全テーブルのSELECT権限を特定グループに付与する
GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO GROUP group_name;
特定テーブルのownerを変更する
ALTER TABLE table_name OWNER TO owner_user_name;
まとめ
RedShiftでは、グループ単位で権限設定をするのがおすすめです。 チートシートを使って権限管理の運用オペレーション負荷を減らしましょう!