

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# GRANT
<a name="r_GRANT"></a>

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

アクセス許可には、テーブルとビューのデータの読み取り、データの書き込み、テーブルの作成、テーブルの削除などのアクセスオプションが含まれます。このコマンドを使用して、テーブル、データベース、スキーマ、関数、プロシージャ、言語、または列に対する特定のアクセス許可を付与します。データベースオブジェクトからアクセス許可を削除するには、[REVOKE](r_REVOKE.md) コマンドを使用します。

アクセス許可には、以下のデータ共有プロデューサーのアクセスオプションも含まれます。
+  コンシューマー名前空間とアカウントへのデータ共有のアクセス許可を付与する。
+  データ共有にオブジェクトを追加したり、データ共有からオブジェクトを削除したりすることでデータ共有を変更するアクセス許可を付与する。
+  コンシューマー名前空間をデータ共有に追加または削除することでデータ共有を共有するアクセス許可を付与する。

データ共有コンシューマーのアクセスオプションは次のとおりです。
+ データ共有から作成されたデータベース、またはそのようなデータベースを指す外部スキーマへのフルアクセスをユーザーに付与する。
+ ローカルデータベースオブジェクトと同様に、データ共有から作成されたデータベースに対するオブジェクトレベルのアクセス許可をユーザーに付与する。このレベルのアクセス許可を付与するには、データ共有からデータベースを作成するときに WITH PERMISSIONS 句を使用する必要があります。詳細については、「[CREATE DATABASE](r_CREATE_DATABASE.md)」を参照してください。

データ共有のアクセス許可については、「[データ共有に付与できるアクセス許可](permissions-datashares.md)」を参照してください。

アクセス許可には、次の Amazon Redshift フェデレーティッドアクセス許可カタログも含まれます。
+ ユーザーにテーブルレベルの許可を付与します。
+ テーブル、ビュー、マテリアライズドビューにきめ細かな列レベルのアクセス許可を付与します。
+ ユーザーとロールにスコープ付きアクセス許可を付与します。
+ Amazon Redshift フェデレーティッドアクセス許可カタログに対するデータベースレベルのアクセス許可の付与。

Amazon Redshift フェデレーティッドアクセス許可カタログのアクセス許可の管理の詳細については、「[Amazon Redshift フェデレーティッドアクセス許可カタログでのアクセスコントロールの管理GRANT、REVOKE](federated-permissions-managing-access.md)」を参照してください。Amazon Redshift フェデレーティッドアクセス許可カタログでサポートされている許可/取り消し構文の詳細については、「[GRANT、REVOKE](https://docs.aws.amazon.com/redshift/latest/dg/federated-permissions-managing-access.html#federated-permissions-managing-access-grant-revoke)」を参照してください。

アクセス許可には、AWS IAM アイデンティティセンター フェデレーションユーザーの CONNECT 権限も含まれます。この権限により、管理者は、Amazon Redshift フェデレーティッドアクセス許可が有効になっている各 Amazon Redshift ワークグループまたはクラスターで、きめ細かなアクセス許可を通じてユーザーアクセスを制御できます。Amazon Redshift 管理者は、Amazon Redshift ワークグループに直接接続するためのアクセス権を持つ AWS IAM アイデンティティセンター フェデレーションユーザー (複数可) またはグループ (複数可) を指定し、各ワークグループまたはクラスターでの AWS IAM アイデンティティセンター ユーザーアクセスをきめ細かく制御できます。

また、ロールを付与してデータベースアクセス許可を管理したり、データに関連してユーザーが実行できる操作を制御したりすることもできます。ロールを定義し、ユーザーにロールを割り当てることで、ユーザーを CREATE TABLE コマンドと INSERT コマンドのみに制限するなど、ユーザーが実行できるアクションを制限できます。CREATE ROLE コマンドの詳細については、「[CREATE ROLE](r_CREATE_ROLE.md)」を参照してください。Amazon Redshift にはシステム定義のロールがいくつかあり、これらを使用してユーザーに特定のアクセス許可を付与することもできます。詳細については、「[Amazon Redshift でのシステム定義のロール](r_roles-default.md)」を参照してください。

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

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

トランザクションブロック (BEGIN ... END) 内で GRANT を (外部リソースで) 実行することはできません。トランザクションの詳細については、「[Amazon Redshift の分離レベル](c_serial_isolation.md)」を参照してください。

データベースに対してどのアクセス許可がユーザーに付与されているかを確認するには、[HAS\$1DATABASE\$1PRIVILEGE](r_HAS_DATABASE_PRIVILEGE.md) を使用します。スキーマに対してどのアクセス許可がユーザーに付与されているかを確認するには、[HAS\$1SCHEMA\$1PRIVILEGE](r_HAS_SCHEMA_PRIVILEGE.md) を使用します。テーブルに対してどのアクセス許可がユーザーに付与されているかを確認するには、[HAS\$1TABLE\$1PRIVILEGE](r_HAS_TABLE_PRIVILEGE.md) を使用します。

## 構文
<a name="r_GRANT-synopsis"></a>



```
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 | USAGE | 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 | DROP } [,...] | 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 } [, ...]             

GRANT { { ALTER | DROP} [,...] | ALL [ PRIVILEGES ] }
    ON COPY JOB job_name [,...]
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { { ALTER | DROP | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON TEMPLATE [database_name.][schema_name.]template_name [,...]
    TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
```

### テーブルの列レベルのアクセス許可の付与
<a name="grant-column-level"></a>

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 アクセス許可の付与
<a name="grant-assumerole-permissions"></a>

指定されたロールを持つユーザーおよびグループに付与される ASSUMEROLE アクセス許可の構文を次に示します。ASSUMEROLE 権限の使用を開始する際は、「[ASSUMEROLE アクセス許可を付与するための使用上の注意事項](r_GRANT-usage-notes.md#r_GRANT-usage-notes-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 の統合に関するアクセス許可の付与
<a name="grant-spectrum-integration-with-lf-syntax"></a>

以下に、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 ]
```

### データ共有アクセス許可の付与
<a name="grant-datashare-syntax"></a>

**プロデューサー側のデータ共有のアクセス許可**  
以下は、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](r_CREATE_DATABASE.md)」を参照してください。

**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 } [, ...]
```

### スコープ付きアクセス許可の付与
<a name="grant-scoped-syntax"></a>

スコープ設定アクセス許可を使用すると、データベースまたはスキーマ内の特定タイプのすべてのオブジェクトに対するアクセス許可をユーザーまたはロールに付与できます。スコープ設定アクセス許可を持つユーザーやロールは、データベースまたはスキーマ内の現在および将来のすべてのオブジェクトに対して指定されたアクセス許可を持ちます。

データベースレベルのスコープ付きアクセス許可の範囲は、[SVV\$1DATABASE\$1PRIVILEGES](r_SVV_DATABASE_PRIVILEGES.md) で確認できます。スキーマレベルのスコープ付きアクセス許可の範囲は、[SVV\$1SCHEMA\$1PRIVILEGES](r_SVV_SCHEMA_PRIVILEGES.md) で確認できます。

スコープ設定アクセス許可の詳細については、「[スコープ設定アクセス許可](t_scoped-permissions.md)」を参照してください。

以下は、ユーザーとロールにスコープ付きアクセス許可を付与するための構文です。

```
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | 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 } [, ...]  

GRANT { { CREATE | ALTER | DROP} [,...] | ALL [ PRIVILEGES ] }
FOR COPY JOBS 
IN DATABASE db_name
TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]

GRANT { { ALTER | DROP | USAGE } [,...] | ALL [ PRIVILEGES ] }
FOR TEMPLATES IN
{SCHEMA schema_name [DATABASE db_name ] | 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;
```

### 機械学習アクセス許可の付与
<a name="grant-model-syntax"></a>

以下は、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 } [, ...]
```

### ロールアクセス許可の付与
<a name="grant-roles"></a>

以下に、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 | ACCESS SYSTEM TABLE
    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 |
    IGNORE RLS | EXPLAIN RLS | 
    EXPLAIN MASKING }[, ...]
  }
  | { ALL [ PRIVILEGES ] }
TO ROLE role_name [, ...]
```

### セキュリティポリシーの説明アクセス許可の付与
<a name="grant-row-level-security"></a>

次の内容は、EXPLAIN プランのクエリにおけるセキュリティポリシーフィルタを説明する許可を付与する構文です。可能なセキュリティポリシーには、行レベルのセキュリティポリシーと動的データマスキングポリシーが含まれます。

```
GRANT EXPLAIN { RLS | MASKING } TO ROLE rolename 
```

次の内容は、クエリの行レベルのセキュリティポリシーをバイパスする許可を付与する構文です。この構文は、動的データマスキングポリシーには適用されません。

```
GRANT IGNORE RLS TO ROLE rolename 
```

次の内容は、特定のセキュリティポリシーにルックアップテーブルアクセス許可を付与する構文です。可能なセキュリティポリシーには、行レベルのセキュリティポリシーと動的データマスキングポリシーが含まれます。

```
GRANT SELECT ON [ TABLE ] table_name [, ...]
TO { RLS | MASKING } POLICY policy_name [, ...]
```

### 接続許可の付与
<a name="grant-connection-permissions"></a>

以下は、AWS IAM アイデンティティセンター フェデレーションユーザー (またはグループ) にワークグループ/クラスターに接続するためのアクセス許可を付与するための構文です。

```
GRANT CONNECT [ON WORKGROUP]
TO [USER] <prefix>:<username> | ROLE <prefix>:<rolename> | PUBLIC;
```

## パラメータ
<a name="r_GRANT-parameters"></a>

SELECT   <a name="grant-select"></a>
SELECT ステートメントを使用して、テーブルまたはビューからデータを選択するアクセス許可を付与します。UPDATE 操作または DELETE 操作で既存の列値を参照するには、SELECT アクセス許可も必要です。

INSERT   <a name="grant-insert"></a>
INSERT ステートメントまたは COPY ステートメントを使用して、データをテーブルにロードするアクセス許可を付与します。

UPDATE   <a name="grant-update"></a>
UPDATE ステートメントを使用して、テーブル列を更新するアクセス許可を付与します。UPDATE 操作には SELECT アクセス許可も必要です。これは、更新する行、または列の新しい値を計算する行を決定するには、テーブルの列を参照する必要があるためです。

DELETE  <a name="grant-delete"></a>
テーブルからデータ行を削除するアクセス許可を付与します。DELETE 操作には、SELECT 権限も必要です。これは、削除する行を決定するには、テーブルの列を参照する必要があるためです。

DROP  <a name="grant-drop"></a>
データベースオブジェクトに応じて、次のアクセス許可をユーザーまたはロールに付与します。  
+  テーブルの場合、DROP はテーブルまたはビューを削除するアクセス許可を付与します。詳細については、「[DROP TABLE](r_DROP_TABLE.md)」を参照してください。
+  データベースの場合、DROP はデータベースを削除するアクセス許可を付与します。詳細については、「[DROP DATABASE](r_DROP_DATABASE.md)」を参照してください。
+  スキーマの場合、DROP はスキーマを削除するアクセス許可を付与します。詳細については、「[DROP SCHEMA](r_DROP_SCHEMA.md)」を参照してください。

REFERENCES   <a name="grant-references"></a>
外部キー制約を作成するアクセス許可を付与します。参照されるテーブルと参照するテーブルの両方について、このアクセス許可を付与する必要があります。そうしないと、ユーザーは制約を作成できません。

ALTER  <a name="grant-alter"></a>
データベースオブジェクトに応じて、次のアクセス許可をユーザーまたはユーザーグループに付与します。  
+ テーブルの場合、ALTER はテーブルまたはビューを変更するアクセス許可を付与します。詳細については、「[ALTER TABLE](r_ALTER_TABLE.md)」を参照してください。
+ データベースの場合、ALTER はデータベースを変更するアクセス許可を付与します。詳細については、「[ALTER DATABASE](r_ALTER_DATABASE.md)」を参照してください。
+ スキーマの場合、ALTER はスキーマを変更するアクセス許可を付与します。詳細については、「[ALTER SCHEMA](r_ALTER_SCHEMA.md)」を参照してください。
+ 外部テーブルの場合、ALTER は Lake Formation で有効になっている AWS Glue Data Catalog 内のテーブルを変更するアクセス許可を付与します。この許可は、Lake Formation を使用する場合にのみ適用されます。

TRUNCATE  <a name="grant-truncate"></a>
テーブルを切り捨てるアクセス許可を付与します。このアクセス許可がない場合、テーブルの所有者またはスーパーユーザーだけがテーブルを切り捨てることができます。TRUNCATE コマンドの詳細については、「[TRUNCATE](r_TRUNCATE.md)」を参照してください。

ALL [ PRIVILEGES ]   <a name="grant-all"></a>
指定したユーザーまたはロールに、使用可能なすべてのアクセス許可を一度に付与します。PRIVILEGES キーワードはオプションです。  
GRANT ALL ON SCHEMA では、外部スキーマに対する CREATE アクセス許可は付与されません。  
Lake Formation で有効になっている AWS Glue Data Catalog のテーブルに対して、ALL アクセス許可を付与することができます。この場合、個々のアクセス許可 (SELECT、ALTER など) は、データカタログに記録されます。  
 Amazon Redshift は、ルールおよび TRIGGER アクセス許可をサポートしていません。詳細については、「[サポートされていない PostgreSQL 機能](c_unsupported-postgresql-features.md)」を参照してください。

ASSUMEROLE  <a name="assumerole"></a>
指定したロールを持つユーザー、ロール、またはグループに対し、COPY、UNLOAD、EXTERNAL FUNCTION、および CREATE MODEL コマンドを実行するアクセス許可を付与します。指定したコマンドを実行すると、ユーザー、ロール、またはグループがこのロールを引き受けます。ASSUMEROLE アクセス許可の使用を開始する際は、「[ASSUMEROLE アクセス許可を付与するための使用上の注意事項](r_GRANT-usage-notes.md#r_GRANT-usage-notes-assumerole)」を参照してください。

ON [ TABLE ] *table\$1name*   <a name="grant-on-table"></a>
テーブルまたはビューに対する、指定されたアクセス許可を付与します。TABLE キーワードはオプションです。1 つのステートメントで、複数のテーブルとビューを列挙できます。

ON ALL TABLES IN SCHEMA *schema\$1name*   <a name="grant-all-tables"></a>
参照されるスキーマ内のすべてのテーブルおよびビューに対する、指定されたアクセス許可を付与します。

( *column\$1name* [,...] ) ON TABLE *table\$1name*   <a name="grant-column-level-privileges"></a>
Amazon Redshift テーブルまたはビューの指定された列に対する、指定されたアクセス許可をユーザー、グループ、または PUBLIC に付与します。

(*column\$1list*) ON EXTERNAL TABLE *schema\$1name.table\$1name*   <a name="grant-external-table-column"></a>
参照されるスキーマの Lake Formation テーブルの指定された列について、IAM ロールに、指定されたアクセス許可を付与します。

ON EXTERNAL TABLE *schema\$1name.table\$1name*   <a name="grant-external-table"></a>
参照されるスキーマの指定された Lake Formation テーブルについて、指定されたアクセス許可を IAM ロールに付与します。

ON EXTERNAL SCHEMA *schema\$1name*   <a name="grant-external-schema"></a>
参照されるスキーマについて、指定されたアクセス許可を IAM ロールに付与します。

ON *iam\$1role*   <a name="grant-iam_role"></a>
指定されたアクセス許可を IAM ロールに付与します。

TO *username*   <a name="grant-to"></a>
アクセス許可を受け取るユーザーを示します。

TO IAM\$1ROLE *iam\$1role*   <a name="grant-to-iam-role"></a>
アクセス許可を受け取る IAM ロールを示します。

WITH GRANT OPTION   <a name="grant-with-grant"></a>
アクセス許可を受け取るユーザーが、他のユーザーにも同じアクセス許可を付与できることを示します。WITH GRANT OPTION をグループや PUBLIC に付与することはできません。

ROLE *role\$1name*   <a name="grant-role"></a>
ロールにアクセス許可を付与します。

GROUP *group\$1name*   <a name="grant-group"></a>
ユーザーグループにアクセス許可を付与します。カンマ区切りのリストを使用して、複数のユーザーグループを指定することができます。

PUBLIC   <a name="grant-public"></a>
指定されたアクセス許可を、後で作成されるユーザーを含め、すべてのユーザーに付与します。PUBLIC は、常にすべてのユーザーを含むグループを表します。各ユーザーのアクセス許可は、PUBLIC に付与されたアクセス許可、ユーザーが属するグループに付与されたアクセス許可、およびユーザーに個別に付与されたアクセス許可のすべてで構成されます。  
PUBLIC を Lake Formation EXTERNAL TABLE に付与すると、Lake Formation の *everyone* グループにアクセス許可が付与されます。

CONNECT [ON WORKGROUP] TO \$1 [USER] <prefix>:<username> \$1 ROLE <prefix>:<rolename> \$1 PUBLIC \$1  
ワークグループまたはクラスターを AWS IAM アイデンティティセンター フェデレーションユーザーまたはグループに接続するアクセス許可を付与します。文字列は ID プロバイダーを識別します。PUBLIC に付与されると、アクセス許可は後で作成されたユーザーを含め、すべての AWS IAM アイデンティティセンター フェデレーションユーザーに適用されます。このアクセス許可は、ワークグループまたはクラスターで Amazon Redshift フェデレーティッドアクセス許可が有効になっている場合にのみ適用されます。

CREATE   <a name="grant-create"></a>
データベースオブジェクトに応じて、次のアクセス許可をユーザーまたはユーザーグループに付与します。  
+ データベースの場合、CREATE はデータベース内にスキーマを作成することをユーザーに許可します。
+ スキーマの場合、CREATE はスキーマ内にオブジェクトを作成することをユーザーに許可します。オブジェクトの名前を変更するには、CREATE アクセス許可を持ち、名前を変更するオブジェクトを所有している必要があります。
+ CREATE ON SCHEMA は、Amazon Redshift Spectrum 用の外部スキーマではサポートされていません。外部スキーマの外部テーブルの使用を許可するには、アクセスする必要のあるユーザーに USAGE ON SCHEMA を付与します。外部スキーマの所有者またはスーパーユーザーのみが外部スキーマ内に外部テーブルを作成できます。外部スキーマの所有者を移行するには、「[ALTER SCHEMA](r_ALTER_SCHEMA.md)」を使用して所有者を変更します。

TEMPORARY \$1 TEMP   <a name="grant-temporary"></a>
指定されたデータベースに一時テーブルを作成するアクセス許可を付与します。Amazon Redshift Spectrum クエリを実行するには、データベースユーザーがデータベースに一時テーブルを作成するアクセス権限を持っている必要があります。  
デフォルトでは、PUBLIC グループの自動メンバーシップにより、一時テーブルを作成するアクセス許可がユーザーに付与されます。一時テーブルを作成するアクセス許可をユーザーから削除するには、PUBLIC グループから TEMP アクセス許可を取り消します。次に、一時テーブルを作成する権限を、特定のユーザーまたはユーザーグループに明示的に付与します。

ON DATABASE *db\$1name*   <a name="grant-database"></a>
データベースに対する、指定されたアクセス許可を付与します。

USAGE   <a name="grant-usage"></a>
特定のスキーマに対する USAGE アクセス許可を付与します。これにより、そのスキーマ内のオブジェクトにユーザーがアクセスできるようになります。ローカルの Amazon Redshift スキーマでは、これらのオブジェクトに対する特定のアクションを個別に許可する必要があります (例: テーブルに対する SELECT または UPDATE アクセス許可)。デフォルトでは、PUBLIC スキーマに対して、すべてのユーザーが CREATE および USAGE アクセス許可を持ちます。  
 ON SCHEMA 構文を使用して外部スキーマに USAGE を許可する場合は、外部スキーマのオブジェクトに対して個別にアクションを許可する必要はありません。対応するカタログアクセス許可は、外部スキーマオブジェクトに対する詳細なアクセス許可を制御します。

ON SCHEMA *schema\$1name*   <a name="grant-schema"></a>
スキーマに対する、指定されたアクセス許可を付与します。  
GRANT CREATE ON SCHEMA および GRANT ALL ON SCHEMA の CREATE アクセス許可は、Amazon Redshift Spectrum 外部スキーマではサポートされていません。外部スキーマの外部テーブルの使用を許可するには、アクセスする必要のあるユーザーに USAGE ON SCHEMA を付与します。外部スキーマの所有者またはスーパーユーザーのみが外部スキーマ内に外部テーブルを作成できます。外部スキーマの所有者を移行するには、「[ALTER SCHEMA](r_ALTER_SCHEMA.md)」を使用して所有者を変更します。

EXECUTE ON ALL FUNCTIONS IN SCHEMA *schema\$1name*  <a name="grant-all-functions"></a>
参照されるスキーマ内のすべての関数に対する指定されたアクセス許可を付与します。  
Amazon Redshift は、pg\$1catalog 名前空間で定義された pg\$1proc 組み込みエントリの GRANT または REVOKE ステートメントをサポートしていません。

EXECUTE ON PROCEDURE *procedure\$1name*   <a name="grant-procedure"></a>
特定のストアドプロシージャに対する EXECUTE アクセス許可を付与します。ストアドプロシージャ名は重複する場合があるため、プロシージャの引数リストを含める必要があります。詳細については、「[ストアドプロシージャの名前付け](stored-procedure-naming.md)」を参照してください。

EXECUTE ON ALL PROCEDURES IN SCHEMA *schema\$1name*  <a name="grant-all-procedures"></a>
参照されるスキーマ内のすべてのストアドプロシージャに対する指定されたアクセス許可を付与します。

USAGE ON LANGUAGE *language\$1name*   
言語に対する USAGE アクセス許可を付与します。  
2025 年 11 月 1 日以降、Amazon Redshift は新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。2026 年 7 月 1 日以降、Amazon Redshift は Python UDF をサポートしなくなります。2025 年 11 月 1 日より前に既存の Python UDF を Lambda UDF に移行することをお勧めします。Lambda UDF の作成と使用については、「[スカラー Lambda UDF](udf-creating-a-lambda-sql-udf.md)」を参照してください。既存の Python UDF を Lambda UDF に変換する方法については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。
USAGE ON LANGUAGE アクセス許可は、[CREATE FUNCTION](r_CREATE_FUNCTION.md) コマンドを実行してユーザー定義関数 (UDF) を作成するために必要です。詳細については、「[UDF のセキュリティとアクセス許可](udf-security-and-privileges.md)」を参照してください。  
USAGE ON LANGUAGE は、[CREATE PROCEDURE](r_CREATE_PROCEDURE.md) コマンドを実行してストアドプロシージャを作成するために必要です。詳細については、「[ストアドプロシージャのセキュリティおよび権限](stored-procedure-security-and-privileges.md)」を参照してください。  
Python UDF の場合、`plpythonu`を使用します。SQL UDF の場合、`sql`を使用します。ストアドプロシージャの場合、`plpgsql`を使用します。

ON COPY JOB *job\$1name*  <a name="on-copy-job"></a>
コピージョブに対する、指定されたアクセス許可を付与します。

FOR \$1 ALL \$1 COPY \$1 UNLOAD \$1 EXTERNAL FUNCTION \$1 CREATE MODEL \$1 [, ...]   <a name="grant-for"></a>
アクセス許可が付与される SQL コマンドを指定します。ALL を指定することで、COPY、UNLOAD、EXTERNAL FUNCTION、および CREATE MODEL ステートメントに対するアクセス許可を付与できます。この句は、ASSUMEROLE アクセス許可の付与にのみ適用されます。

ALTER  
データ共有にオブジェクトを追加または削除したり、プロパティ PUBLICACCESSIBLE を設定したりするために、ALTER アクセス許可をユーザーに付与します。詳細については、「[ALTER DATASHARE](r_ALTER_DATASHARE.md)」を参照してください。

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

ON DATASHARE *datashare\$1name*   <a name="grant-datashare"></a>
参照されるデータ共有に対する指定されたアクセス許可を付与します。コンシューマーアクセスコントロールの粒度については、「[Amazon Redshift の異なるレベルでのデータ共有](datashare-overview.md#granularity)」を参照してください。

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

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

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

ON DATABASE *shared\$1database\$1name> [, ...]*   <a name="grant-datashare"></a>
指定されたデータ共有に作成される、指定されたデータベースに対して指定された使用アクセス許可を付与します。

ON SCHEMA* shared\$1schema*   <a name="grant-datashare"></a>
指定されたデータ共有に作成される指定されたスキーマに対する指定されたアクセス許可を付与します。

FOR \$1 SCHEMAS \$1 TABLES \$1 FUNCTIONS \$1 PROCEDURES \$1 LANGUAGES \$1 COPY JOBS\$1 IN   
アクセス許可を付与するデータベースオブジェクトを指定します。IN に続くパラメータは、付与されるアクセス許可の範囲を定義します。

CREATE MODEL  
特定のユーザーまたはユーザーグループに CREATE MODEL アクセス許可を付与します。

ON MODEL *model\$1name*  
特定のモデルに対する EXECUTE アクセス許可を付与します。

ACCESS CATALOG  
ロールがアクセスできるオブジェクトの関連メタデータを表示するアクセス許可を付与します。

\$1 role \$1 [, ...]  
別のロール、ユーザー、または PUBLIC に付与されるロール。  
PUBLIC は、常にすべてのユーザーを含むグループを表します。各ユーザーのアクセス許可は、PUBLIC に付与されたアクセス許可、ユーザーが属するグループに付与されたアクセス許可、およびユーザーに個別に付与されたアクセス許可のすべてで構成されます。

TO \$1 \$1 *user\$1name* [ WITH ADMIN OPTION ] \$1 \$1 role \$1[, ...]  
指定されたロールを、(WITH ADMIN OPTION を使用するか、別のロールを持つ、あるいは PUBLIC である) 指定されたユーザーに付与します。  
WITH ADMIN OPTION 句は、ロールが付与されるすべてのユーザーに対し、そのロールに付与されているすべての管理オプションを提供します。

EXPLAIN \$1 RLS \$1 MASKING \$1 TO ROLE *rolename*  
EXPLAIN プランにおけるクエリのセキュリティポリシーフィルターを説明するアクセス許可をロールに付与します。RLS は、行レベルのセキュリティポリシーフィルターを説明するアクセス許可を付与します。MASKING は、動的データマスキングポリシーフィルターを説明するアクセス許可を付与します。

IGNORE RLS TO ROLE *rolename*   
クエリの行レベルのセキュリティポリシーをバイパスするアクセス許可をロールに付与します。

TO \$1 RLS \$1 MASKING \$1 POLICY *policy\$1name*  
アクセス許可を受け取るセキュリティポリシーを示します。TO RLS POLICY は、行レベルのセキュリティポリシーを示します。TO MASKING POLICY は、動的データマスキングポリシーを示します。

## 使用に関する注意事項
<a name="r_GRANT-usage-notes-link"></a>

GRANT の使用上の注意事項の詳細については、「[使用に関する注意事項](r_GRANT-usage-notes.md)」を参照してください。

## 例
<a name="r_GRANT-examples-link"></a>

GRANT の使用方法の例については、「[例](r_GRANT-examples.md)」を参照してください。