web-dev-qa-db-ja.com

RedshiftのすべてのテーブルにSELECTを付与します

RedshiftのグループにSELECT特権を割り当てようとしています。だから私はグループとそのグループにユーザーを作成しました:

CREATE GROUP data_viewers;
CREATE USER <user> PASSWORD '<password>' IN GROUP data_viewers;

ここで、このグループが任意のテーブルからデータを読み取れるようにします。

GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO GROUP data_viewers;

コマンドはGRANTを返します。新しく作成したユーザーとしてRedshiftに接続してSELECT * FROM something.something;取得:

スキーマの何かに対して許可が拒否されました

私は何かに許可を与えようとしました:GRANT SELECT ON ALL TABLES IN SCHEMA something TO GROUP data_viewers;しかし、これは何も変更していません。


自分のグループのユーザーに、スキーマ内の任意のテーブルのSELECTデータを許可するにはどうすればよいですか?

9
Salvador Dali

schemaには、(少なくとも)USAGE特権も必要です。

GRANT USAGE ON SCHEMA something TO GROUP data_viewers;

関連するPostgresの例:

既存のテーブルに対する権限のみを付与したことを思い出してください。後で作成されるテーブルには適用されません。それらもカバーするには:

ALTER DEFAULT PRIVILEGES FOR USER role_that_creates_tables
IN SCHEMA public
GRANT SELECT ON TABLES TO GROUP data_viewers;

Amazon Redshift実装DEFAULT PRIVILEGESも同様です。

Postgresの完全なクックブックは次のとおりです。

メインラインPostgresとRedshiftの間のいくつかの違いに注意してください! Redshiftはusersgroupsを分離し続けますが、Postgresはそれをroles

そして、Redshiftがシーケンスをどのように処理するかわかりません...

14

Redshiftの読み取り専用ユーザーも同じように必要でした。ドキュメントを読んだ後、私は 次のようになりました 一連のクエリ:

-- Create Read-Only Group     
CREATE GROUP ro_group;

-- Create User
CREATE USER ro_user WITH password PASSWORD;

-- Add User to Read-Only Group
ALTER GROUP ro_group ADD USER ro_user;

-- Grant Usage permission to Read-Only Group to specific Schema
GRANT USAGE ON SCHEMA "ro_schema" TO GROUP ro_group;

-- Grant Select permission to Read-Only Group to specific Schema
GRANT SELECT ON ALL TABLES IN SCHEMA "ro_schema" TO GROUP ro_group;

-- Alter Default Privileges to maintain the permissions on new tables
ALTER DEFAULT PRIVILEGES IN SCHEMA "ro_schema" GRANT SELECT ON TABLES TO GROUP ro_group;

-- Revoke CREATE privileges from group
REVOKE CREATE ON SCHEMA "ro_schema" FROM GROUP ro_group;

ユーザーを後で実際に削除する場合は、かなり前に戻る必要があります。

11
Joe Kaire