RedShiftの権限管理オペレーション用SQLチートシート

こんにちは。データサイエンティスト兼、データ基盤エンジニアのshobyです。

皆さんはRedShiftで「アカウント追加お願いします!」「権限追加お願いします!」といった運用オペレーションを依頼されることはどの程度ありますか?

今回は、週に一度は権限周りの依頼をされる私が、権限管理オペレーションによく使うSQLをチートシートにしました。 ご活用ください。

概要

  • おすすめの権限管理方針について
  • チートシート

おすすめの権限管理方針について

チートシートに入る前に、おすすめの権限管理の方針についてご紹介します。

RedShiftの権限管理は、個別のユーザーには権限設定をせず、グループに対して権限設定をする方針がおすすめです。 全てのスキーマ、全てのテーブルについて、個別のアカウントごとに権限を管理してしまうと、権限を変更するのが困難になるためです。

ユーザーは役割ごとにグループに所属させ、スキーマやテーブルごとに、グループ単位でのアクセス権限を設定するのをおすすめします。

チートシート

それでは、実際に私がよく使うオペレーション用SQLをご紹介します。

ユーザーの一覧を取得

SELECT *
FROM pg_user;

ユーザー - Amazon Redshift

グループの一覧と所属ユーザーを取得

SELECT *
FROM pg_group;

グループ - Amazon Redshift

スキーマ一覧とユーザーごとの権限を取得

SELECT *
FROM pg_namespace;

スキーマ - Amazon Redshift

テーブルごとの権限を取得

dev.classmethod.jp

ユーザーを作成

CREATE USER user_name PASSWORD 'password';

CREATE USER - Amazon Redshift

ユーザーをグループに追加

ALTER GROUP read_only_group ADD USER user_name;

ALTER GROUP - Amazon Redshift

特定スキーマのUSAGE権限を特定グループに付与する

GRANT USAGE ON SCHEMA schema_name TO GROUP group_name;

GRANT - Amazon Redshift

特定のスキーマに存在する全テーブルのSELECT権限を特定グループに付与する

GRANT SELECT ON ALL TABLES IN SCHEMA schema_name TO GROUP group_name;

GRANT - Amazon Redshift

特定テーブルのownerを変更する

ALTER TABLE table_name OWNER TO owner_user_name;

ALTER TABLE - Amazon Redshift

まとめ

RedShiftでは、グループ単位で権限設定をするのがおすすめです。 チートシートを使って権限管理の運用オペレーション負荷を減らしましょう!