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) ロールに対する権限の付与と取り消しのみを行うことができます。権限のリストについては、該当する構文を参照してください。

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

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

Syntax

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | 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 ] | 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 ] | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

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

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

次に、指定されたロールを持つユーザーおよびグループに付与される ASSUMEROLE 権限の構文を示します。

GRANT ASSUMEROLE ON { 'iam_role' [, ...] | ALL } TO { username | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD | 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 ] | 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' [, ...]

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

GRANT USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema} TO { username | GROUP group_name | PUBLIC } [, ...]
これは、プレビューリリースにある Amazon Redshift 機械学習の特徴を記載したプレリリースのドキュメントです。ドキュメントと機能はどちらも変更されることがあります。この特徴は、本番環境ではなくテストクラスターでのみ使用することをお勧めします。プレビューの契約および条件については、AWS のサービス条件からベータサービスへの参加を参照してください。

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

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

Parameters

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 データカタログのテーブルに対するすべての権限を付与することができます。この場合、個々の権限 (SELECT、ALTER など) は、データカタログに記録されます。

ALTER

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

DROP

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

ASSUMEROLE

指定されたロールを持つユーザーおよびグループに COPY および UNLOAD コマンドを実行する権限を付与します。指定されたコマンドを実行すると、ユーザーまたはグループがそのロールを引き受けます。

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 に付与することはできません。

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

ON SCHEMA schema_name

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

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

EXECUTE ON FUNCTION function_name

特定の関数に対する EXECUTE 権限を付与します。関数名が重複する場合があるため、関数の引数リストが含まれている必要があります。詳細については、「 」を参照してくださいUDF の命名

EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_name

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

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 を使用します。

FOR { ALL | COPY | UNLOAD | CREATE MODEL } [, ...]

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

ALTER

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

SHARE

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

ON DATASHARE datashare_name

参照されるデータ共有に対して指定された権限を付与します。

USAGE

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

TO NAMESPACE 'clusternamespace GUID'

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

TO ACCOUNT 'accountnumber'

コンシューマがデータ共有に対して指定された権限を受け取ることができる別のアカウントの数を示します。

ON DATABASE shared_database_name> [, ...]

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

ON SCHEMA shared_schema

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

モデルを作成する

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

ON MODEL model_name

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