

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Lake Formation 許可のリファレンス
<a name="lf-permissions-reference"></a>

 AWS Lake Formation オペレーションを実行するには、プリンシパルに Lake Formation アクセス許可と AWS Identity and Access Management (IAM) アクセス許可の両方が必要です。IAM 許可は通常、「[Lake Formation 許可の概要](lf-permissions-overview.md)」で説明したように、粗粒度のアクセス制御ポリシーを使用して付与します。Lake Formation のアクセス許可は、 コンソール、 API、または AWS Command Line Interface () を使用して付与できますAWS CLI。

Lake Formation 許可を付与または取り消す方法を学ぶには、「[データカタログリソースに対するアクセス許可の付与](granting-catalog-permissions.md)」および「[データロケーション許可の付与](granting-location-permissions.md)」を参照してください。

**注記**  
このセクションの例は、同じ AWS アカウント内のプリンシパルに許可を付与するを説明するものです。クロスアカウント付与の例については、「[Lake Formation でのクロスアカウントデータ共有](cross-account-permissions.md)」を参照してください。

## リソースタイプ別の Lake Formation 許可
<a name="lf-resource-permissions-summary"></a>

各リソースで利用できる有効な Lake Formation 許可は次のとおりです。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/lf-permissions-reference.html)

**Topics**
+ [リソースタイプ別の Lake Formation 許可](#lf-resource-permissions-summary)
+ [Lake Formation の許可と取り消し AWS CLI コマンド](#perm-command-format)
+ [Lake Formation 許可](#lf-permissions)

## Lake Formation の許可と取り消し AWS CLI コマンド
<a name="perm-command-format"></a>

このセクションの各アクセス許可の説明には、 AWS CLI コマンドを使用してアクセス許可を付与する例が含まれています。Lake Formation コマンド**grant-permissions**と **revoke-permissions** AWS CLI コマンドの概要を次に示します。

```
grant-permissions
[--catalog-id <value>]
--principal <value>
--resource <value>
--permissions <value>
[--permissions-with-grant-option <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
```

```
revoke-permissions
[--catalog-id <value>]
--principal <value>
--resource <value>
--permissions <value>
[--permissions-with-grant-option <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
```

これらのコマンドの詳しい説明については、「AWS CLI コマンドリファレンス」の「[grant-permissions](https://docs.aws.amazon.com/cli/latest/reference/lakeformation/grant-permissions.html)」および「[revoke-permissions](https://docs.aws.amazon.com/cli/latest/reference/lakeformation/revoke-permissions.html)」を参照してください。このセクションは、`--principal` オプションに関する追加の情報を提供します。

`--principal` オプションの値は、以下のいずれかになります。
+ (IAM) ユーザーまたはロールの Amazon リソースネーム AWS Identity and Access Management (ARN)
+ Microsoft アクティブディレクトリフェデレーションサービス (AD FS) などの SAML プロバイダー経由で認証するユーザーまたはグループの ARN
+ Amazon Quick ユーザーまたはグループの ARN
+ クロスアカウントアクセス許可、 AWS アカウント ID、組織 ID、または組織単位 ID の場合
+ IAM アイデンティティセンターユーザーまたはグループの場合、IAM アイデンティティセンターユーザーユーザーまたはグループの ARN。

以下は、すべての `--principal` タイプの構文と例です。

**プリンシパルが IAM ユーザー**  
構文:  

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/<user-name>
```
例:  

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1
```

**プリンシパルが IAM ロール**  
構文:  

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:role/<role-name>
```
例:  

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:role/workflowrole
```

**プリンシパルが SAML プロバイダー経由で認証するユーザー**  
構文:  

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:saml-provider/<SAMLproviderName>:user/<user-name>
```
例:  

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:saml-provider/idp1:user/datalake_user1
```

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:saml-provider/AthenaLakeFormationOkta:user/athena-user@example.com
```

**プリンシパルが SAML プロバイダー経由で認証するグループ**  
構文:  

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:saml-provider/<SAMLproviderName>:group/<group-name> 
```
例:  

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:saml-provider/idp1:group/data-scientists
```

```
--principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:saml-provider/AthenaLakeFormationOkta:group/my-group
```

**プリンシパルは Amazon Quick Enterprise Edition ユーザーです**  
構文:  

```
--principal DataLakePrincipalIdentifier=arn:aws:quicksight:<region>:<account-id>:user/<namespace>/<user-name>
```
*<namespace>* には `default` を指定する必要があります。
例:  

```
--principal DataLakePrincipalIdentifier=arn:aws:quicksight:us-east-1:111122223333:user/default/bi_user1
```

**プリンシパルは Amazon Quick Enterprise Edition グループです**  
構文:  

```
--principal DataLakePrincipalIdentifier=arn:aws:quicksight:<region>:<account-id>:group/<namespace>/<group-name> 
```
*<namespace>* には `default` を指定する必要があります。
例:  

```
--principal DataLakePrincipalIdentifier=arn:aws:quicksight:us-east-1:111122223333:group/default/data_scientists
```

**プリンシパルは AWS アカウントです**  
構文:  

```
--principal DataLakePrincipalIdentifier=<account-id>
```
例:  

```
--principal DataLakePrincipalIdentifier=111122223333
```

**プリンシパルが組織**  
構文:  

```
--principal DataLakePrincipalIdentifier=arn:aws:organizations::<account-id>:organization/<organization-id>
```
例:  

```
--principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:organization/o-abcdefghijkl
```

**プリンシパルが組織単位**  
構文:  

```
--principal DataLakePrincipalIdentifier=arn:aws:organizations::<account-id>:ou/<organization-id>/<organizational-unit-id>
```
例:  

```
--principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:ou/o-abcdefghijkl/ou-ab00-cdefghij
```

**プリンシパルが IAM アイデンティティセンターの ID ユーザーまたはグループ**  
例: ユーザー  

```
--principal DataLakePrincipalIdentifier=arn:aws:identitystore:::user/<UserID>
```
例: グループ  

```
--principal DataLakePrincipalIdentifier=arn:aws:identitystore:::group/<GroupID>
```

**プリンシパルが IAM グループ - `IAMAllowedPrincipals`**  
Lake Formation は、データカタログ内のすべてのデータベースとテーブルに対する `Super` アクセス許可を、デフォルトで `IAMAllowedPrincipals` というグループに設定します。このグループアクセス許可がデータベースまたはテーブルに存在する場合、アカウント内のすべてのプリンシパルが、 AWS Glueの IAM プリンシパルポリシーを介してリソースにアクセスできるようになります。これにより、以前に AWS Glueの IAM ポリシーで保護されていたデータカタログリソースを Lake Formation アクセス許可で保護し始めるときに、下位互換性が提供されます。  
Lake Formation を使用してデータカタログリソースのアクセス許可を管理する場合、Lake Formation アクセス許可を機能させるには、まずリソースに設定されている `IAMAllowedPrincipals` アクセス許可を取り消すか、プリンシパルとリソースをハイブリッドアクセスモードにオプトインする必要があります。  
例:  

```
--principal DataLakePrincipalIdentifier=IAM_Allowed_Principals
```

**プリンシパルが IAM グループ - `ALLIAMPrincipals`**  
データカタログリソースへのアクセス許可を `ALLIAMPrincipals` グループに付与すると、アカウント内のすべてのプリンシパルが、Lake Formation アクセス許可と IAM アクセス許可を使用してデータカタログリソースにアクセスできるようになります。  
例:  

```
--principal DataLakePrincipalIdentifier=123456789012:IAMPrincipals
```

## Lake Formation 許可
<a name="lf-permissions"></a>

このセクションでは、プリンシパルに付与できる Lake Formation 許可を一覧表示します。

### `ALTER`
<a name="perm-alter"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| ALTER | DATABASE | glue:UpdateDatabase  | 
| ALTER | TABLE | glue:UpdateTable | 
| ALTER | LF-Tag | lakeformation:UpdateLFTag | 

この許可を持つプリンシパルは、Data Catalog 内のデータベースまたはテーブルのメタデータを変更できます。テーブルの場合は、列スキーマを変更し、列パラメータを追加することができます。メタデータテーブルがポイントする基盤となるデータの列を変更することはできません。

変更されるプロパティが登録済みの Amazon Simple Storage Service (Amazon S3) ロケーションである場合は、プリンシパルが新しいロケーションに対するデータロケーション許可を持っている必要があります。

**Example**  
次の例では、`retail` AWS アカウント 1111-2222-3333 のデータベース`datalake_user1`のユーザーに アクセス`ALTER`許可を付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ALTER" --resource '{ "Database": {"Name":"retail"}}'
```

**Example**  
以下の例は、データベース `retail` にあるテーブル `inventory` に対する `ALTER` をユーザー `datalake_user1` に付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ALTER" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
```

### `CREATE_DATABASE`
<a name="perm-create-database"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| CREATE\$1DATABASE | Data Catalog | glue:CreateDatabase | 

この許可を持つプリンシパルは、Data Catalog にメタデータデータベースまたはリソースリンクを作成できます。プリンシパルは、データベースにテーブルを作成することもできます。

**Example**  
次の例では`CREATE_DATABASE`、 AWS アカウント 1111-2222-3333 `datalake_user1`の ユーザーに を付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_DATABASE" --resource '{ "Catalog": {}}'
```

プリンシパルが Data Catalog にデータベースを作成するときに、基盤となるデータに対する許可は付与されません。以下の追加のメタデータ許可が、これらの許可を他のユーザーに付与する能力と共に付与されます。
+ データベース内での `CREATE_TABLE`
+ データベースの `ALTER`
+ データベースの `DROP`

プリンシパルは、データベースを作成するときにオプションで Amazon S3 ロケーションを指定できます。プリンシパルがデータロケーション許可を持っているかどうかに応じて、`CREATE_DATABASE` 許可ではデータベースを作成できない場合があります。以下の 3 つのユースケースを念頭に置いておくことが重要です。


| データベースの作成ユースケース | 必要となる許可 | 
| --- | --- | 
| ロケーションプロパティが指定されていない。 | CREATE\$1DATABASE で十分です。 | 
| ロケーションプロパティが指定されており、ロケーションが Lake Formation によって管理されていない (登録されていない)。 | CREATE\$1DATABASE で十分です。 | 
| ロケーションプロパティが指定されており、ロケーションが Lake Formation によって管理されている (登録されている)。 | CREATE\$1DATABASE に加えて、指定されたロケーションに対するデータロケーション許可が必要です。 | 

### `CREATE_TABLE`
<a name="perm-create-table"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| CREATE\$1TABLE | DATABASE | glue:CreateTable  | 

この許可を持つプリンシパルは、指定したデータベース内の Data Catalog にメタデータテーブルまたはリソースリンクを作成できます。

**Example**  
次の例では、 AWS アカウント 1111-2222-3333 の`retail`データベースにテーブルを作成する`datalake_user1`アクセス許可をユーザーに付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 
 --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
```

プリンシパルが Data Catalog にテーブルを作成すると、そのテーブルに対するすべての Lake Formation 許可が、これらの許可を他のユーザーに付与する能力と共にプリンシパルに付与されます。

**クロスアカウント付与**  
データベース所有者アカウントが受領者アカウントに `CREATE_TABLE` を付与し、受領者アカウントのユーザーが所有者アカウントのデータベースにテーブルを正常に作成する場合、以下のルールが適用されます。
+ 受領者アカウントのユーザーとデータレイク管理者には、このテーブルに対するすべての Lake Formation 許可があり、テーブルに対する許可をアカウント内の他のプリンシパルに付与することができます。所有者アカウントまたはその他のアカウントのプリンシパルに許可を付与することはできません。
+ 所有者アカウントのデータレイク管理者は、テーブルに対する許可をアカウント内の他のプリンシパルに付与できます。

**データロケーション許可**  
Amazon S3 ロケーションをポイントするテーブルの作成を試みるときは、データロケーション許可を持っているかどうかに応じて、`CREATE_TABLE` 許可がテーブルの作成に不十分である場合があります。以下の 3 つのユースケースを念頭に置いておくことが重要です。


| テーブルの作成ユースケース | 必要となる許可 | 
| --- | --- | 
| 指定されたロケーションが Lake Formation によって管理されていない (登録されていない)。 | CREATE\$1TABLE で十分です。 | 
| 指定されたロケーションが Lake Formation によって管理されて (登録されて) おり、それが含まれるデータベースにロケーションプロパティがないか、テーブルロケーションの Amazon S3 プレフィックスではないロケーションプロパティがある。 | CREATE\$1TABLE に加えて、指定されたロケーションに対するデータロケーション許可が必要です。 | 
| 指定されたロケーションが Lake Formation によって管理されて (登録されて) おり、それが含まれるデータベースに、登録済みで、かつテーブルロケーションの Amazon S3 プレフィックスであるロケーションをポイントするロケーションプロパティがある。 | CREATE\$1TABLE で十分です。 | 

### `DATA_LOCATION_ACCESS`
<a name="perm-location"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| DATA\$1LOCATION\$1ACCESS | Amazon S3 ロケーション | (このロケーションに対する Amazon S3 許可。これは、ロケーションの登録に使用されたロールによって指定されている必要があります。) | 

これが唯一のデータロケーション許可です。この許可を持つプリンシパルは、指定された Amazon S3 ロケーションをポイントするメタデータデータベースまたはテーブルを作成できます。このロケーションは登録される必要があります。ロケーションに対するデータロケーション許可を持つプリンシパルは、子ロケーションに対するロケーション許可も持っています。

**Example**  
以下の例は、 AWS アカウント 1111-2222-3333 のユーザー `datalake_user1` に `s3://products/retail` に対するデータロケーション許可を付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3:::products/retail"}}'
```

基盤となるデータのクエリや更新に `DATA_LOCATION_ACCESS` は必要ありません。この許可は、Data Catalog リソースの作成のみに適用されます。

データロケーション許可については、「[Underlying data access control](access-control-underlying-data.md#data-location-permissions)」を参照してください。

### `DELETE`
<a name="perm-delete"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| DELETE | TABLE | (ロケーションが登録されている場合、追加の IAM 許可は必要ありません。) | 

この許可を持つプリンシパルは、テーブルが指定する Amazon S3 ロケーションにある基盤となるデータの挿入、更新、および読み取りを実行できます。プリンシパルは、Lake Formation コンソールでテーブルを表示し、AWS Glue API を使用してテーブルに関する情報を取得することもできます。

**Example**  
次の例では、`retail` AWS アカウント 1111-2222-3333 のデータベース`inventory`の テーブル`datalake_user1`に対する アクセス`DELETE`許可をユーザーに付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DELETE" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
```

この許可は、Amazon S3 内のデータにのみ適用され、Amazon Relational Database Service (Amazon RDS) などの他のデータストア内のデータには適用されません。

### `DESCRIBE`
<a name="perm-describe"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| DESCRIBE |  テーブルリソースリンク データベースリソースリンク  |  `glue:GetTable` `glue:GetDatabase`  | 
| DESCRIBE | DATABASE | glue:GetDatabase | 
| DESCRIBE | TABLE | glue:GetTable | 
| DESCRIBE | LF-Tag |  `glue:GetTable` `glue:GetDatabase` `lakeformation:GetResourceLFTags` `lakeformation:ListLFTags` `lakeformation:GetLFTag` `lakeformation:SearchTablesByLFTags` `lakeformation:SearchDatabasesByLFTags`  | 

この許可を持つプリンシパルは、指定されたデータベース、テーブル、またはリソースリンクを表示できます。これ以外の Data Catalog 許可が黙示的に付与されることはなく、データアクセス許可が黙示的に付与されることもありません。統合サービスのクエリエディタにはデータベースとテーブルが表示されますが、他の Lake Formation 許可 (`SELECT` など) が付与されていない限り、それらに対するクエリを実行することはできません。

例えば、データベースに対する `DESCRIBE` を持つユーザーは、そのデータベースとすべてのデータベースメタデータ (説明、ロケーションなど) を確認できますが、データベースにどのテーブルが含まれているかは判断できず、データベースでテーブルの削除、変更、または作成を行うことはできません。同様に、テーブルに対する `DESCRIBE` を持つユーザーは、テーブルとテーブルメタデータ (説明、スキーマ、ロケーションなど) を確認できますが、テーブルに対してドロップ、変更、またはクエリを実行することはできません。

以下は、`DESCRIBE` に関する追加のルールです。
+ ユーザーがデータベース、テーブル、またはリソースリンクに対する他の Lake Formation 許可を持っている場合、`DESCRIBE` が黙示的に付与されます。
+ ユーザーがテーブルについて列のサブセットのみに対する `SELECT` (partial `SELECT`) を持っている場合、ユーザーはこれらの列のみの表示に制限されます。
+ テーブルに対する partial SELECT を持つユーザーに `DESCRIBE` を付与することはできません。これとは逆に、`DESCRIBE` が付与されているテーブルに、列の包含リストや除外リストを指定することはできません。

**Example**  
次の例では、`retail` AWS アカウント 1111-2222-3333 のデータベース`inventory-link`のテーブルリソースリンク`datalake_user1`に対する アクセス`DESCRIBE`許可をユーザーに付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DESCRIBE" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory-link"}}'
```

### `DROP`
<a name="perm-drop"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| DROP | DATABASE | glue:DeleteDatabase | 
| DROP | TABLE | glue:DeleteTable  | 
| DROP | LF-Tag | lakeformation:DeleteLFTag  | 
| DROP |  データベースリソースリンク テーブルリソースリンク  | `glue:DeleteDatabase` `glue:DeleteTable`  | 

この許可を持つプリンシパルは、Data Catalog 内のデータベース、テーブル、またはリソースリンクをドロップできます。データベースに対する DROP を、外部のアカウントまたは組織に付与することはできません。

**警告**  
データベースをドロップすると、データベース内のすべてのテーブルがドロップされます。

**Example**  
次の例では、`retail` AWS アカウント 1111-2222-3333 のデータベース`datalake_user1`のユーザーに アクセス`DROP`許可を付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DROP" --resource '{ "Database": {"Name":"retail"}}'
```

**Example**  
以下の例は、データベース `retail` にあるテーブル `inventory` に対する `DROP` をユーザー `datalake_user1` に付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DROP" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
```

**Example**  
以下の例は、データベース `retail` にあるテーブルリソースリンク `inventory-link` に対する `DROP` をユーザー `datalake_user1` に付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DROP" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory-link"}}'
```

### `INSERT`
<a name="perm-insert"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| INSERT | TABLE | (ロケーションが登録されている場合、追加の IAM 許可は必要ありません。) | 

この許可を持つプリンシパルは、テーブルが指定する Amazon S3 ロケーションにある基盤となるデータの挿入、更新、および読み取りを実行できます。プリンシパルは、Lake Formation コンソールでテーブルを表示し、AWS Glue API を使用してテーブルに関する情報を取得することもできます。

**Example**  
次の例では、`retail` AWS アカウント 1111-2222-3333 のデータベース`inventory`の テーブル`datalake_user1`に対する アクセス`INSERT`許可をユーザーに付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "INSERT" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
```

この許可は、Amazon S3 内のデータにのみ適用され、Amazon RDS などの他のデータストア内のデータには適用されません。

### `SELECT`
<a name="perm-select"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| SELECT |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/lf-permissions-reference.html)  | (ロケーションが登録されている場合、追加の IAM 許可は必要ありません。) | 

この許可を持つプリンシパルは、Data Catalog 内のテーブルを表示し、テーブルが指定するロケーションにある Amazon S3 内の基盤となるデータをクエリすることができます。プリンシパルは、Lake Formation コンソールでテーブルを表示し、AWS Glue API を使用してテーブルに関する情報を取得することができます。この許可の付与時に列フィルタリングが適用された場合、プリンシパルは、包含されている列のメタデータのみを表示でき、包含されている列からのデータのみをクエリできます。

**注記**  
クエリの処理時に列フィルタリングを適用するのは、統合された分析サービスの責任です。

**Example**  
次の例では、`retail` AWS アカウント 1111-2222-3333 のデータベース`inventory`の テーブル`datalake_user1`に対する アクセス`SELECT`許可をユーザーに付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
```

この許可は、Amazon S3 内のデータにのみ適用され、Amazon RDS などの他のデータストア内のデータには適用されません。

オプションの包含リストまたは除外リストを使用して、特定の列をフィルタリング (それらへのアクセスを制限) できます。包含リストは、アクセスできる列を指定します。除外リストは、アクセスできない列を指定します。包含リストまたは除外リストがない場合は、すべてのテーブル列にアクセスできます。

`glue:GetTable` の結果は、呼び出し元が表示許可を持っている列のみを返します。Amazon Athena および Amazon Redshift などの統合サービスは、包含リストと除外リストに従います。

**Example**  
以下の例は、包含リストを使用して、テーブル `inventory` に対する `SELECT` をユーザー `datalake_user1` に付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT"  --resource '{ "TableWithColumns": {"DatabaseName":"retail", "Name":"inventory", "ColumnNames": ["prodcode","location","period","withdrawals"]}}'
```

**Example**  
次の例は、除外リストを使用して、`inventory` テーブルに対する `SELECT` を付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT"  --resource '{ "TableWithColumns": {"DatabaseName":"retail", "Name":"inventory", "ColumnWildcard": {"ExcludedColumnNames": ["intkey", "prodcode"]}}}'
```

`SELECT` 許可には以下の制限が適用されます。
+ 列フィルタリングが適用されている場合、`SELECT` を付与するときに grant オプションを含めることはできません。
+ パーティションキーである列に対するアクセス制御を制限することはできません。
+ テーブル内の列のサブセットに対する `SELECT` 許可を持つプリンシパルに、そのテーブルに対する `ALTER`、`DROP`、`DELETE` または `INSERT` 許可を付与することはできません。同様に、テーブルに対する `ALTER`、`DROP`、`DELETE` または `INSERT` 許可を持つプリンシパルに、列フィルタリングを伴う `SELECT` 許可を付与することはできません。

`SELECT` 許可は常に、Lake Formation コンソールの **[Data permissions]** (データの許可) ページに個別の行として表示されます。以下の画像は、`inventory` テーブル内のすべての列に対する `SELECT` が、ユーザー `datalake_user2` と `datalake_user3` に付与されていることを示しています。

![\[データアクセス許可ページには 4 行が表示されます。最初の行と 3 行目には Delete (削除) と Insert (挿入) のアクセス許可とともにリソースタイプ Table (テーブル) がリストされており、2 行目と 4 行目には Select (選択)アクセス許可と Column (列) リソースタイプがリストされ、リソースとして retail.inventory.* が表示されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/data-permissions-dialog-select-cross.png)


### `Super`
<a name="perm-super"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| Super | DATABASE | glue:\$1Database\$1  | 
| Super | TABLE | glue:\$1Table\$1, glue:\$1Partition\$1 | 

この許可は、プリンシパルが、データベースまたはテーブルでサポートされているすべての Lake Formation 操作を実行できるようにします。データベースに対する `Super` を、外部アカウントに付与することはできません。

この許可は、他の Lake Formation 許可と共存できます。例えば、メタデータテーブルに対する `Super`、`SELECT`、および `INSERT` 許可を付与することができます。そうすることで、プリンシパルはテーブルに対してサポートされているすべての操作を実行できるようになります。`Super` を取り消すときは、`SELECT` と `INSERT` 許可が残り、プリンシパルは選択操作と挿入操作のみを実行できます。

`Super` は、個々のプリンシパルに付与する代わりに、グループ `IAMAllowedPrincipals` に付与することができます。`IAMAllowedPrincipals` グループは自動的に作成され、IAM ポリシーによって Data Catalog リソースへのアクセスを許可されるすべての IAM ユーザーとロールが含まれます。Data Catalog リソースに対する `Super` が `IAMAllowedPrincipals` に付与される場合、リソースへのアクセスは、実質的に IAM ポリシーのみで制御されることになります。

Lake Formation コンソールの **[設定]** ページにあるオプションを活用すると、新しいカタログリソースへの `Super` アクセス許可が自動的に `IAMAllowedPrincipals` に付与されるようにすることができます。

![\[[Data catalog settings] (Data Catalog 設定) ダイアログボックスには、「Default permissions for newly created databases and tables」(新しく作成されたデータベースとテーブルのデフォルト許可) というサブタイトルが付いており、テキストで説明されている 2 つのチェックボックスがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/settings-page.png)

+ すべての新しいデータベースに対する `Super` を `IAMAllowedPrincipals` に付与するには、**[Use only IAM access control for new databases]** (新しいデータベースに IAM アクセス制御のみを使用) を選択します。
+ 新しいデータベース内のすべての新しいテーブルに対する `Super` を `IAMAllowedPrincipals` に付与するには、**[Use only IAM access control for new databases]** (新しいデータベースに IAM アクセス制御のみを使用) を選択します。
**注記**  
このオプションを選択すると、**[Create database]** (データベースの作成) ダイアログボックスの **[Use only IAM access control for new tables in this database]** (このデータベース内の新しいテーブルには IAM アクセス制御のみを使用する) チェックボックスがデフォルトでオンになります。それ以上は何も行われません。`IAMAllowedPrincipals` への `Super` の付与を有効にするのは、**[Create database]** (データベースの作成) ダイアログボックスにあるチェックボックスです。

これらの **[Settings]** (設定) ページオプションは、デフォルトで有効になっています。詳細については次を参照してください:
+ [データレイクのデフォルト設定の変更](change-settings.md)
+ [AWS Lake Formation モデルへのAWS Glueデータアクセス許可のアップグレード](upgrade-glue-lake-formation.md)

### `SUPER_USER`
<a name="perm-super-user"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| Super user | Catalog | glue:GetCatalog  | 

`Super user` アクセス許可は、デフォルトのデータカタログ内のカタログの特定のプリンシパルにのみ付与できます。デフォルトのカタログ、データベースやテーブルなどの他のリソースタイプ、または外部アカウントのプリンシパルに `Super user` アクセス許可を付与することはできません。`Super user` アクセス許可により、プリンシパルは、付与されたカタログ内のデータベースとテーブルに対して、サポートされているすべての Lake Formation オペレーションを実行できます。

`Super user` アクセス許可を使用すると、プリンシパル (被付与者) はカタログ内のリソース (カタログ、データベース、テーブル) に対して次のアクションを実行できます。
+ `CREATE_DATABASE`、カタログに対する `DESCRIBE` アクセス許可。
+ カタログ内のすべてのデータベースに対する `DROP`、`ALTER`、`CREATE_TABLE`、`DESCRIBE` (実質的に `SUPER`) アクセス許可。
+ カタログ内のすべてのデータベース内のすべてのテーブルに対する `DROP`、`ALTER`、`DESCRIBE`、`SELECT`、`INSERT`、`DELETE` (実質的に `SUPER`) アクセス許可。
+ カタログ内のカタログに対する `All` (実質的に SUPER) アクセス許可。
+ カタログ内のすべてのカタログ、データベース、テーブルに対するアクセス許可を付与可能 (これらのアクセス許可を他のプリンシパルに付与する機能）。

カタログリソースに対する `Super user` アクセス許可では、被付与者はカタログに対して `ALTER` アクションと `DROP` アクションを実行または委任することはできません。

### `ASSOCIATE`
<a name="perm-associate"></a>


| 許可 | 付与対象リソース | 付与対象に必要な追加の許可 | 
| --- | --- | --- | 
| ASSOCIATE | LF-Tag |   `glue:GetDatabase` `glue:GetTable`  `lakeformation:AddLFTagsToResource"` `lakeformation:RemoveLFTagsFromResource"` `lakeformation:GetResourceLFTags` `lakeformation:ListLFTags` `lakeformation:GetLFTag` `lakeformation:SearchTablesByLFTags` `lakeformation:SearchDatabasesByLFTags`  | 

LF タグに対してこの許可を持つプリンシパルは、LF タグを Data Catalog リソースに割り当てることができます。`ASSOCIATE` の付与は、`DESCRIBE` を黙示的に付与します。

**Example**  
この例は、`module` キーを持つ LF タグに対する `ASSOCIATE` アクセス許可をユーザー `datalake_user1` に付与します。これは、そのキーのすべての値 (アスタリスク (\$1) で指定) を表示して割り当てる許可を付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "ASSOCIATE" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
```