GRANT - Amazon Redshift

GRANT

ユーザーまたはユーザーグループのアクセス権を定義します。

権限には、テーブルとビューのデータの読み込み、データの書き込み、テーブルの作成、テーブルの削除など、アクセスオプションが含まれます。このコマンドを使用して、テーブル、データベース、スキーマ、関数、手順、言語、または列に特定の権限を付与します。データベースオブジェクトから権限を削除するには、REVOKEコマンドを使用します。

権限には、オブジェクトまたはコンシューマーをデータ共有に追加したり、オブジェクトまたはコンシューマーをデータ共有から削除したりできるなどのアクセスオプションも含まれます。ユーザーまたはユーザーグループのデータ共有にデータベースオブジェクトを追加したり、データベースオブジェクトをデータ共有から削除したりするには、ALTER 権限を使用します。同様に、データ共有でコンシューマーを追加または削除するには、SHARE 権限を使用します。データベースオブジェクトから権限を削除するには、REVOKEコマンドを使用します。ALTER および SHARE は、ユーザーおよびユーザーグループに付与できる唯一の権限です。

ON SCHEMA 構文を使用するデータベースユーザーおよびユーザーグループには、外部スキーマに対する USAGE 権限の GRANT (付与) または REVOKE (取り消し) のみを行うことができます。AWS Lake Formation で ON EXTERNAL SCHEMA を使用する場合は、AWS Identity and Access Management(IAM) ロールに対して、権限の GRANT (付与) および REVOKE (取り消し) のみ行うことができます。権限のリストについては、該当する構文を参照してください。

ストアドプロシージャの場合、付与できる権限は EXCUTE のみです。

トランザクションブロック (BEGIN ... END) 内で GRANT を (外部リソースで) 実行することはできません。トランザクションの詳細については、「直列化可能分離」を参照してください。

構文

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

Amazon Redshift テーブルとビューに対する列レベルの権限の構文を次に示します。

GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

次に、指定されたロールを持つユーザーおよびグループに付与される ASSUMEROLE 権限の構文を示します。ASSUMEROLE 権限の使用を開始する際は、「ASSUMEROLE 権限を付与するための使用上の注意事項 」を参照してください。

GRANT ASSUMEROLE ON { 'iam_role' [, ...] | default | ALL } TO { username | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]

以下に、Redshift Spectrum と Lake Formation の統合構文を示します。

GRANT { SELECT | ALL [ PRIVILEGES ] } ( column_list ) ON EXTERNAL TABLE schema_name.table_name TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ] GRANT { { SELECT | ALTER | DROP | DELETE | INSERT } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL TABLE schema_name.table_name [, ...] TO { { IAM_ROLE iam_role } [, ...] | PUBLIC } [ WITH GRANT OPTION ] GRANT { { CREATE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL SCHEMA schema_name [, ...] TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ]

以下は、Amazon Redshift のデータ共有権限に GRANT を使用するための構文です。この場合、ユーザーおよびユーザーグループに付与できる権限は ALTER および SHARE だけです。

GRANT { ALTER | SHARE } ON DATASHARE datashare_name TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

以下は、Amazon Redshift でのデータ共有の使用権限に GRANT を使用するための構文です。USAGE 権限を使用して、データ共有へのアクセスをコンシューマーに許可します。ユーザーまたはユーザーグループに、この権限を付与することはできません。この権限は、GRANT ステートメントの WITH GRANT OPTION もサポートしていません。このタイプの GRANT ステートメントを実行できるのは、以前に FOR データ共有に付与された SHARE 権限を持つユーザーまたはユーザーグループのみです。

GRANT USAGE ON DATASHARE datashare_name TO NAMESPACE 'namespaceGUID' [, ...] | ACCOUNT 'accountnumber' [ VIA DATA CATALOG ] [, ...]

以下は、Lake Formation アカウントにデータ共有の使用を許可する方法の例です。

GRANT USAGE ON salesshare TO ACCOUNT '123456789012' VIA DATA CATALOG;

以下は、データ共有から作成された特定のデータベースまたはスキーマに対する GRANT データ共有の使用許可の構文です。この USAGE 許可は、指定されたデータ共有から作成されていないデータベースに対して使用許可を付与しません。ユーザーおよびユーザーグループには、データ共有に対する ALTER または SHARE 権限の付与または取り消しのみを行うことができます。

GRANT USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema} TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

Amazon Redshift での機械学習モデル権限の構文を次に示します。

GRANT CREATE MODEL TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON MODEL model_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

以下に、Amazon Redshift でロールの権限を付与する際の構文を示します。

GRANT { ROLE role_name } [, ...] TO { { user_name [ WITH ADMIN OPTION ] } | ROLE role_name }[, ...]

以下に、Amazon Redshift でロールにシステム権限を付与する際の構文を示します。

GRANT { { CREATE USER | DROP USER | ALTER USER | CREATE SCHEMA | DROP SCHEMA | ALTER DEFAULT PRIVILEGES | CREATE TABLE | DROP TABLE | ALTER TABLE | CREATE OR REPLACE FUNCTION | CREATE OR REPLACE EXTERNAL FUNCTION | DROP FUNCTION | CREATE OR REPLACE PROCEDURE | DROP PROCEDURE | CREATE OR REPLACE VIEW | DROP VIEW | CREATE MODEL | DROP MODEL | CREATE DATASHARE | ALTER DATASHARE | DROP DATASHARE | CREATE LIBRARY | DROP LIBRARY | CREATE ROLE | DROP ROLE TRUNCATE TABLE VACUUM | ANALYZE | CANCEL }[, ...] } | { ALL [ PRIVILEGES ] } TO { ROLE role_name } [, ...]

次の内容は、EXPLAIN プランのクエリにおける行レベルのセキュリティポリシーフィルタを説明する許可を付与する構文です。この権限は、REVOKE ステートメントを使用して取り消すことができます。

GRANT EXPLAIN RLS TO ROLE rolename

次の内容は、クエリの行レベルのセキュリティポリシーをバイパスする許可を付与する構文です。

GRANT IGNORE RLS TO ROLE rolename

次の内容は、特定の行レベルのセキュリティポリシーに許可を付与する構文です。

GRANT SELECT ON [ TABLE ] table_name [, ...] TO RLS POLICY policy_name [, ...]
GRANT EXECUTE ON FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] TO RLS POLICY policy_name [, ...]

パラメータ

SELECT

SELECT ステートメントを使用して、テーブルまたはビューからデータを選択する権限を付与します。UPDATE 操作または DELETE 操作で既存の列値を参照するには、SELECT 権限も必要です。

INSERT

INSERT ステートメントまたは COPY ステートメントを使用して、データをテーブルにロードする権限を付与します。

UPDATE

UPDATE ステートメントを使用して、テーブルの列を更新する権限を付与します UPDATE 操作には、SELECT 権限も必要です。これは、更新する行、または列の新しい値を計算する行を決定するには、テーブルの列を参照する必要があるためです。

DELETE

テーブルからデータ行を削除する権限を付与します DELETE 操作には、SELECT 権限も必要です。これは、削除する行を決定するには、テーブルの列を参照する必要があるためです。

REFERENCES

外部キーの制約を作成する権限を付与します。参照されるテーブルと参照するテーブルの両方で、この権限を付与する必要があります。そうしないと、ユーザーは制約を作成できません。

ALL [ PRIVILEGES ]

指定したユーザーまたはユーザーグループに、すべての使用できる権限を 1 度で付与します。PRIVILEGES キーワードはオプションです。

GRANT ALL ON SCHEMA は、外部スキーマに対する CREATE 権限を付与しません。

Lake Formation で有効になっている AWS Glue Data Catalog のテーブルに対しては、ALL 権限を付与することができます。この場合、個々の権限 (SELECT、ALTER など) は、データカタログに記録されます。

ALTER

Lake Formation で有効になっている AWS Glue Data Catalog 内のテーブルを変更する権限を付与します。この権限は、Lake Formation を使用する場合にのみ適用されます。

DROP

テーブルを削除する権限を付与します。この権限は、Amazon Redshift、および Lake Formation が有効になっている AWS Glue Data Catalog に対し適用されます。

ASSUMEROLE

指定されたロールを持つユーザーおよびグループに対し COPY、UNLOAD、EXTERNAL FUNCTION、および CREATE MODEL コマンドを実行する権限を付与します。指定されたコマンドを実行すると、ユーザーまたはグループがそのロールを引き受けます。ASSUMEROLE 権限の使用を開始する際は、「ASSUMEROLE 権限を付与するための使用上の注意事項 」を参照してください。

ON [ TABLE ] table_name

テーブルまたはビューに、指定した権限を付与します。TABLE キーワードはオプションです。1 つのステートメントで、複数のテーブルとビューを列挙できます。

ON ALL TABLES IN SCHEMA schema_name

参照されたスキーマ内のすべてのテーブルおよびビューに指定された権限を付与します。

( column_name [,...] ) ON TABLE table_name

Amazon Redshift テーブルまたはビューの指定された列で、指定された権限をユーザー、グループ、または PUBLIC に付与します。

(column_list) ON EXTERNAL TABLE schema_name.table_name

参照されるスキーマの指定された Lake Formation テーブルの IAM ロールに、指定されたアクセス許可を付与します。

ON EXTERNAL TABLE schema_name.table_name

参照されるスキーマの指定された Lake Formation テーブルの IAM ロールに指定された権限を付与します。

ON EXTERNAL SCHEMA schema_name

参照されるスキーマの IAM ロールに指定された権限を付与します。

ON iam_role

IAM ロールに指定された権限を付与します。

TO username

権限を付与されるユーザーを示します。

TO IAM_ROLE iam_role

権限を付与される IAM ロールを示します。

WITH GRANT OPTION

権限を付与されるユーザーが、他のユーザーにも同じ権限を付与できることを示します。WITH GRANT OPTION をグループや PUBLIC に付与することはできません。

ROLE role_name

ロールに権限を付与します。

GROUP group_name

権限をユーザーグループに付与します。

PUBLIC

指定した権限を、後で作成されるユーザーを含め、すべてのユーザーに付与します。PUBLIC は、常にすべてのユーザーを含むグループを表します。各ユーザーの権限には、PUBLIC に付与された権限、ユーザーが属するグループに付与された権限、およびそのユーザーに付与された権限のすべてが含まれます。

PUBLIC を Lake Formation EXTERNAL TABLE に付与すると、Lake Formation の everyone グループに権限が付与されます。

CREATE

データベースオブジェクトに応じて、次の権限をユーザーまたはユーザーグループに付与します。

  • データベースの場合、CREATE はデータベース内にスキーマを作成することをユーザーに許可します。

  • スキーマの場合、CREATE はスキーマ内にオブジェクトを作成することをユーザーに許可します。オブジェクトの名前を変更するには、CREATE 権限と、名前を変更するオブジェクトを所有している必要があります。

  • CREATE ON SCHEMA は、Amazon Redshift Spectrum 用の外部スキーマではサポートされていません。外部スキーマの外部テーブルの使用を許可するには、アクセスする必要のあるユーザーに USAGE ON SCHEMA を付与します。外部スキーマの所有者またはスーパーユーザーのみが外部スキーマ内に外部テーブルを作成できます。外部スキーマの所有者を移行するには、「ALTER SCHEMA」を使用して所有者を変更します。

TEMPORARY | TEMP

指定したデータベースに一時テーブルを作成する権限を付与します。Amazon Redshift Spectrum クエリを実行するには、データベースユーザーがデータベースに一時テーブルを作成するアクセス権限を持っている必要があります。

注記

デフォルトでは、PUBLIC グループの自動メンバーシップにより、一時テーブルを作成する権限がユーザーに付与されます。一時テーブルを作成するユーザーに対する権限を削除するには、PUBLIC グループから TEMP 権限を取り消します。次に、一時テーブルを作成する権限を、特定のユーザーまたはユーザーグループに明示的に付与します。

ON DATABASE db_name

データベースに対する指定された権限を付与します。

USAGE

特定のスキーマに対して USAGE 権限を付与します。これによって、そのスキーマ内のオブジェクトにユーザーがアクセスできるようになります。ローカルの Amazon Redshift スキーマでは、これらのオブジェクトに対する特定のアクションを個別に許可する必要があります (例: テーブルに対する SELECT または UPDATE 権限)。デフォルトでは、すべてのユーザーは PUBLIC スキーマに対して、CREATE 権限と USAGE 権限を所有しています。

ON SCHEMA 構文を使用して外部スキーマに USAGE を許可する場合は、外部スキーマのオブジェクトに対して個別にアクションを許可する必要はありません。対応するカタログアクセス許可は、外部スキーマオブジェクトに対する詳細なアクセス許可を制御します。

ON SCHEMA schema_name

スキーマに対する指定された権限を付与します。

GRANT CREATE ON SCHEMA および GRANT ALL ON SCHEMA の CREATE 権限は、Amazon Redshift Spectrum 外部スキーマではサポートされていません。外部スキーマの外部テーブルの使用を許可するには、アクセスする必要のあるユーザーに USAGE ON SCHEMA を付与します。外部スキーマの所有者またはスーパーユーザーのみが外部スキーマ内に外部テーブルを作成できます。外部スキーマの所有者を移行するには、「ALTER SCHEMA」を使用して所有者を変更します。

EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_name

参照されたスキーマ内のすべての関数に対する指定された権限を付与します。

Amazon Redshift は、pg_catalog 名前空間で定義された pg_proc 組み込みエントリの GRANT または REVOKE ステートメントをサポートしていません。

EXECUTE ON PROCEDURE procedure_name

特定のストアドプロシージャに対する EXECUTE 権限を付与します。ストアドプロシージャ名は重複する場合があるため、プロシージャの引数リストを含める必要があります。詳細については、「ストアドプロシージャの名前付け」を参照してください。

EXECUTE ON ALL PROCEDURES IN SCHEMA schema_name

参照されたスキーマ内のすべてのストアドプロシージャに対する指定された権限を付与します。

USAGE ON LANGUAGE language_name

言語に対する USAGE 権限を付与します。

USAGE ON LANGUAGE 権限は、CREATE FUNCTIONコマンドを実行してユーザー定義関数 (UDF) を作成するために必要です。詳細については、「UDF のセキュリティおよび権限」を参照してください。

USAGE ON LANGUAGE は、CREATE PROCEDUREコマンドを実行してストアドプロシージャを作成するために必要です。詳細については、「ストアドプロシージャのセキュリティおよび権限 」を参照してください。

Python UDF の場合、plpythonuを使用します。SQL UDF の場合、sqlを使用します。ストアドプロシージャの場合、plpgsqlを使用します。

{ ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...] の場合、

権限が付与される SQL コマンドを指定します。ALL を指定することで、COPY、UNLOAD、EXTERNAL FUNCTION、または CREATE MODEL ステートメントに対する権限を付与できます。この句は、ASSUMEROLE 権限の付与にのみ適用されます。

ALTER

データ共有でオブジェクトを追加または削除したり、プロパティ PUBLICACCESSIBLE を設定したりするために、ALTER 権限をユーザーに付与します。詳細については、「ALTER DATASHARE」を参照してください。

SHARE

データコンシューマーをデータ共有に追加するための権限をユーザーとユーザーグループに付与します。この権限は、特定のコンシューマ (アカウントまたは名前空間) がクラスターからデータ共有にアクセスできるようにするために必要です。コンシューマーは、グローバル一意識別子 (GUID) で指定されたものと同じか異なるクラスター名前空間を持つ、同じあるいは異なる AWS アカウントに置くことができます。

ON DATASHARE datashare_name

参照されるデータ共有に対して指定された権限を付与します。コンシューマーアクセスコントロールの粒度については、「Amazon Redshift の異なるレベルでのデータ共有」を参照してください。

USAGE

同じアカウント内のコンシューマーアカウントまたは名前空間に USAGE が付与されると、アカウント内の特定のコンシューマアカウントまたは名前空間は、読み込み専用でデータ共有およびデータ共有のオブジェクトにアクセスできます。

TO NAMESPACE 'clusternamespace GUID'

コンシューマーがデータ共有に対して指定された権限を受け取ることができる同じアカウント内の名前空間を示します。名前空間には 128 ビットの英数字 GUID を使用します。

TO ACCOUNT 'accountnumber' [ VIA DATA CATALOG ]

コンシューマーがデータ共有に対して指定された権限を受け取ることができる別のアカウントの数を示します。「VIA DATA CATALOG」を指定すると、データ共有の使用を Lake Formation のアカウントに許可することになります。このパラメータを省略すると、クラスターを所有するアカウントに使用を許可することになります。

ON DATABASE shared_database_name> [, ...]

指定されたデータ共有で作成された指定済みのデータベースに対して指定された使用権原を付与します。

ON SCHEMA shared_schema

指定されたデータ共有で作成された指定済みのスキーマに対して指定された権限を付与します。

モデルを作成する

特定のユーザーまたはユーザーグループに CREATE MODEL 権限を付与します。

ON MODEL model_name

特定のモデルに対する EXECUTE 権限を付与します。

{ role } [, ...]

別のロール、ユーザー、または PUBLIC に付与されるロール。

PUBLIC は、常にすべてのユーザーを含むグループを表します。各ユーザーの権限には、PUBLIC に付与された権限、ユーザーが属するグループに付与された権限、およびそのユーザーに付与された権限のすべてが含まれます。

TO { { user_name [ WITH ADMIN OPTION ] } | role }[, ...]

指定されたロールを、(WITH ADMIN OPTION を使用するか、別のロールを持つ、あるいは PUBLIC である) 指定されたユーザーに付与します。

WITH ADMIN OPTION 句は、ロールが付与されるすべてのユーザーに対し、そのロールに付与されているすべての管理オプションを提供します。

EXPLAIN RLS TO ROLE rolename

EXPLAIN プランのクエリにおける行レベルのセキュリティポリシーフィルタを説明する権限をロールに付与します。

IGNORE RLS TO ROLE rolename

クエリにおける行レベルのセキュリティポリシーをバイパスする権限をロールに付与します。