GRANT
ユーザーまたはユーザーグループのアクセス許可を定義します。
アクセス許可には、テーブルとビューのデータの読み取り、データの書き込み、テーブルの作成、テーブルの削除などのアクセスオプションが含まれます。このコマンドを使用して、テーブル、データベース、スキーマ、関数、プロシージャ、言語、または列に対する特定のアクセス許可を付与します。データベースオブジェクトからアクセス許可を削除するには、REVOKE コマンドを使用します。
アクセス許可には、以下のデータ共有プロデューサーのアクセスオプションも含まれます。
-
コンシューマー名前空間とアカウントへのデータ共有のアクセス許可を付与する。
-
データ共有にオブジェクトを追加したり、データ共有からオブジェクトを削除したりすることでデータ共有を変更するアクセス許可を付与する。
-
コンシューマー名前空間をデータ共有に追加または削除することでデータ共有を共有するアクセス許可を付与する。
データ共有コンシューマーのアクセスオプションは次のとおりです。
-
データ共有から作成されたデータベース、またはそのようなデータベースを指す外部スキーマへのフルアクセスをユーザーに付与する。
-
ローカルデータベースオブジェクトと同様に、データ共有から作成されたデータベースに対するオブジェクトレベルのアクセス許可をユーザーに付与する。このレベルのアクセス許可を付与するには、データ共有からデータベースを作成するときに WITH PERMISSIONS 句を使用する必要があります。詳細については、「CREATE DATABASE」を参照してください。
データ共有のアクセス許可については、「クラスター内およびクラスター間のデータ共有」を参照してください。
また、ロールを付与してデータベースアクセス許可を管理したり、データに関連してユーザーが実行できる操作を制御したりすることもできます。ロールを定義し、ユーザーにロールを割り当てることで、ユーザーを CREATE TABLE コマンドと INSERT コマンドのみに制限するなど、ユーザーが実行できるアクションを制限できます。CREATE ROLE コマンドの詳細については、「CREATE ROLE」を参照してください。Amazon Redshift にはシステム定義のロールがいくつかあり、これらを使用してユーザーに特定のアクセス許可を付与することもできます。詳細については、「Amazon Redshift でのシステム定義のロール」を参照してください。
ON SCHEMA 構文を使用するデータベースユーザーおよびユーザーグループには、外部スキーマに対する USAGE 権限の GRANT (付与) または REVOKE (取り消し) のみを行うことができます。AWS Lake Formation で ON EXTERNAL SCHEMA を使用する場合は、AWS Identity and Access Management(IAM) ロールに対して、アクセス許可の GRANT (付与) および REVOKE (取り消し) のみを行うことができます。アクセス許可のリストについては、構文を参照してください。
ストアドプロシージャの場合、付与できるアクセス許可は EXCUTE のみです。
トランザクションブロック (BEGIN ... END) 内で GRANT を (外部リソースで) 実行することはできません。トランザクションの詳細については、「直列化可能分離」を参照してください。
データベースに対してどのアクセス許可がユーザーに付与されているかを確認するには、HAS_DATABASE_PRIVILEGE を使用します。スキーマに対してどのアクセス許可がユーザーに付与されているかを確認するには、HAS_SCHEMA_PRIVILEGE を使用します。テーブルに対してどのアクセス許可がユーザーに付与されているかを確認するには、HAS_TABLE_PRIVILEGE を使用します。
構文
GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | ALTER | TRUNCATE } [,...] | 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 | ALTER } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE | ALTER } [,...] | 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 | ROLE role_name | 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 ]
プロデューサー側のデータ共有のアクセス許可
以下は、GRANT を使用してユーザーまたはロールに ALTER または SHARE アクセス許可を付与するための構文です。ユーザーは ALTER アクセス許可でデータ共有を変更したり、SHARE アクセス許可でコンシューマーに使用を許可したりできます。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 DATASHARE salesshare TO ACCOUNT '123456789012' VIA DATA CATALOG;
コンシューマー側のデータ共有のアクセス許可
以下は、データ共有から作成された特定のデータベースまたはスキーマに対する GRANT データ共有の使用許可の構文です。
データ共有から作成されたデータベースにコンシューマーがアクセスするために必要なその他のアクセス許可は、データ共有からデータベースを作成するために使用された CREATE DATABASE コマンドが WITH PERMISSIONS 句を使用したかどうかによって異なります。CREATE DATABASE コマンドと WITH PERMISSIONS 句の詳細については、「CREATE DATABASE」を参照してください。
WITH PERMISSIONS 句を使用せずに作成されたデータベース
WITH PERMISSIONS 句を使用せずにデータ共有から作成されたデータベースに USAGE を付与する場合、共有データベースのオブジェクトに対して個別にアクセス許可を付与する必要はありません。WITH PERMISSIONS 句を使用せずにデータ共有から作成されたデータベースに対して使用を許可されたエンティティは、自動的にデータベース内のすべてのオブジェクトにアクセスできます。
WITH PERMISSIONS 句を使用して作成されたデータベース
WITH PERMISSIONS 句を使用してデータ共有から共有データベースを作成したデータベースに USAGE を付与する場合、コンシューマ側の ID には、共有データベース内のデータベースオブジェクトにアクセスするために、そのデータベースオブジェクトに関連するアクセス許可が付与されている必要があります。ローカルデータベースオブジェクトに対するアクセス許可を付与する場合と同様です。データ共有から作成されたデータベース内のオブジェクトにアクセス許可を付与するには、3 つの部分からなる構文 database_name.schema_name.object_name
を使用します。共有データベース内の共有スキーマを指す外部スキーマのオブジェクトにアクセス許可を付与するには、2 つの部分からなる構文 schema_name.object_name
を使用します。
GRANT USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema} TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
スコープ設定アクセス許可を使用すると、データベースまたはスキーマ内の特定タイプのすべてのオブジェクトに対するアクセス許可をユーザーまたはロールに付与できます。スコープ設定アクセス許可を持つユーザーやロールは、データベースまたはスキーマ内の現在および将来のすべてのオブジェクトに対して指定されたアクセス許可を持ちます。
データベースレベルのスコープ付きアクセス許可の範囲は、SVV_DATABASE_PRIVILEGES で確認できます。スキーマレベルのスコープ付きアクセス許可の範囲は、SVV_SCHEMA_PRIVILEGES で確認できます。
以下は、ユーザーとロールにスコープ付きアクセス許可を付与するための構文です。スコープ設定アクセス許可の詳細については、「スコープ設定アクセス許可」を参照してください。
GRANT { CREATE | USAGE | ALTER } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE db_name TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...] GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } } FOR TABLES IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name} [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } FOR FUNCTIONS IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name | } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } FOR PROCEDURES IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name | } [, ...] GRANT USAGE FOR LANGUAGES IN {DATABASE db_name} TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]
スコープ設定アクセス許可では、関数とプロシージャのアクセス許可が区別されないことに注意してください。例えば、次のステートメントは、スキーマ Sales_schema
内の関数とプロシージャの両方に対する EXECUTE
アクセス許可を bob
に付与します。
GRANT EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema TO bob;
以下は、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 | ACCESS CATALOG | 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 [, ...]
パラメータ
- SELECT
-
SELECT ステートメントを使用して、テーブルまたはビューからデータを選択するアクセス許可を付与します。UPDATE 操作または DELETE 操作で既存の列値を参照するには、SELECT アクセス許可も必要です。
- INSERT
-
INSERT ステートメントまたは COPY ステートメントを使用して、データをテーブルにロードするアクセス許可を付与します。
- UPDATE
-
UPDATE ステートメントを使用して、テーブル列を更新するアクセス許可を付与します。UPDATE 操作には SELECT アクセス許可も必要です。これは、更新する行、または列の新しい値を計算する行を決定するには、テーブルの列を参照する必要があるためです。
- DELETE
-
テーブルからデータ行を削除するアクセス許可を付与します。DELETE 操作には、SELECT 権限も必要です。これは、削除する行を決定するには、テーブルの列を参照する必要があるためです。
- DROP
-
テーブルを削除するアクセス許可を付与します。このアクセス許可は、Amazon Redshift、および Lake Formation が有効になっている AWS Glue Data Catalog に対して適用されます。
- REFERENCES
-
外部キー制約を作成するアクセス許可を付与します。参照されるテーブルと参照するテーブルの両方について、このアクセス許可を付与する必要があります。そうしないと、ユーザーは制約を作成できません。
- ALTER
-
データベースオブジェクトに応じて、次のアクセス許可をユーザーまたはユーザーグループに付与します。
-
テーブルの場合、ALTER はテーブルまたはビューを変更するアクセス許可を付与します。詳細については、「ALTER TABLE」を参照してください。
-
データベースの場合、ALTER はデータベースを変更するアクセス許可を付与します。詳細については、「ALTER DATABASE」を参照してください。
-
スキーマの場合、ALTER はスキーマを変更するアクセス許可を付与します。詳細については、「ALTER SCHEMA」を参照してください。
-
外部テーブルの場合、ALTER は Lake Formation で有効になっている AWS Glue Data Catalog 内のテーブルを変更するアクセス許可を付与します。この許可は、Lake Formation を使用する場合にのみ適用されます。
-
- TRUNCATE
-
テーブルを切り捨てるアクセス許可を付与します。このアクセス許可がない場合、テーブルの所有者またはスーパーユーザーだけがテーブルを切り捨てることができます。TRUNCATE コマンドの詳細については、「TRUNCATE」を参照してください。
- ALL [ PRIVILEGES ]
-
指定したユーザーまたはロールに、使用可能なすべてのアクセス許可を一度に付与します。PRIVILEGES キーワードはオプションです。
GRANT ALL ON SCHEMA では、外部スキーマに対する CREATE アクセス許可は付与されません。
Lake Formation で有効になっている AWS Glue Data Catalog のテーブルに対して、ALL アクセス許可を付与することができます。この場合、個々のアクセス許可 (SELECT、ALTER など) は、データカタログに記録されます。
注記
Amazon Redshift は、ルールおよび TRIGGER アクセス許可をサポートしていません。詳細については、「サポートされていない PostgreSQL 機能」を参照してください。
- 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
を使用します。 - FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]
-
アクセス許可が付与される SQL コマンドを指定します。ALL を指定することで、COPY、UNLOAD、EXTERNAL FUNCTION、および CREATE MODEL ステートメントに対するアクセス許可を付与できます。この句は、ASSUMEROLE アクセス許可の付与にのみ適用されます。
- ALTER
データ共有にオブジェクトを追加または削除したり、プロパティ PUBLICACCESSIBLE を設定したりするために、ALTER アクセス許可をユーザーに付与します。詳細については、「ALTER DATASHARE」を参照してください。
- SHARE
データコンシューマーをデータ共有に追加するためのアクセス許可をユーザーとユーザーグループに付与します。このアクセス許可は、特定のコンシューマー (アカウントまたは名前空間) がクラスターからデータ共有にアクセスできるようにするために必要です。コンシューマーは、グローバル一意識別子 (GUID) で指定されたものと同じか異なるクラスター名前空間を持つ、同じあるいは異なる AWS アカウントに置くことができます。
-
参照されるデータ共有に対する指定されたアクセス許可を付与します。コンシューマーアクセスコントロールの粒度については、「Amazon Redshift の異なるレベルでのデータ共有」を参照してください。
- USAGE
同じアカウント内のコンシューマーアカウントまたは名前空間に USAGE が付与されると、アカウント内の特定のコンシューマアカウントまたは名前空間は、読み込み専用でデータ共有およびデータ共有のオブジェクトにアクセスできます。
- TO NAMESPACE 'clusternamespace GUID'
コンシューマーがデータ共有に対する指定されたアクセス許可を受け取ることができる同じアカウント内の名前空間を示します。名前空間には 128 ビットの英数字 GUID を使用します。
- TO ACCOUNT 'accountnumber' [ VIA DATA CATALOG ]
コンシューマーがデータ共有に対する指定されたアクセス許可を受け取ることができる別のアカウントの数を示します。「VIA DATA CATALOG」を指定すると、データ共有の使用を Lake Formation のアカウントに許可することになります。このパラメータを省略すると、クラスターを所有するアカウントに使用を許可することになります。
-
指定されたデータ共有に作成される、指定されたデータベースに対して指定された使用アクセス許可を付与します。
-
指定されたデータ共有に作成される指定されたスキーマに対する指定されたアクセス許可を付与します。
- FOR { SCHEMAS | TABLES | FUNCTIONS | PROCEDURES | LANGUAGES } IN
-
アクセス許可を付与するデータベースオブジェクトを指定します。IN に続くパラメータは、付与されるアクセス許可の範囲を定義します。
- CREATE MODEL
特定のユーザーまたはユーザーグループに CREATE MODEL アクセス許可を付与します。
- ON MODEL model_name
特定のモデルに対する EXECUTE アクセス許可を付与します。
- ACCESS CATALOG
-
ロールがアクセスできるオブジェクトの関連メタデータを表示するアクセス許可を付与します。
- { 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
クエリの行レベルのセキュリティポリシーをバイパスするアクセス許可をロールに付与します。
使用に関する注意事項
GRANT の使用上の注意事項の詳細については、「使用に関する注意事項」を参照してください。
例
GRANT の使用方法の例については、「例」を参照してください。