

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

# Lake Formation 許可の管理
<a name="managing-permissions"></a>

Lake Formation は、データレイク内のデータに対して一元的なアクセス制御を提供します。Lake Formation ではロールごとにユーザーとアプリケーションのセキュリティポリシーベースのルールを定義でき、 AWS Identity and Access Management との統合によってこれらのユーザーとロールが認証されます。ルールが定義されると、Lake Formation は、Amazon Redshift Spectrum および Amazon Athena のユーザーに対してテーブルレベル、列レベル、行レベルの詳細度でアクセス制御を適用します。

**Topics**
+ [データロケーション許可の付与](granting-location-permissions.md)
+ [データカタログリソースに対するアクセス許可の付与](granting-catalog-permissions.md)
+ [許可のシナリオ例](security-permissions-example-scenario.md)
+ [Lake Formation でのデータフィルタリングとセルレベルのセキュリティ](data-filtering.md)
+ [Lake Formation でのデータベースとテーブル許可の表示](viewing-permissions.md)
+ [Lake Formation コンソールを使用した許可の取り消し](revoking-permssions-console-all.md)
+ [Lake Formation でのクロスアカウントデータ共有](cross-account-permissions.md)
+ [共有 Data Catalog テーブルとデータベースへのアクセスと表示](viewing-shared-resources.md)
+ [リソースリンクの作成](creating-resource-links.md)
+ [クロスリージョンのテーブルアクセス](data-access-across-region.md)

# データロケーション許可の付与
<a name="granting-location-permissions"></a>

のデータロケーション許可 AWS Lake Formation により、プリンシパルは、指定された登録済み Amazon S3 ロケーションを指す Data Catalog リソースを作成および変更できます。データロケーション許可には、Lake Formation のデータ許可に加えて、データレイク内の情報をセキュア化する働きがあります。

Lake Formation は、データロケーション許可の付与に AWS Resource Access Manager (AWS RAM) サービスを使用しないため、データロケーション許可のリソース共有の招待を受け入れる必要はありません。

データロケーション許可は、Lake Formation コンソール、API、または AWS Command Line Interface (AWS CLI) を使用して付与することができます。

**注記**  
付与を成功させるには、まずデータロケーションを Lake Formation に登録する必要があります。

**以下も参照してください。**  
[Underlying data access control](access-control-underlying-data.md#data-location-permissions)

**Topics**
+ [データロケーション許可の付与 (同じアカウント)](granting-location-permissions-local.md)
+ [データロケーション許可の付与 (外部アカウント)](granting-location-permissions-external.md)
+ [アカウントと共有されたデータロケーションに対する許可の付与](regranting-locations.md)

# データロケーション許可の付与 (同じアカウント)
<a name="granting-location-permissions-local"></a>

これらの手順を実行して、 AWS アカウント内のプリンシパルにデータロケーション許可を付与します。許可は、Lake Formation コンソール、API、または AWS Command Line Interface (AWS CLI) を使用して付与することができます。

------
#### [ AWS マネジメントコンソール ]

**データロケーションアクセス許可を付与する (同じアカウント)**

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開きます。データレイク管理者、または目的のデータロケーションに対する付与許可を持つプリンシパルとしてサインインします。

1. ナビゲーションペインの **[Permissions]** (許可) で **[Data locations]** (データのロケーション) を選択します。

1. **[Grant]** (付与) を選択します。

1. **[Grant permissions]** (許可の付与) ダイアログボックスで、**[My account]** (マイアカウント) タイルが選択されていることを確認します。その後、以下の情報を指定します。
   + **[IAM users and roles]** (IAM ユーザーおよびロール) で、1 つ、または複数のプリンシパルを選択します。
   + **SAML および Amazon Quick ユーザーおよびグループ**の場合は、SAML または Amazon Quick ユーザーまたはグループの ARNs を介してフェデレーションされたユーザーまたはグループの 1 つ以上の Amazon リソースネーム (ARNs) を入力します。

     ARN は 1 度に 1 つずつ入力し、各 ARN の後で **[Enter]** キーを押します。ARN の構築方法については、「[Lake Formation の許可と取り消し AWS CLI コマンド](lf-permissions-reference.md#perm-command-format)」を参照してください。
   + **[Storage locations]** (ストレージのロケーション) では、**[Browse]** (参照) を選択して、Amazon Simple Storage Service (Amazon S3) ストレージロケーションを選択します。ロケーションは Lake Formation に登録されている必要があります。**[Browse]** (参照) をもう一度選択して、別のロケーションを追加します。ロケーションは入力することもできますが、ロケーションの前に `s3://` を付けるようにしてください。
   + **登録済みアカウントのロケーション**には、ロケーションが登録されている AWS アカウント ID を入力します。これは、デフォルトでお使いのアカウント ID に設定されます。クロスアカウントのシナリオの場合、受領者アカウントのデータレイク管理者は、受領者アカウント内の他のプリンシパルにデータロケーション許可を付与するときに、ここで所有者アカウントを指定できます。
   + (オプション) 選択したプリンシパルが選択したロケーションに対するデータロケーションの許可を付与できるようにするには、**[Grantable]** (付与可能) を選択します。  
![\[[Grant permissions] (許可の付与) ダイアログボックスで、ユーザー datalake_user とストレージロケーション s3: //retail/transactions/q119 が選択されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-location-dialog-local.png)

1. **[Grant]** (付与) を選択します。

------
#### [ AWS CLI ]

**データロケーションアクセス許可を付与する (同じアカウント)**
+ Amazon S3 のパスをリソースとして指定して、`grant-permissions` コマンドを実行し、プリンシパルに `DATA_LOCATION_ACCESS` を付与します。  
**Example**  

  以下の例は、`s3://retail` に対するデータロケーション許可をユーザー `datalake_user1` に付与します。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3:::retail"}}'
  ```  
**Example**  

  以下の例は、`s3://retail` に対するデータロケーションのアクセス許可を `ALLIAMPrincipals` グループに付与します。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3:::retail", "CatalogId": "111122223333"}}'
  ```

------

**以下も参照してください。**  
[Lake Formation 許可のリファレンス](lf-permissions-reference.md)

# データロケーション許可の付与 (外部アカウント)
<a name="granting-location-permissions-external"></a>

外部 AWS アカウントまたは組織にデータロケーションのアクセス許可を付与するには、次の手順に従います。

許可は、Lake Formation コンソール、API、または AWS Command Line Interface (AWS CLI) を使用して付与することができます。

**[開始する前に]**  
クロスアカウントアクセスのすべての前提条件が満たされていることを確認します。詳細については、「[前提条件](cross-account-prereqs.md)」を参照してください。

------
#### [ AWS マネジメントコンソール ]

**データロケーション許可を付与する (外部アカウント、コンソール)**

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開きます。データレイク管理者としてサインインします。

1. ナビゲーションペインの **[アクセス許可]** で、**[データのアクセス許可]** を選択し、**[付与]** を選択します。

1. **[Grant permissions]** (許可の付与) ダイアログボックスで、**[External account]** (外部アカウント) タイルを選択します。

1. 以下の情報を指定します。
   + **AWS アカウント ID または AWS 組織 ID** には、有効な AWS アカウント番号、組織 IDs、または組織単位 IDsを入力します。

     各 ID の後で **[Enter]** キーを押します。

     組織 ID は、最初の「o-」と、その後に続く 10～32 個の小文字または数字で構成されています。

     組織単位 ID は、最初の「ou-」と、その後に続く 4～32 個の小文字または数字で構成されています (OU が含まれるルートの ID)。この文字列の後には、2 番目の「-」(ハイフン) と 8～32 個の追加の小文字または数字が続きます。
   + **[Storage locations]** (ストレージのロケーション) で **[Browse]** (参照) を選択して、Amazon Simple Storage Service (Amazon S3) ストレージロケーションを選択します。ロケーションは Lake Formation に登録されている必要があります。  
![\[アクセス許可を付与ダイアログでは、外部アカウントのラジオボタンが選択され、 AWS アカウントが指定され、ストレージの場所が指定されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-location-dialog-external.png)

1. **[Grantable]** (付与可能) を選択します。

1. **[Grant]** (付与) を選択します。

------
#### [ AWS CLI ]

**データロケーションのアクセス許可を付与するには (外部アカウント、 AWS CLI)**
+ 外部 AWS アカウントにアクセス許可を付与するには、次のようなコマンドを入力します。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333  --permissions "DATA_LOCATION_ACCESS" --permissions-with-grant-option "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"CatalogId":"123456789012","ResourceArn":"arn:aws:s3::retail/transactions/2020q1"}}'
  ```

  このコマンドは、アカウント 1234-5678-9012 が所有する Amazon S3 ロケーション `s3://retail/transactions/2020q1` に対する grant オプション付きの `DATA_LOCATION_ACCESS` を、アカウント 1111-2222-3333 に付与します。

  組織に許可を付与するには、以下のようなコマンドを入力します。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:organization/o-abcdefghijkl --permissions "DATA_LOCATION_ACCESS" --permissions-with-grant-option "DATA_LOCATION_ACCESS" --resource '{"DataLocation": {"CatalogId":"123456789012","ResourceArn":"arn:aws:s3::retail/transactions/2020q1"}}'
  ```

  このコマンドは、アカウント 1234-5678-9012 が所有する Amazon S3 ロケーション `s3://retail/transactions/2020q1` に対する grant オプション付きの `DATA_LOCATION_ACCESS` を、組織 `o-abcdefghijkl` に付与します。

   外部 AWS アカウントのプリンシパルにアクセス許可を付与するには、次のようなコマンドを入力します。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3::retail/transactions/2020q1", "CatalogId": "123456789012"}}'
  ```

  このコマンドは、アカウント 1234-5678-9012 が所有する Amazon S3 ロケーション `s3://retail/transactions/2020q1` のアカウント 1111-2222-3333 のプリンシパルに、`DATA_LOCATION_ACCESS` を付与します。  
**Example**  

  以下の例は、`s3://retail` に対するデータロケーションのアクセス許可を、外部アカウントの `ALLIAMPrincipals` グループに付与します。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"ResourceArn":"arn:aws:s3:::retail", "CatalogId": "123456789012"}}'
  ```

------

**以下も参照してください。**  
[Lake Formation 許可のリファレンス](lf-permissions-reference.md)

# アカウントと共有されたデータロケーションに対する許可の付与
<a name="regranting-locations"></a>

Data Catalog リソースが AWS アカウントと共有されると、データレイク管理者として、アカウントの他のプリンシパルにリソースに対するアクセス許可を付与できます。共有テーブルに対する `ALTER` 許可が付与されており、そのテーブルが登録された Amazon S3 ロケーションをポイントする場合は、そのロケーションに対するデータロケーション許可も付与する必要があります。同様に、共有データベースに対する `CREATE_TABLE` または `ALTER` 許可が付与されており、そのデータベースに登録されたロケーションをポイントするロケーションプロパティがある場合は、そのロケーションに対するデータロケーション許可も付与する必要があります。

共有ロケーションに対するデータロケーション許可をアカウント内のプリンシパルに付与するには、そのロケーションに対する grant オプション付きの `DATA_LOCATION_ACCESS` 許可がアカウントに付与されている必要があります。アカウントの別のプリンシパル`DATA_LOCATION_ACCESS`に を付与するときは、所有者アカウントのデータカタログ ID (AWS アカウント ID) を含める必要があります。所有者アカウントは、ロケーションを登録したアカウントです。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface (AWS CLI ) を使用して、データロケーションのアクセス許可を付与できます。

**アカウントと共有されたデータロケーションに対する許可を付与する (コンソール)**
+ 「[データロケーション許可の付与 (同じアカウント)](granting-location-permissions-local.md)」の手順を実行します。

  **[Storage locations]** (ストレージのロケーション) には、ロケーションを入力する必要があります。**登録済みアカウントの場所**には、所有者 AWS アカウントのアカウント ID を入力します。

**アカウントと共有されたデータロケーションに対する許可を付与する (AWS CLI)**
+ 以下のコマンドのいずれかを入力して、ユーザーまたはロールに許可を付与します。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/<user-name> --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"CatalogId":"<owner-account-ID>","ResourceArn":"arn:aws:s3:::<s3-location>"}}'
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:role/<role-name> --permissions "DATA_LOCATION_ACCESS" --resource '{ "DataLocation": {"CatalogId":"<owner-account-ID>","ResourceArn":"arn:aws:s3:::<s3-location>"}}'
  ```

# データカタログリソースに対するアクセス許可の付与
<a name="granting-catalog-permissions"></a>

プリンシパルが **Data Catalog リソースを作成および管理し、基盤となるデータにアクセスできるように、 のプリンシパルに Data アクセス許可**を付与できます。 AWS Lake Formation カタログ、データベース、テーブル、ビューに対する**データレイクアクセス許可**を付与できます。テーブルに対する許可を付与する場合、特定のテーブルの列または行へのアクセスを制限して、より細かな粒度のアクセスコントロールを行うことができます。

個々のカタログ、データベース、テーブル、ビューに対するアクセス許可を付与することも、1 回の付与操作で、カタログまたはデータベース内のすべてのデータベース、テーブル、ビューに対するアクセス許可を付与することもできます。データベース内のすべての IAM プリンシパルに対するアクセス許可を付与すると、データベースに対する `DESCRIBE` アクセス許可を黙示的に付与することになります。その後は、データベースがコンソールの **[Databases]** (データベース) ページに表示され、`GetDatabases` API 操作によって返されます。カタログレベルでも同じ原則が適用されます。カタログ内のデータベースに対するアクセス許可を取得すると、そのカタログに対する `DESCRIBE` アクセス許可も取得します。

**重要**  
暗黙的な`DESCRIBE`アクセス許可は、同じ AWS アカウント内の IAM プリンシパルにアクセス許可を付与する場合にのみ適用されます。クロスアカウントリソースの場合、`DESCRIBE` アクセス許可を明示的に付与する必要があります。属性ベースのアクセス制御 (ABAC) を使用する場合、`DESCRIBE` アクセス許可の自動付与は適用されません。属性を使用してデータベース内のすべてのテーブルにアクセス許可を付与する場合、Lake Formation はデータベースに `DESCRIBE` アクセス許可を暗黙的に付与しません。

許可は、名前付きリソース方式、または Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方式を使用して付与することができます。

同じ のプリンシパル、 AWS アカウント または外部アカウントや組織にアクセス許可を付与できます。外部のアカウントまたは組織に付与するときは、所有するデータカタログオブジェクトをこれらのアカウントまたは組織と共有することになります。このため、これらのアカウントまたは組織のプリンシパルが、所有するデータカタログオブジェクトと、基盤となるデータにアクセスできるようになります。

**注記**  
現在、LF-TBAC メソッドは、IAM プリンシパル AWS アカウント、組織、組織単位 (OUs) へのクロスアカウントアクセス許可の付与をサポートしています。

外部のアカウントまたは組織に許可を付与する場合は、grant オプションを含める必要があります。共有オブジェクトにアクセスできるのは、外部アカウント内のデータレイク管理者が外部アカウント内の他のプリンシパルに共有オブジェクトに対する許可を付与するまでは、データレイク管理者のみになります。

 AWS Lake Formation コンソール、API、または () を使用して、Data Catalog の AWS Command Line Interface アクセス許可を付与できますAWS CLI。

**注記**  
データカタログオブジェクトを削除すると、そのオブジェクトに関連付けられているすべてのアクセス許可が無効になります。同じリソースを同じ名前で再作成しても、Lake Formation のアクセス許可は回復しません。ユーザーは新しいアクセス許可を再度設定する必要があります。

**以下も参照してください。**  
 [AWS アカウント間でのデータカタログテーブルとデータベースの共有](sharing-catalog-resources.md) 
 [メタデータのアクセスコントロール](access-control-metadata.md) 
 [Lake Formation 許可のリファレンス](lf-permissions-reference.md) 

# Lake Formation 許可の付与と取り消しに必要な IAM 許可
<a name="required-permissions-for-grant"></a>

データレイク管理者を含むすべてのプリンシパルは、Lake Formation API または を使用して AWS Lake Formation Data Catalog アクセス許可またはデータロケーションアクセス許可を付与または取り消すために、次の AWS Identity and Access Management (IAM) アクセス許可が必要です AWS CLI。
+ `lakeformation:GrantPermissions`
+ `lakeformation:BatchGrantPermissions`
+ `lakeformation:RevokePermissions`
+ `lakeformation:BatchRevokePermissions`
+ 名前付きリソース方式を使用してアクセス許可を付与しているテーブルまたはデータベースの場合は `glue:GetTable`、`glue:GetDatabase`、または`glue:GetCatalog`。

**注記**  
データレイク管理者には Lake Formation 許可を付与して取り消すための黙示的な Lake Formation 許可がありますが、それでも Lake Formation の付与および取り消し API 操作に対する IAM 許可が必要です。  
`AWSLakeFormationDataAdmin` AWS 管理ポリシーを持つ IAM ロールは、Lake Formation API オペレーション に対する明示的な拒否が含まれているため、新しいデータレイク管理者を追加できません`PutDataLakeSetting`。

以下の IAM ポリシーは、データレイク管理者ではないが、Lake Formation コンソールを使用して許可を付与または取り消したいというプリンシパルに推奨されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:ListPermissions",
                "lakeformation:GrantPermissions",
                "lakeformation:BatchGrantPermissions",
                "lakeformation:RevokePermissions",
                "lakeformation:BatchRevokePermissions",
                "glue:GetCatalogs",
                "glue:GetDatabases",
                "glue:SearchTables",
                "glue:GetTables",
                "glue:GetCatalog",
                "glue:GetDatabase",
                "glue:GetTable",
                "iam:ListUsers",
                "iam:ListRoles",
                "sso-directory:DescribeUser",
                "sso-directory:DescribeGroup",
                "sso:DescribeInstance"
            ],
            "Resource": "*"
        }
    ]
}
```

------

このポリシーのすべての `glue:`および アクセス`iam:`許可は、 AWS 管理ポリシー で使用できます`AWSGlueConsoleFullAccess`。

Lake Formation のタグベースのアクセス制御 (LF-TBAC) を使用して許可を付与するには、プリンシパルに追加の IAM 許可が必要です。詳細については、「[Lake Formation のタグベースのアクセスコントロールのベストプラクティスと考慮事項](lf-tag-considerations.md)」および「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」を参照してください。

**クロスアカウントアクセス許可**  
名前付きリソースメソッドを使用してクロスアカウント Lake Formation アクセス許可を付与するユーザーには、 `AWSLakeFormationCrossAccountManager` AWS マネージドポリシーの アクセス許可も必要です。

データレイク管理者には、クロスアカウントアクセス許可を付与するための同じアクセス許可と、組織へのアクセス許可の付与を有効にするための AWS Resource Access Manager (AWS RAM) アクセス許可が必要です。詳細については、「[データレイク管理者の許可](permissions-reference.md#persona-dl-admin)」を参照してください。

**管理ユーザー**  
`AdministratorAccess` AWS 管理ポリシーなどの管理アクセス許可を持つプリンシパルには、Lake Formation アクセス許可を付与し、データレイク管理者を作成するアクセス許可があります。Lake Formation 管理者操作へのユーザーまたはロールのアクセスを拒否するには、そのポリシーに管理者 API 操作の `Deny` ステートメントをアタッチまたは追加してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lakeformation:GetDataLakeSettings",
                "lakeformation:PutDataLakeSettings"
            ],
            "Effect": "Deny",
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

**重要**  
ユーザーが抽出、変換、ロード (ETL) スクリプトを使用してユーザー自身を管理者として追加できないようにするには、管理者以外のすべてのユーザーとロールに対してこれらの API 操作へのアクセスが拒否されていることを確認してください。`AWSLakeFormationDataAdmin` AWS 管理ポリシーには、ユーザーが新しいデータレイク管理者を追加できない`PutDataLakeSetting`ように、Lake Formation API オペレーションの明示的な拒否が含まれています。

# 名前付きリソース方式を使用したデータアクセス許可の付与
<a name="granting-cat-perms-named-resource"></a>

名前付きデータカタログリソース方式は、一元化されたアプローチを使用して、データベース、テーブル、列、ビューなどの AWS Glue Data Catalog オブジェクトにアクセス許可を付与する方法です。これにより、データレイク内の特定のリソースへのアクセスを制御するリソースベースのポリシーを定義できます。

名前付きリソース方式を使用してアクセス許可を付与するときには、リソースタイプと、そのリソースに対して付与または取り消すアクセス許可を指定できます。必要に応じて後からアクセス許可を取り消して、関連付けられているリソースからアクセス許可を削除することもできます。

 AWS Lake Formation コンソール、APIs、または AWS Command Line Interface () を使用してアクセス許可を付与できますAWS CLI。

**Topics**
+ [名前付きリソース方式を使用したデータカタログアクセス許可の付与](granting-multi-catalog-permissions.md)
+ [名前付きリソース方式を使用したデータベースのアクセス許可の付与](granting-database-permissions.md)
+ [名前付きリソース方式を使用したテーブル許可の付与](granting-table-permissions.md)
+ [名前付きリソース方式を使用したビューに対するアクセス権限の付与](granting-view-permissions.md)

# 名前付きリソース方式を使用したデータカタログアクセス許可の付与
<a name="granting-multi-catalog-permissions"></a>

以下は、名前付きリソース方式を使用してカタログアクセス許可を付与する方法を説明する手順です。

------
#### [ Console ]

Lake Formation コンソールの **[アクセス許可を付与]** ページを使用します。このページは、以下のセクションに分かれています。
+ **プリンシパルタイプ** – 特定のプリンシパルにアクセス許可を付与することも、属性タグを使用することもできます。
  +  **[プリンシパル]** – アクセス許可の付与先となる IAM ユーザー、ロール、IAM アイデンティティセンターユーザーとグループ、 AWS アカウント、組織、または組織単位。

    **[属性別のプリンシパル]** – IAM ロールまたは IAM セッションタグからタグのキーと値のペアを追加します。一致する属性を持つプリンシパルは、指定されたリソースへのアクセスを受け取ります。
  +  **[LF タグまたはカタログリソース]** – 付与するアクセス許可の対象となるカタログ、データベース、テーブル、ビュー、またはリソースリンク。
  +  **[Permissions]** (許可) – 付与される Lake Formation 許可。

**注記**  
データベースリソースリンクに対する許可を付与するには、「[リソースリンク許可の付与](granting-link-permissions.md)」を参照してください。

1. 「**アクセス許可の付与**」ページを開きます。

   [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開き、データレイク管理者、カタログ作成者、またはカタログに対する**付与可能なアクセス許可**を持つ IAM ユーザーとしてサインインします。

   次のいずれかを行います。
   + ナビゲーションペインの **[Permissions]** (許可) で **[Data permissions]** (データの許可) を選択します。次に、**[Grant]** (付与) を選択します。
   + ナビゲーションペインの**[データカタログ]** で、**[カタログ]** を選択します。次に、「**カタログ**」ページでカタログを選択し、**[アクション]** メニューの **[アクセル許可]** で **[付与]** を選択します。
**注記**  
テーブルに対するアクセス許可は、リソースリンクを使用して付与できます。これを実行するには、**[テーブル]** ページでカタログリンクコンテナを選択し、**[アクション]** メニューで **[ターゲットに対して付与]** を選択します。詳細については、「[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)」を参照してください。

1. 次に、**[プリンシパルタイプ]** セクションで、プリンシパルを選択するか、プリンシパルにアタッチされた属性を指定します。  
![\[[プリンシパルタイプ] セクションには、水平に配置された 2 つのタイルがあり、各タイルにはオプションボタンと説明テキストが含まれています。オプションは、[プリンシパル]と[属性別のプリンシパル]です。タイトルの下には [プリンシパル] があります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-catalog-principal-type.png)

****プリンシパルを指定する****  
**IAM ユーザーとロール**  
**[IAM users and roles]** (IAM ユーザーおよびロール) リストから、1 人、または複数のユーザーまたはロールを選択します。  
**IAM アイデンティティセンター**  
**[ユーザーとグループ]** リストから、1 人、または複数のユーザーまたはグループを選択します。ユーザーまたはグループをさらに追加するには、**[追加]** を選択します。  
**SAML ユーザーとグループ**  
**SAML および Quick ユーザーおよびグループ**の場合は、SAML を介してフェデレーションされたユーザーまたはグループの 1 つ以上の Amazon リソースネーム (ARNs)、または Amazon Quick ユーザーまたはグループの ARNs を入力します。各 ARN の後で Enter キーを押します。  
ARN の構築方法については、「[Lake Formation の許可と取り消し AWS CLI コマンド](lf-permissions-reference.md#perm-command-format)」を参照してください。  
Lake Formation と Quick の統合は、Quick Enterprise Edition でのみサポートされています。  
**外部アカウント**  
**AWS アカウント、 AWS 組織**、または **IAM プリンシパル**には、IAM ユーザーまたはロールの 1 つ以上の有効な AWS アカウント IDs、組織 IDs、組織単位 IDs、または ARN を入力します。各 ID の後で **[Enter]** キーを押します。  
組織 ID は、最初の「o-」と、その後に続く 10～32 個の小文字または数字で構成されています。  
組織単位 ID は「ou-」で始まり、その後に 4～32 個の小文字または数字 (OU が含まれるルートの ID) が続きます。この文字列の後には、2 番目の「-」ダッシュと 8～32 個の追加の小文字または数字が続きます。

****属性別のプリンシパル****  
**属性**  
IAM ロールから IAM タグのキーと値のペアを追加します。  
**アクセス許可のスコープ**  
同じアカウントまたは別のアカウントの一致する属性を持つプリンシパルにアクセス許可を付与するかどうかを指定します。

1. **[LF タグまたはカタログリソース]** セクションで、**[名前付きのデータカタログリソース]** を選択します。  
![\[[LF-Tags or catalog resources] (LF タグまたはカタログリソース) セクションには、水平に配置された 2 つのタイルがあり、各タイルにはオプションボタンと説明テキストが含まれています。オプションは、[LF タグに一致するリソース] と [名前付きのデータカタログリソース] です。タイルの下には、[Database] (データベース) と [Table] (テーブル) の 2 つのドロップダウンリストがあります。[Database] (データベース) ドロップダウンリストには、その下に選択したデータベース名が含まれるタイルがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-target-resources-catalog.png)

1. **[カタログ]** リストから 1 つ以上のカタログを選択します。1 つ以上の**データベース**、**テーブル**、または** データフィルター**を選択することもできます。

1. **[アクセス許可]** セクションで、アクセス許可と付与可能なアクセス許可を選択します。**[カタログのアクセス許可]** で、付与するアクセス許可を 1 つ以上選択します。  
![\[アクセス許可セクションカタログアクセス許可タイル。タイルの下には、付与するカタログアクセス許可のチェックボックスのグループがあります。チェックボックスには、[スーパーユーザー]、[カタログを作成]、[データベースをの作成]、[変更]、[ドロップ]、[説明]、[Super] などがあります。そのグループの下には、付与可能な許可のための、同じチェックボックスがある別のグループがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-target-catalog-permissions-section.png)

   **[スーパーユーザー]** を選択して、カタログ内のすべてのリソース (データベース、テーブル、ビュー) に対して任意のオペレーションを実行するための無制限の管理権限を付与します。
**注記**  
登録済みの場所を指す場所プロパティを持つカタログに対して `Create database` または `Alter` を付与した後は、プリンシパルにもその場所に対するデータの場所のアクセス許可を付与するようにしてください。詳細については、「[データロケーション許可の付与](granting-location-permissions.md)」を参照してください。

1. (オプション) **[Grantable permissions]** (付与可能な許可) で、付与対象者がそれぞれの AWS アカウント内の他のプリンシパルに付与できる許可を選択します。このオプションは、外部アカウントから IAM プリンシパルにアクセス許可を付与する場合はサポートされません。

1. **[付与]** を選択します。

   「**データアクセスの許可**」ページには、アクセス許可の詳細が表示されます。**[属性別のプリンシパル]** オプションを使用してアクセス許可を付与した場合、`ALLPrincipals` に対するアクセス許可の付与をリストに表示できます。

------
#### [ AWS CLI ]

を使用したカタログアクセス許可の付与については AWS CLI、「」を参照してください[Amazon Redshift フェデレーティッドカタログの作成](create-ns-catalog.md)。

------

# 名前付きリソース方式を使用したデータベースのアクセス許可の付与
<a name="granting-database-permissions"></a>

以下は、名前付きリソース方式を使用してデータベース許可を付与する方法を説明する手順です。

------
#### [ Console ]

Lake Formation コンソールの「**アクセス許可を付与**」ページを使用します。このページは、以下のセクションに分かれています。
+  **プリンシパルタイプ** – **[プリンシパル]** セクションには、アクセス許可の付与先となる IAM ユーザー、ロール、IAM アイデンティティセンターのユーザーとグループ、 AWS アカウント、組織、または組織単位が含まれます。**[属性別のプリンシパル]** セクションでは、IAM ロールにアタッチされた属性のキーと値を指定できます。
+  **[LF タグまたはカタログリソース]** – 付与する許可の対象となるデータベース、テーブル、ビュー、またはリソースリンク。
+  **[Permissions]** (許可) – 付与される Lake Formation 許可。

**注記**  
データベースリソースリンクに対する許可を付与するには、「[リソースリンク許可の付与](granting-link-permissions.md)」を参照してください。

1. 「**アクセス許可の付与**」ページを開きます。

   [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開き、データレイク管理者、データベース作成者、またはデータベースに対する**付与可能なアクセス許可**を持つ IAM ユーザーとしてサインインします。

   次のいずれかを行います。
   + ナビゲーションペインの **[Permissions]** (許可) で **[Data permissions]** (データの許可) を選択します。次に、**[Grant]** (付与) を選択します。
   + ナビゲーションペインの **[データカタログ]** で **[データベース]** を選択します。次に、**[データベース]** ページでデータベースを選択し、**[アクション]** メニューの **[許可]** で **[付与]** を選択します。
**注記**  
データベースに対する許可は、そのリソースリンクを使用して付与できます。これを実行するには、**[Database]** (データベース) ページでリソースリンクを選択し、**[Actions]** (アクション) メニューで **[Grant on target]** (ターゲットに対して付与) を選択します。詳細については、「[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)」を参照してください。

1. **[プリンシパル]** セクションで、プリンシパルを指定するか、属性を使用してプリンシパルにアクセス許可を付与します。  
![\[[プリンシパル] セクションには 4 つのタイルがあります。各タイルには、オプションボタンとテキストがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/identity-center-grant-perm.png)  
**IAM ユーザーとロール**  
**[IAM users and roles]** (IAM ユーザーおよびロール) リストから、1 人、または複数のユーザーまたはロールを選択します。  
**IAM アイデンティティセンター**  
**[ユーザーとグループ]** リストから、1 人、または複数のユーザーまたはグループを選択します。ユーザーまたはグループをさらに追加するには、**[追加]** を選択します。  
**SAML ユーザーとグループ**  
**SAML および Quick ユーザーおよびグループ**の場合は、SAML を介してフェデレーションされたユーザーまたはグループの 1 つ以上の Amazon リソースネーム (ARNs)、または Amazon Quick ユーザーまたはグループの ARNs を入力します。各 ARN の後で Enter キーを押します。  
ARN の構築方法については、「[Lake Formation の許可と取り消し AWS CLI コマンド](lf-permissions-reference.md#perm-command-format)」を参照してください。  
Lake Formation と Quick の統合は、Quick Enterprise Edition でのみサポートされています。  
**外部アカウント**  
**AWS アカウント、 AWS 組織**、または **IAM プリンシパル**には、IAM ユーザーまたはロールの 1 つ以上の有効な AWS アカウント IDs、組織 IDs、組織単位 IDs、または ARN を入力します。各 ID の後で **[Enter]** キーを押します。  
組織 ID は、最初の「o-」と、その後に続く 10～32 個の小文字または数字で構成されています。  
組織単位 ID は「ou-」で始まり、その後に 4～32 個の小文字または数字 (OU が含まれるルートの ID) が続きます。この文字列の後には、2 番目の「-」ダッシュと 8～32 個の追加の小文字または数字が続きます。  
属性別のプリンシパル  
属性のキーと値を指定します。複数の値を選択する場合は、OR 演算子で属性式を作成することになります。つまり、IAM ロールまたはユーザーに割り当てられた属性タグ値のいずれかが一致した場合、ロール/ユーザーはリソースに対するアクセス許可を取得します。  
 同じアカウントまたは別のアカウントで一致する属性を持つプリンシパルにアクセス許可を付与するかどうかを指定して、アクセス許可の範囲を選択します。

1. **[LF タグまたはカタログリソース]** セクションで、**[名前付きのデータカタログリソース]** を選択します。  
![\[[LF-Tags or catalog resources] (LF タグまたはカタログリソース) セクションには、水平に配置された 2 つのタイルがあり、各タイルにはオプションボタンと説明テキストが含まれています。オプションは、[LF タグに一致するリソース] と [名前付きのデータカタログリソース] です。タイルの下には、[Database] (データベース) と [Table] (テーブル) の 2 つのドロップダウンリストがあります。[Database] (データベース) ドロップダウンリストには、その下に選択したデータベース名が含まれるタイルがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-target-resources-section-2.png)

1. **[Database]** (データベース) のリストから、1 つ、または複数のデータベースを選択します。1 つ以上の**テーブル**や**データフィルター**を選択することもできます。

1. **[Permissions]** (許可) セクションで、許可と付与可能な許可を選択します。**[Database permissions]** (データベースの許可) で、付与する許可を 1 つ、または複数選択します。  
![\[[Permissions] (許可) セクションには、水平に配置された 2 つのタイルがあります。各タイルには、オプションボタンとテキストがあります。[Database permissions] (データベースの許可) タイルが選択されています。もう 1 つのタイルである [Column-based permissions] (列ベースの許可) は、テーブル許可に関連していることから無効になっています。タイルの下には、付与するデータベース許可のチェックボックスのグループがあります。チェックボックスには、[Create Table] (テーブルの作成)、[Alter] (変更)、[Drop] (ドロップ)、[Describe] (記述)、および [Super] (スーパー) があります。そのグループの下には、付与可能な許可のための、同じチェックボックスがある別のグループがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-target-db-permissions-section.png)
**注記**  
登録されたロケーションをポイントするロケーションプロパティを持ったデータベースに対する `Create Table` または `Alter` を付与した後は、プリンシパルにもそのロケーションに対するデータロケーション許可を付与するようにしてください。詳細については、「[データロケーション許可の付与](granting-location-permissions.md)」を参照してください。

1. (オプション) **[Grantable permissions]** (付与可能な許可) で、付与対象者がそれぞれの AWS アカウント内の他のプリンシパルに付与できる許可を選択します。このオプションは、外部アカウントから IAM プリンシパルにアクセス許可を付与する場合はサポートされません。

1. **[付与]** を選択します。

------
#### [ AWS CLI ]

データベース許可は、名前付きリソース方式と AWS Command Line Interface (AWS CLI) を使用して付与することができます。

**を使用してデータベースのアクセス許可を付与するには AWS CLI**
+ `grant-permissions` コマンドを実行し、付与される許可に応じて、データベースまたは Data Catalog をリソースとして指定します。

  次の例では、*<account-id>* を有効な AWS アカウント ID に置き換えます。  
**Example – データベースを作成するための付与**  

  この例では、`CREATE_DATABASE` をユーザー `datalake_user1` に付与します。この許可が付与されるリソースは Data Catalog であるため、コマンドは `resource` パラメータとして空の `CatalogResource` 構造を指定します。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "CREATE_DATABASE" --resource '{ "Catalog": {}}'
  ```  
**Example – 指定されたデータベースでテーブルを作成するための付与**  

  次の例は、データベース `retail` での `CREATE_TABLE` をユーザー `datalake_user1` に付与します。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
  ```  
**Example – Grant オプションを使用して外部 AWS アカウントに付与する**  

  次の例は、データベース `retail` に対する grant オプション付きの `CREATE_TABLE` を外部アカウント 1111-2222-3333 に付与します。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "CREATE_TABLE" --permissions-with-grant-option "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
  ```  
**Example – 組織への付与**  

  次の例は、データベース `issues` に対する grant オプション付きの `ALTER` を組織 `o-abcdefghijkl` に付与します。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:organization/o-abcdefghijkl --permissions "ALTER" --permissions-with-grant-option "ALTER" --resource '{ "Database": {"Name":"issues"}}'
  ```  
**Example - 同じアカウントで `ALLIAMPrincipals` に付与**  

  次の例では、同じアカウントのすべてのプリンシパルにデータベース `retail` への `CREATE_TABLE` アクセス許可を付与します。このオプションを使用すると、アカウント内のすべてのプリンシパルがデータベースにテーブルを作成し、統合クエリエンジンが共有データベースとテーブルにアクセスできるようにするテーブルリソースリンクを作成できます。このオプションは、プリンシパルがクロスアカウント付与を受け取っていて、リソースリンクを作成するアクセス許可を持っていない場合に特に役立ちます。このシナリオでは、データレイク管理者がプレースホルダーデータベースを作成して `ALLIAMPrincipal` グループに `CREATE_TABLE` アクセス許可を付与し、アカウント内の各 IAM プリンシパルがプレースホルダーデータベースにリソースリンクを作成できるようにします。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "CREATE_TABLE"  --resource '{ "Database": {"Name":"temp","CatalogId":"111122223333"}}' 
  ```  
**Example - 外部アカウントでの `ALLIAMPrincipals` への付与**  

  次の例では、外部アカウントのすべてのプリンシパルにデータベース `retail` への `CREATE_TABLE` を付与します。このオプションにより、アカウント内の各プリンシパルがデータベースにテーブルを作成できます。

  ```
  1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "CREATE_TABLE"  --resource '{ "Database": {"Name":"retail","CatalogId":"123456789012"}}'
  ```

**注記**  
登録されたロケーションをポイントするロケーションプロパティを持ったデータベースに対する `CREATE_TABLE` または `ALTER` を付与した後は、プリンシパルにもそのロケーションに対するデータロケーション許可を付与するようにしてください。詳細については、「[データロケーション許可の付与](granting-location-permissions.md)」を参照してください。

------

**関連情報**  
 [Lake Formation 許可のリファレンス](lf-permissions-reference.md) 
 [アカウントと共有されたデータベースまたはテーブルに対する許可の付与](regranting-shared-resources.md) 
 [共有 Data Catalog テーブルとデータベースへのアクセスと表示](viewing-shared-resources.md) 

# 名前付きリソース方式を使用したテーブル許可の付与
<a name="granting-table-permissions"></a>

Lake Formation コンソールまたは を使用して AWS CLI 、データカタログテーブルに対する Lake Formation アクセス許可を付与できます。個々のテーブルに対する許可を付与する、または 1 回の付与操作で、データベース内のすべてのテーブルに対する許可を付与することができます。

データベース内のすべてのテーブルに対する許可を付与すると、データベースに対する `DESCRIBE` 許可を黙示的に付与することになります。その後は、データベースがコンソールの **[Databases]** (データベース) ページに表示され、`GetDatabases` API 操作によって返されます。この `DESCRIBE` アクセス許可の自動付与は、属性ベースのアクセス制御 (ABAC) を使用する場合には適用されません。属性を使用してデータベース内のすべてのテーブルにアクセス許可を付与する場合、Lake Formation はデータベースに `DESCRIBE` アクセス許可を暗黙的に付与しません。

付与する許可として `SELECT` を選択するときは、列フィルター、行フィルター、またはセルフィルターを適用するオプションがあります。

------
#### [ Console ]

以下は、名前付きリソース方式と、Lake Formation コンソールの **[データレイクのアクセス許可を付与]** ページを使用して、テーブル許可を付与する方法を説明する手順です。このページは、これらのセクションに分けられています。
+  **プリンシパルタイプ** – アクセス許可の付与先となるユーザー、ロール、 AWS アカウント、組織、または組織単位。一致する属性を持つプリンシパルにアクセス許可を付与することもできます。
+  **[LF-Tags or catalog resources]** (LF タグまたはカタログリソース) – 付与する許可の対象となるデータベース、テーブル、またはリソースリンク。
+  **[Permissions]** (許可) – 付与される Lake Formation 許可。

**注記**  
テーブルリソースリンクに対する許可を付与するには、「[リソースリンク許可の付与](granting-link-permissions.md)」を参照してください。

1. 「アクセス許可の付与」ページを開きます。

   [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開き、データレイク管理者、テーブル作成者、またはテーブルに対するアクセス許可が付与されたユーザーとして、グラントオプションを使用してサインインします。

   次のいずれかを行います。
   + ナビゲーションペインの **[アクセス許可]** で **[データの許可]** を選択します。次に、**[Grant]** (付与) を選択します。
   + ナビゲーションペインで **[Table]** (テーブル) を選択します。次に、**[Tables]** (テーブル) ページでテーブルを選択し、**[Actions]** (アクション) メニューの **[Permissions]** (許可) で **[Grant]** (付与) を選択します。
**注記**  
テーブルに対する許可は、リソースリンクを使用して付与することができます。これを実行するには、**[Tables]** (テーブル) ページでリソースリンクを選択し、**[Actions]** (アクション) メニューで **[Grant on target]** (ターゲットに対して付与) を選択します。詳細については、「[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)」を参照してください。

1. 次に、**[プリンシパル]** セクションで、プリンシパルまたは一致する属性を持つプリンシパルを指定して、アクセス許可を付与します。  
**IAM ユーザーとロール**  
**[IAM users and roles]** (IAM ユーザーおよびロール) リストから、1 人、または複数のユーザーまたはロールを選択します。  
**IAM アイデンティティセンター**  
**[ユーザーとグループ]** リストから、1 人、または複数のユーザーまたはグループを選択します。  
**SAML ユーザーとグループ**  
**SAML およびクイックユーザーおよびグループ**の場合は、SAML を介してフェデレーションされたユーザーまたはグループの 1 つ以上の Amazon リソースネーム (ARNs)、またはクイックユーザーまたはグループの ARNs を入力します。各 ARN の後で Enter キーを押します。  
ARN の構築方法については、「[Lake Formation の許可と取り消し AWS CLI コマンド](lf-permissions-reference.md#perm-command-format)」を参照してください。  
Lake Formation と Quick の統合は、Quick Enterprise Edition でのみサポートされています。  
**外部アカウント**  
**AWS アカウント 、 AWS 組織**、または **IAM プリンシパル**には、IAM ユーザーまたはロールの 1 つ以上の AWS アカウント IDs、組織 IDs、組織単位 IDs、または ARN を入力します。各 ID の後で **[Enter]** キーを押します。  
組織 ID は、最初の「o-」と、その後に続く 10～32 個の小文字または数字で構成されています。  
組織単位 ID は「ou-」で始まり、その後に 4～32 個の小文字または数字 (OU が含まれるルートの ID) が続きます。この文字列の後には、2 番目の「-」文字と 8～32 個の追加の小文字または数字が続きます。  
属性別のプリンシパル  
属性のキーと値を指定します。複数の値を選択する場合は、OR 演算子で属性式を作成することになります。つまり、IAM ロールまたはユーザーに割り当てられた属性タグ値のいずれかが一致した場合、ロール/ユーザーはリソースに対するアクセス許可を取得します。  
 同じアカウントまたは別のアカウントで一致する属性を持つプリンシパルにアクセス許可を付与するかどうかを指定して、アクセス許可の範囲を選択します。

1. **[LF-Tags or catalog resources]** (LF タグまたはカタログリソース) セクションで、データベースを選択します。次に、1 つ、または複数のテーブルを選択するか、**[All tables]** (すべてのテーブル) を選択します。  
![\[[LF-Tags or catalog resources] (LF タグまたはカタログリソース) セクションには、水平に配置された 2 つのタイルがあり、各タイルにはオプションボタンと説明テキストが含まれています。オプションは、[LF タグに一致するリソース] と [名前付きの Data Catalog リソース] です。名前付き Data Catalog リソースが選択されています。タイルの下には、[Database] (データベース) と [Table] (テーブル) の 2 つのドロップダウンリストがあります。[Database] (データベース) ドロップダウンリストには、その下に選択したデータベース名が含まれるタイルがあります。[Table] (テーブル) ドロップダウンリストには、その下に選択したテーブル名が含まれるタイルがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-target-resources-tables-section-2.png)

1. 

**データフィルタリングを使用せずにアクセス許可を指定します。**

   **[許可]** セクションで、付与するテーブル許可を選択し、オプションで付与可能な許可を選択します。  
![\[[Table and column permissions] (テーブルと列の許可) セクションには、[Table permissions] (テーブルの許可) と [Grantable permissions] (付与可能な許可) の 2 つのサブセクションがあります。各サブセクションには、[Alter] (変更)、[Insert] (挿入)、[Drop] (ドロップ)、[Delete] (削除)、[Select] (選択)、[Describe] (記述)、および [Super] (スーパー) の可能な Lake Formation 許可ごとのチェックボックスがあります。[Super] (スーパー) 許可は他の許可の右側に設置されており、「This permission allows the principal to grant any of the permissions to the left, and supersedes those grantable permissions」(この許可は、プリンシパルが左側にあるどの許可でも付与できるようにし、これらの付与可能な許可に優先します」という説明があります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-table-permissions-section-no-filter.png)

   **[選択]** を付与する場合は、**[テーブルと列のアクセス許可]** セクションの下に、**[すべてのデータアクセス]** オプションがデフォルトで選択された **[データの許可]** セクションが表示されます。デフォルトを受け入れます。  
![\[このセクションには水平に配置された 3 つのタイルがあり、それぞれにオプションボタンと説明があります。オプションボタンは、[All data access] (すべてのデータアクセス) (選択済み)、[Simple column-based access] (シンプルな列ベースのアクセス)、および [Advanced cell-level filters] (高度なセルレベルのフィルター) です。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-select-all-data-access.png)

1. **[Grant]** (付与) を選択します。

1. 

**データフィルタリングを使用して**選択**許可を指定する**

   **[Select]** (選択) 許可を選択します。他の許可は選択しないでください。

   **[Data permissions]** (データの許可) セクションが、**[Table and column permissions]** (テーブルと列の許可) セクションの下に表示されます。

1. 以下のいずれかを実行します。
   + シンプルな列フィルタリングのみを適用します。

     1. **[Simple column-based access]** (シンプルな列ベースのアクセス) を選択します。  
![\[最上部のセクションは、[Table and column permissions] (テーブルと列の許可) セクションです。これは、前述のスクリーンショットで説明されています。これには、テーブル許可と付与可能な許可のチェックボックスが含まれています。最下部のセクションである [Data permission] (データ許可) には 3 つのタイルが水平に配置されており、各タイルにはオプションボタンと説明があります。オプションは、[All data access] (すべてのデータアクセス)、[Simple column-based access] (シンプルな列ベースのアクセス)、および [Advanced cell-level filters] (高度なセルレベルのフィルター) です。[Simple column-based access] (シンプルな列ベースのアクセス) オプションが選択されています。タイルの下には、[Choose permission filter] (許可フィルターの選択) というラベルが付いたオプションボタングループがあります。オプションには、[列を含める] と [列を除外する] があります。オプショングループの下には [Select columns] (列の選択) ドロップダウンリストがあり、その下には、[Select] (選択) というラベルが付いた単一のチェックボックスがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-table-permissions-section-column-filter.png)

     1. 列を含めるか除外するかを選択してから、含める、または除外する列を選択します。

        外部 AWS アカウントまたは組織に許可を付与する場合、インクルードリストのみがサポートされます。

     1. (オプション) **[Grantable permissions]** (付与可能な許可) で、[Select] (選択) に対して grant オプションをオンにします。

         Grant オプションを含めると、付与対象者は、ユーザーが付与対象者に付与する列に対する許可のみを付与できます。
**注記**  
また、列フィルターは、列フィルターを指定し、すべての行を行フィルターとして指定するデータフィルターを作成することによってのみ、適用できます。ただし、これには追加の手順が必要になります。
   + 列、行、またはセルのフィルタリングを適用します。

     1. **[Advanced cell-level filters]** (高度なセルレベルのフィルター) を選択します。  
![\[[Data permissions] (データの許可) というタイトルのこのセクションは、[Table permissions] (テーブルの許可) セクションの下にあります。これには水平に配置された 3 つのタイルがあり、各タイルにオプションボタンと説明があります。オプションは、[All data access] (すべてのデータアクセス)、[Simple column-based access] (シンプルな列ベースのアクセス)、および [Advanced cell-level filters] (高度なセルレベルのフィルター) です。[Advanced cell-level filters] (高度なセルレベルのフィルター) オプションが選択されています。そのタイルの下には [View existing permissions] (既存の許可を表示) というラベルがあり、左側に一覧表示用の三角形があります。既存の許可は一覧表示されていません。その下には、[Data filters to grant] (付与するデータフィルター) というタイトルのセクションがあります。タイトルの右側には、更新、[Manage filters] (フィルターを管理)、および [Create new filter] (新しいフィルターを作成) の 3 つのボタンがあります。タイトルとボタンの下には、プレースホルダテキストである「Find filter」(フィルターを検索) が表示されたテキストフィールドがあります。その下には、既存のフィルターの表があります。各行の左側にチェックボックスがあります。列の見出しは、[Filter name] (フィルター名)、[Table] (テーブル)、[Database] (データベース)、および [Table catalog ID] (テーブルカタログ ID) です。2 つの行があります。最初の行のフィルター名は restrict-pharma です。2 行目の名前は no-pharma です。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-table-permissions-section-cell-filter.png)

     1. (オプション) **[View existing permissions]** (既存の許可を表示) を展開します。

     1. (オプション) **[Create new filter]** (新しいフィルターを作成) を選択します。

     1. (オプション) リストされたフィルターの詳細を表示する、または新しいフィルターの作成や既存のフィルターの削除を実行するには、**[Manage filters]** (フィルターを管理) を選択します。

        **[Data filters]** (データフィルター) ページは、新しいブラウザで開きます。

        **[Data filters]** (データフィルター) ページでの作業を終えたら、**[Grant permissions]** (許可の付与) ページに戻り、必要に応じてページを更新して、作成した新しいデータフィルターを表示します。

     1. この付与に適用する 1 つ、または複数のデータフィルターを選択します。
**注記**  
リストにデータフィルターがない場合は、選択したテーブルに対してデータフィルターが作成されていないことを意味します。

1. **[Grant]** (付与) を選択します。

------
#### [ AWS CLI ]

テーブル許可は、名前付きリソース方式と AWS Command Line Interface (AWS CLI) を使用して付与することができます。

**を使用してテーブルのアクセス許可を付与するには AWS CLI**
+ `grant-permissions` コマンドを実行し、リソースとしてテーブルを指定します。

**Example – 単一のテーブルに対する付与 – フィルタリングなし**  
次の例では`ALTER`、データベース `datalake_user1`の テーブルの AWS アカウント 1111-2222-3333 `inventory`のユーザーに `SELECT`と を付与します`retail`。  

```
1. aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" "ALTER" --resource '{ "Table": {"DatabaseName":"retail", "Name":"inventory"}}'
```
登録されたロケーションに基盤となるデータを持つテーブルに対する `ALTER` 許可を付与する場合は、そのロケーションに対するデータロケーション許可もプリンシパルに付与するようにしてください。詳細については、「[データロケーション許可の付与](granting-location-permissions.md)」を参照してください。

**Example – 付与オプションを使用したすべてのテーブルに対する付与 – フィルタリングなし**  
次の例は、データベース `retail` 内のすべてのテーブルに対する grant オプション付きの `SELECT` を付与します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --permissions-with-grant-option "SELECT" --resource '{ "Table": { "DatabaseName": "retail", "TableWildcard": {} } }'
```<a name="simple-column-filter-example"></a>

**Example – シンプルな列フィルタリングを使用する付与**  
次の例は、表 `persons` 内の列のサブセットに対する `SELECT` を付与します。これは、シンプルな列フィルタリングを使用します。  

```
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" --resource '{ "TableWithColumns": {"DatabaseName":"hr", "Name":"persons", "ColumnNames":["family_name", "given_name", "gender"]}}'
```

**Example – データフィルターを適用する付与**  
この例は、`orders` テーブルに対する `SELECT` を付与し、`restrict-pharma` データフィルターを適用します。  

```
aws lakeformation grant-permissions --cli-input-json file://grant-params.json
```
以下は、ファイル `grant-params.json` の内容です。  

```
{
    "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
    "Resource": {
        "DataCellsFilter": {
            "TableCatalogId": "111122223333",
            "DatabaseName": "sales",
            "TableName": "orders",
            "Name": "restrict-pharma"
        }
    },
    "Permissions": ["SELECT"],
    "PermissionsWithGrantOption": ["SELECT"]
}
```

------

**関連情報**  
[Lake Formation 許可の概要](lf-permissions-overview.md)
[Lake Formation でのデータフィルタリングとセルレベルのセキュリティ](data-filtering.md)
[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)
 [リソースリンク許可の付与](granting-link-permissions.md)
 [共有 Data Catalog テーブルとデータベースへのアクセスと表示](viewing-shared-resources.md) 

# 名前付きリソース方式を使用したビューに対するアクセス権限の付与
<a name="granting-view-permissions"></a>

以下の手順では、名前付きリソース方式と、「**アクセス許可の付与**」ページを使用して、ビューに対するアクセス許可を付与する方法を説明します。このページは、以下のセクションに分かれています。
+  **プリンシパルタイプ** – アクセス許可を付与する IAM ユーザー、ロール、IAM Identity Center ユーザーとグループ AWS アカウント、組織、または組織単位。一致する属性を持つプリンシパルにアクセス許可を付与することもできます。
+  **[LF タグまたはカタログリソース]** – 付与する許可の対象となるデータベース、テーブル、ビュー、またはリソースリンク。
+  **[許可]** – 付与されるデータレイク許可。

## 「**アクセス許可の付与**」ページを開きます。
<a name="view-start-grant"></a>

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開き、データレイク管理者、データベース作成者、またはデータベースに対する**付与可能なアクセス許可**を持つ IAM ユーザーとしてサインインします。

1. 次のいずれかを行います。
   + ナビゲーションペインの **[Permissions]** (許可) で **[Data permissions]** (データの許可) を選択します。次に、**[Grant]** (付与) を選択します。
   + ナビゲーションペインの **[データカタログ]** で、**[ビュー]** を選択します。次に、**[ビュー]** ページでビューを選択し、**[アクション]** メニューの **[許可]** で **[付与]** を選択します。
**注記**  
ビューに対する許可は、リソースリンクを使用して付与できます。これを実行するには、**[ビュー]** ページでリソースリンクを選択し、**[アクション]** メニューで **[ターゲットに対して付与]** を選択します。詳細については、「[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)」を参照してください。

## プリンシパルタイプを指定する
<a name="views-specify-principals"></a>

 **[プリンシパルタイプ]** セクションで、プリンシパルまたは属性別のプリンシパルを選択します。プリンシパルを選択した場合、次のオプションを使用できます。

**IAM ユーザーとロール**  
**[IAM users and roles]** (IAM ユーザーおよびロール) リストから、1 人、または複数のユーザーまたはロールを選択します。

**IAM アイデンティティセンター **  
**[ユーザーとグループ]** リストから、1 人、または複数のユーザーまたはグループを選択します。

**SAML ユーザーとグループ**  
**SAML および Quick ユーザーおよびグループ**の場合は、SAML を介してフェデレーションされたユーザーまたはグループの 1 つ以上の Amazon リソースネーム (ARNs)、または Amazon Quick ユーザーまたはグループの ARNs を入力します。各 ARN の後で Enter キーを押します。  
ARN の構築方法については、「[Lake Formation の許可と取り消し AWS CLI コマンド](lf-permissions-reference.md#perm-command-format)」を参照してください。  
Lake Formation と Quick の統合は、Quick Enterprise Edition でのみサポートされています。

**外部アカウント**  
**AWS アカウント、 AWS 組織**、または **IAM プリンシパル**には、IAM ユーザーまたはロールの 1 つ以上の有効な AWS アカウント IDs、組織 IDs、組織単位 IDs、または ARN を入力します。各 ID の後で **[Enter]** キーを押します。  
組織 ID は、最初の「o-」と、その後に続く 10～32 個の小文字または数字で構成されています。  
組織単位 ID は「ou-」で始まり、その後に 4～32 個の小文字または数字 (OU が含まれるルートの ID) が続きます。この文字列の後には、2 番目の「-」ダッシュと 8～32 個の追加の小文字または数字が続きます。  
**以下の資料も参照してください。**  
+  [共有 Data Catalog テーブルとデータベースへのアクセスと表示](viewing-shared-resources.md) 

**属性別のプリンシパル**  
属性のキーと値を指定します。複数の値を選択する場合は、OR 演算子で属性式を作成することになります。つまり、IAM ロールまたはユーザーに割り当てられた属性タグ値のいずれかが一致した場合、ロール/ユーザーはリソースに対するアクセス許可を取得します。  
 同じアカウントまたは別のアカウントで一致する属性を持つプリンシパルにアクセス許可を付与するかどうかを指定して、アクセス許可の範囲を選択します。

## ビューを指定します。
<a name="view-specify-resources"></a>

**[LF タグまたはカタログリソース]** セクションで、付与する許可の対象となるビューを 1 つ、または複数選択します。

1. **[Named data catalog resources]** (名前付きの Data Catalog リソース) を選択します。

1. **[ビュー]** リストから 1 つまたは複数のビューを選択します。1 つ以上のカタログ、データベース、テーブル、データフィルターを選択することもできます。

   データベース内の `All tables` にデータレイクのアクセス許可を付与すると、被付与者はデータベース内のすべてのテーブルとビューに対するアクセス許可を持つことになります。

## 許可を指定する
<a name="view-specify-permissions"></a>

**[Permissions]** (許可) セクションで、許可と付与可能な許可を選択します。

![\[[アクセス許可] セクションには、付与するビューのアクセス許可のチェックボックスのグループがあります。チェックボックスには、[選択]、[ドロップ]、[記述]、および [スーパー] があります。そのグループの下には、付与可能な許可のための、同じチェックボックスがある別のグループがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/view-permissions.png)


1. **[アクセス許可の表示]** で、付与する許可を 1 つ、または複数選択します。

1. (オプション) **[Grantable permissions]** (付与可能な許可) で、付与対象者がそれぞれの AWS アカウント内の他のプリンシパルに付与できる許可を選択します。このオプションは、外部アカウントから IAM プリンシパルにアクセス許可を付与する場合はサポートされません。

1. **[Grant]** (付与) を選択します。

**以下の資料も参照してください。**  
 [Lake Formation 許可のリファレンス](lf-permissions-reference.md) 
 [アカウントと共有されたデータベースまたはテーブルに対する許可の付与](regranting-shared-resources.md) 

# Lake Formation のタグベースのアクセス制御
<a name="tag-based-access-control"></a>

Lake Formation のタグベースのアクセス制御 (LF-TBAC) は、属性に基づいて許可を定義する認可戦略です。これらの属性は、Lake Formation で LF タグ**と呼ばれています。データカタログリソースに LF タグをアタッチし、それらの LF タグを使用して、リソースに対するアクセス許可を Lake Formation プリンシパルに付与できます。Lake Formation は、プリンシパルでリソースのタグ値と一致するタグ値にアクセス許可が付与されたときに、それらのリソースに対するオペレーションを許可します。

LF-TBAC は、急成長する環境や、ポリシー管理が煩雑になる状況で役に立ちます。

LF-TBAC は、データカタログオブジェクト (フェデレーティッドカタログ、データベース、テーブル、ビューなど) が多数ある場合に Lake Formation 許可を付与するために使用することが推奨される方式です。Lake Formation は、Amazon S3 テーブル、 Amazon Redshift データウェアハウス、SQL Server Amazon DynamoDB、Snowflake などのフェデレーティッドデータソースのフェデレーティッドカタログのタグベースのアクセスコントロールをサポートしています。

**注記**  
IAM タグと LF タグは同じではありません。これらのタグは置き換え可能ではありません。LF タグは Lake Formation アクセス許可を付与するために使用され、IAM タグは IAM ポリシーを定義するために使用されます。

## Lake Formation のタグベースのアクセス制御の仕組み
<a name="how-TBAC-works"></a>

各 LF タグは、`department=sales` や `classification=restricted` などのキーと値のペアです。キーは、`department=sales,marketing,engineering,finance` など複数の定義された値を持つことができます。

LF-TBAC 方式を使用するには、データレイク管理者とデータエンジニアが以下のタスクを実行します。


| タスク | タスクの詳細 | 
| --- | --- | 
|  1. LF タグのプロパティと関係を定義します。  | - | 
|  2. Lake Formation で LF タグ作成者を作成します。  | [LF タグ作成者の追加](TBAC-adding-tag-creator.md) | 
|  3. Lake Formation で LF タグを作成します。  | [LF タグの作成](TBAC-creating-tags.md) | 
|  4. LF タグを Data Catalog リソースに割り当てます。  | [Data Catalog リソースへの LF タグの割り当て](TBAC-assigning-tags.md) | 
|  5. LF タグをリソースに割り当てる許可 (オプションで付与オプションを使用) を他のプリンシパルに付与します。  | [LF タグ値のアクセス許可の管理](TBAC-granting-tags.md) | 
|  6. LF タグ式 (オプションで付与オプションを使用) をプリンシパルに付与します。  | [LF-TBAC 方式を使用したデータレイク許可の付与](granting-catalog-perms-TBAC.md) | 
|  7. (推奨) プリンシパルが LF-TBAC 方式を使用して正しいリソースにアクセスできることを確認した後、名前付きリソース方式を使用して付与された許可を取り消します。  | - | 

3 つのデータベースと 7 つのテーブルに対するアクセス許可を 3 人のプリンシパルに付与する必要がある場合を考えてみましょう。

![\[左側に 3 人のユーザーが垂直に配置されています。右側には、A、B、および C のラベルが付けられた 3 個のデータベースが垂直に配置されています。データベース A には A.1 および A.2 のラベルが付けられた 2 個のテーブルがあり、データベース B には B.1 および B.2 のラベルが付けられたテーブル、データベース C には C.1、C.2、および C.3 のラベルが付けられた 3 個のテーブルがあります。17 本の矢印は、ユーザーをデータベースとテーブルに結び付けており、データベースおよびテーブルに対する許可のユーザーへの付与を示しています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/TBAC_example_discreet.png)


上の図に示されているアクセス許可を名前付きリソース方法を使用して実現するには、以下のように、17 の付与を行う必要があります (擬似コードを使用)。

```
GRANT CREATE_TABLE ON Database A TO PRINCIPAL 1
GRANT SELECT, INSERT ON Table A.1 TO PRINCIPAL 1
GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 1
GRANT SELECT, INSERT ON Table B.2 TO PRINCIPAL 1
...
GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 2
GRANT CREATE_TABLE ON Database B TO PRINCIPAL 2
...
GRANT SELECT, INSERT ON Table C.3 TO PRINCIPAL 3
```

今度は、LF-TBAC を使用してアクセス許可を付与する方法を考えてみます。次の図は、LF タグをデータベースとテーブルに割り当てて、LF タグに対するアクセス許可をプリンシパルに付与したことを示しています。

この例では、LF タグが、エンタープライズリソースプランニング (ERP) アプリケーションスイートの異なるモジュールの分析が含まれるデータレイクの領域を表しています。さまざまなモジュールの分析データへのアクセスを制御するために使用できます。すべての LF タグは、`module` というキーと、`Sales`、`Orders`、および `Customers` の可能な値を持っています。LF タグの例は以下のようになります。

```
module=Sales
```

この図は LF タグの値のみを示しています。

![\[前の図と同様に、左側に 3 人のユーザーが垂直に配置されており、右側には A、B、および C のラベルが付けられた 3 個のデータベースが垂直に配置されています。データベース A には A.1 および A.2 のラベルが付けられた 2 個のテーブルがあり、データベース B には B.1 および B.2 のラベルが付けられたテーブル、データベース C には C.1、C.2、および C.3 のラベルが付けられた 3 個のテーブルがあります。ユーザーと、データベースとテーブルの間に矢印はありません。その代わりに、ユーザーの横にあるラベル付けされた「フラグ」が、ユーザー 1 に Sales (売上) および Customers (顧客) の LF タグが付与され、ユーザー 2 には Orders (注文) の LF タグ、ユーザー 3 には Customers (顧客) の LF タグが付与されていることを示しています。データベースとテーブルの横にあるフラグは、データベースとテーブルへの次のような LF タグの割り当てを示しています。データベース A: Sales (売上)。テーブル A.1: 淡色表示のフラグによって、Sales (売上) がデータベース A から継承されたことが示されています。テーブル A.2: Orders (注文)。ただし、淡色表示のフラグによって、Sales (売上) がデータベース A から継承されたことが示されています。データベース B: Orders (注文)。テーブル B.1 と B.2 は Orders (注文) を継承しており、テーブル B.2 には Customers (顧客) があります。データベース C には Customers (顧客) があり、テーブル C.1、C.2、および C.3 は Customers (顧客) を継承しています。C のテーブルに他の割り当てはありません。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/TBAC_example_tags.png)


**Data Catalog リソースへのタグ割り当てと継承**  
テーブルはデータベースから LF タグを継承し、列はテーブルから LF タグを継承します。継承された値は上書きすることができます。上記の図では、淡色表示の LF タグが継承されています。

継承が行われるため、データレイク管理者は、リソースに対して以下の 5 つの LF タグの割り当てを行うだけで済みます (擬似コードを使用)。

```
ASSIGN TAGS module=Sales TO database A
ASSIGN TAGS module=Orders TO table A.2
ASSIGN TAGS module=Orders TO database B
ASSIGN TAGS module=Customers TO table B.2
ASSIGN TAGS module=Customers TO database C
```

**プリンシパルへのタグの付与**  
データベースとテーブルに LF タグを割り当てた後、データレイク管理者は、以下のようにプリンシパルに対して LF タグを 4 回付与するだけで済みます (擬似コードを使用)。

```
GRANT TAGS module=Sales TO Principal 1
GRANT TAGS module=Customers TO Principal 1
GRANT TAGS module=Orders TO Principal 2
GRANT TAGS module=Customers TO Principal 3
```

これで、LF タグ `module=Sales` を持つプリンシパルは LF タグ `module=Sales` を持つ Data Catalog リソース (例えば、データベース A) にアクセスでき、LF タグ `module=Customers` を持つプリンシパルは LF タグ `module=Customers` を持つリソースにアクセスできる、というようになります。

上記の grant コマンドは不完全です。これらは、プリンシパルが許可を持つ Data Catalog リソースを LF タグで示してはいるものの、プリンシパルがそれらのリソースに対してどの Lake Formation 許可 (`SELECT`、`ALTER` など) を持っているかを正確に示していないためです。したがって、以下の擬似コードのコマンドが、LF タグを使用して Data Catalog リソースに対する Lake Formation 許可を付与する方法のより正確な表現になります。

```
GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Sales TO Principal 1
GRANT (SELECT, INSERT ON TABLES)  ON TAGS module=Sales TO Principal 1
GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 1
GRANT (SELECT, INSERT ON TABLES)  ON TAGS module=Customers TO Principal 1
GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Orders TO Principal 2
GRANT (SELECT, INSERT ON TABLES)  ON TAGS module=Orders TO Principal 2
GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 3
GRANT (SELECT, INSERT ON TABLES)  ON TAGS module=Customers TO Principal 3
```

**まとめ – 結果として得られたリソースに対するアクセス許可**  
以下の表は、上記の図のデータベースとテーブルに割り当てられた LF タグと、図の中でプリンシパルに付与された LF タグを前提とした、プリンシパルが持つデータベースとテーブルに対する Lake Formation 許可のリストです。


| プリンシパル | LF タグを通じて付与された許可 | 
| --- | --- | 
| プリンシパル 1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/tag-based-access-control.html)  | 
| プリンシパル 2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/tag-based-access-control.html)  | 
| プリンシパル 3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/tag-based-access-control.html)  | 

**結論**  
このシンプルな例では、5 つの割り当て操作と 8 つの付与操作を使用することで、データレイク管理者が 17 個の許可を指定できました。何十個ものデータベースと、数百個ものテーブルがあるときは、名前付きリソース方式に勝る LF-TBAC 方式の利点が明白になります。すべてのプリンシパルにすべてのリソースへのアクセス権を付与する必要があり、`n(P)` をプリンシパルの数、`n(R)` をリソースの数とする仮定上のケースでは、以下のようになります。
+ 名前付きリソース方式では、必要な付与数が `n(P)` × `n(R)` 個になります。
+ 単一の LF タグを使用する LF-TBAC 方式では、プリンシパルへの付与とリソースへの割り当ての合計数が `n(P)` \$1 `n(R)` 個になります。

**関連情報**  
[メタデータアクセスコントロールのための LF タグの管理](managing-tags.md)
[LF-TBAC 方式を使用したデータレイク許可の付与](granting-catalog-perms-TBAC.md)

**Topics**
+ [Lake Formation のタグベースのアクセス制御の仕組み](#how-TBAC-works)
+ [メタデータアクセスコントロールのための LF タグの管理](managing-tags.md)
+ [メタデータアクセスコントロールのための LF タグ式の管理](managing-tag-expressions.md)
+ [LF タグ値のアクセス許可の管理](TBAC-granting-tags.md)

# メタデータアクセスコントロールのための LF タグの管理
<a name="managing-tags"></a>

Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方式を使用して、データカタログオブジェクト (カタログ、データベース、テーブル、および列) をセキュリティで保護するには、LF タグを作成し、それらをリソースに割り当てて、LF タグアクセス許可をプリンシパルに付与します。

LF タグをデータカタログオブジェクトに割り当てたり、アクセス許可をプリンシパルに付与したりする前に、LF タグを定義する必要があります。LF タグを作成できるのは、データレイク管理者または LF タグ作成者アクセス許可を持つプリンシパルのみです。

**LF タグ作成者**  
LF タグ作成者は、LF タグを作成および管理するアクセス許可を持つ非管理者プリンシパルです。データレイク管理者は、Lake Formation コンソールまたは CLI を使用して LF タグ作成者を追加できます。LF タグ作成者には、LF タグを更新および削除したり、LF タグをリソースに割り当てたり、他のプリンシパルに LF タグアクセス許可と LF タグ値アクセス許可を付与したりするための暗黙の Lake Formation アクセス許可があります。

LF タグ作成者のロールにより、データレイク管理者はタグキーや値の作成や更新などのタグ管理タスクを管理者以外のプリンシパルに委任できます。データレイク管理者は LF タグ作成者に付与可能な `Create LF-Tag` アクセス許可を付与することもできます。その後、LF タグ作成者は、LF タグを作成するアクセス許可を他のプリンシパルに付与できます。

 LF タグに対する次の 2 種類のアクセス許可を付与できます。
+ LF タグアクセス許可 - `Create LF-Tag`、`Alter`、および `Drop`。これらのアクセス許可は、LF タグの作成、更新、および削除に必要です。

  データレイク管理者と LF タグ作成者は、作成した LF タグに対するこれらのアクセス許可を暗黙的に持ち、これらのアクセス許可をプリンシパルに明示的に付与し、データレイク内のタグを管理できます。
+ LF タグのキーと値のペアのアクセス許可 - `Assign`、`Describe`、および `Grant with LF-Tag expressions`。これらのアクセス許可は、LF タグをデータカタログオブジェクトに割り当てたり、Lake Formation タグベースのアクセスコントロールを使用してリソースに対するアクセス許可をプリンシパルに付与したりするために必要です。LF タグ作成者は、LF タグを作成するときに、これらのアクセス許可を暗黙的に受け取ります。

`Create LF-Tag` アクセス許可を受け取り、LF タグの作成に成功すると、LF タグ作成者は、LF タグをリソースに割り当てて、LF タグアクセス許可 (`Create LF-Tag`、`Alter`、`Drop`) を管理者以外の他のプリンシパルに付与して、データレイク内のタグを管理できます。Lake Formation コンソール、API、または AWS Command Line Interface () を使用して LF タグを管理できますAWS CLI。

**注記**  
 データレイク管理者は、LF タグの作成、更新、削除、LF タグのリソースへの割り当て、および LF タグアクセス許可のプリンシパルへの付与を行う暗黙的な Lake Formation アクセス許可を持っています。

ベストプラクティスと考慮事項については、「[Lake Formation のタグベースのアクセスコントロールのベストプラクティスと考慮事項](lf-tag-considerations.md)」を参照してください。

**Topics**
+ [LF タグ作成者の追加](TBAC-adding-tag-creator.md)
+ [LF タグの作成](TBAC-creating-tags.md)
+ [LF タグの更新](TBAC-updating-tags.md)
+ [LF タグの削除](TBAC-deleting-tags.md)
+ [LF タグのリスト化](TBAC-listing-tags.md)
+ [Data Catalog リソースへの LF タグの割り当て](TBAC-assigning-tags.md)
+ [リソースに割り当てられた LF タグの表示](TBAC-view-resource-tags.md)
+ [LF タグが割り当てられているリソースの表示](TBAC-view-tag-resources.md)
+ [LF タグのライフサイクル](#lf-tag-life-cycle)
+ [Lake Formation のタグベースのアクセス制御と IAM の属性ベースのアクセス制御の比較](#TBAC-comparison-ABAC)

**関連情報**  
[LF タグ値のアクセス許可の管理](TBAC-granting-tags.md)
[LF-TBAC 方式を使用したデータレイク許可の付与](granting-catalog-perms-TBAC.md)
[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)

# LF タグ作成者の追加
<a name="TBAC-adding-tag-creator"></a>

 デフォルトでは、データレイク管理者は、LF タグの作成、更新、削除、データカタログオブジェクトへのタグの割り当て、プリンシパルへのタグアクセス許可の付与を行うことができます。タグの作成および管理操作を管理者以外のプリンシパルに委任する場合、データレイク管理者は LF タグ作成者ロールを作成して、Lake Formation `Create LF-Tag` アクセス許可をロールに付与することができます。付与可能な `Create LF-Tag` アクセス許可がある場合、LF タグ作成者は、タグの作成およびメンテナンスタスクを管理者以外の他のプリンシパルに委任できます。

データレイク管理者が LF タグをデータカタログリソースに割り当てるには、自身が作成したものではない LF タグに対する関連付けアクセス許可を、自身に付与することが必要になります。

**注記**  
クロスアカウントアクセス許可の付与には、`Describe` および `Associate` アクセス許可のみを含めることができます。`Create LF-Tag`、`Drop`、`Alter`、および `Grant with LFTag expressions` アクセス許可を別のアカウントのプリンシパルに付与することはできません。

**Topics**
+ [LF タグの作成に必要な IAM アクセス許可](#tag-creator-permissions)
+ [LF タグ作成者の追加](#add-lf-tag-creator)

**関連情報**  
[LF タグ値のアクセス許可の管理](TBAC-granting-tags.md)
[LF-TBAC 方式を使用したデータレイク許可の付与](granting-catalog-perms-TBAC.md)
[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)

## LF タグの作成に必要な IAM アクセス許可
<a name="tag-creator-permissions"></a>

 Lake Formation のプリンシパルが LF タグを作成できるようにアクセス許可を設定する必要があります。LF タグ作成者になる必要があるプリンシパルのアクセス許可ポリシーに、以下のステートメントを追加します。

**注記**  
データレイク管理者は、LF タグの作成、更新、削除、LF タグのリソースへの割り当て、および LF タグのプリンシパルへの付与を行う暗黙的な Lake Formation アクセス許可を持っていますが、データレイク管理者には以下の IAM アクセス許可も必要です。

詳細については、「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」を参照してください。

```
{
"Sid": "Transformational",
"Effect": "Allow",
    "Action": [
        "lakeformation:AddLFTagsToResource",
        "lakeformation:RemoveLFTagsFromResource",
        "lakeformation:GetResourceLFTags",
        "lakeformation:ListLFTags",
        "lakeformation:CreateLFTag",
        "lakeformation:GetLFTag",
        "lakeformation:UpdateLFTag",
        "lakeformation:DeleteLFTag",
        "lakeformation:SearchTablesByLFTags",
        "lakeformation:SearchDatabasesByLFTags"
     ]
 }
```

リソースに LF タグを付与し、プリンシパルに LF タグを付与するプリンシパルは、`CreateLFTag`、`UpdateLFTag`、および `DeleteLFTag` 許可を除き、同じ許可を持っている必要があります。

## LF タグ作成者の追加
<a name="add-lf-tag-creator"></a>

LF タグ作成者は、LF タグの作成、タグのキーと値の更新、タグの削除、データカタログリソースへのタグの関連付け、および LF-TBAC 方法を使用して、プリンシパルへのデータカタログリソースに対するアクセス許可の付与を行うことができます。LF タグ作成者は、これらのアクセス許可をプリンシパルに付与することもできます。

LF タグ作成者ロールは、 AWS Lake Formation コンソール、 API、または AWS Command Line Interface () を使用して作成できますAWS CLI。

------
#### [ console ]

**LF タグ作成者を追加するには**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者としてサインインします。

1. ナビゲーションペインで、**[アクセス許可]** の **[LF タグとアクセス許可]** を選択します。

   **[LF タグとアクセス許可]** ページで、**[LF タグ作成者]** セクションを選択し、**[LF タグ作成者の追加]** を選択します。  
![\[LF-Tag creator details form with IAM ユーザー selection and permission options.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/add-lf-tag-creator.png)

1. **[LF タグ作成者の追加]** ページで、LF タグの作成に必要なアクセス許可を持つ IAM ロールまたはユーザーを選択します。

1. [`Create LF-Tag` アクセス許可] チェックボックスをオンにします。

1. (オプション) 選択したプリンシパルが `Create LF-Tag` アクセス許可をプリンシパルに付与できるようにするには、[付与可能な `Create LF-Tag` アクセス許可] を選択します。

1. **[Add]** (追加) を選択します。

------
#### [ AWS CLI ]

```
aws lakeformation grant-permissions --cli-input-json file://grantCreate
{
    "Principal": {
        "DataLakePrincipalIdentifier": "arn:aws:iam::123456789012:user/tag-manager"
    },
    "Resource": {
        "Catalog": {}
    },
    "Permissions": [
        "CreateLFTag"
    ],
    "PermissionsWithGrantOption": [
        "CreateLFTag"
    ]
}
```

------

LF タグ作成者ロールで利用できるアクセス許可は次のとおりです。


| アクセス許可 | 説明 | 
| --- | --- | 
| Drop | LF タグに対するこのアクセス許可を持つプリンシパルは、データレイクから LF タグを削除できます。プリンシパルは、LF タグリソースのすべてのタグ値に対する暗黙的な Describe アクセス許可を取得します。 | 
| Alter | LF タグに対するこのアクセス許可を持つプリンシパルは、LF タグにタグ値を追加したり、LF タグからタグ値を削除したりできます。プリンシパルは、LF タグリソースのすべてのタグ値に対する暗黙的な Alter アクセス許可を取得します。 | 
| Describe | LF タグに対するこのアクセス許可を持つプリンシパルは、LF タグをリソースに割り当てるとき、または LF タグに対するアクセス許可を付与するときに、LF タグとその値を表示できます。すべてのキーの値、または特定のキーの値に対する Describe を付与することができます。 | 
| Associate | LF タグに対してこの許可を持つプリンシパルは、LF タグを Data Catalog リソースに割り当てることができます。Associate の付与は、Describe を黙示的に付与します。 | 
| Grant with LF-Tag expression | LF タグに対するこのアクセス許可を持つプリンシパルは、LF タグのキーと値を使用して、データカタログリソースに対するアクセス許可を付与できます。Grant with LF-Tag expression の付与は、Describe を黙示的に付与します。 | 

これらの許可は付与可能です。これらの許可を grant オプションと共に付与されたプリンシパルは、これらを他のプリンシパルに付与できます。

# LF タグの作成
<a name="TBAC-creating-tags"></a>

すべての LF タグは、使用前に Lake Formation で定義される必要があります。LF タグは、キーと、キーに対する 1 つ以上の可能な値で構成されます。

 データレイク管理者が LF タグ作成者ロールに必要な IAM アクセス許可と Lake Formation アクセス許可を設定したら、プリンシパルは LF タグを作成できます。LF タグ作成者は、LF タグの任意のタグ値を更新または削除したり、LF タグを削除したりする暗黙的なアクセス許可を取得します。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して LF タグを作成できますAWS CLI。

------
#### [ Console ]

**LF タグを作成するには**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   LF タグ作成者アクセス許可を持つプリンシパルまたはデータレイク管理者としてサインインします。

1. ナビゲーションペインの **[アクセス許可]** で、**[LF タグとアクセス許可]** の **[LF タグ]** を選択します。

   **[LF-Tags]** (LF タグ) ページが表示されます。  
![\[このページには、[キー]、[値]、[所有者アカウント ID]、[LF タグアクセス許可] という列見出しを持つ 4 列のテーブルがあります。テーブルには 2 つの行があります。テーブルの上には、[削除] (グレー表示)、[編集] (グレー表示)、[アクセス許可を付与] (グレー表示)、[タグを追加] という 4 つのボタンが水平に配置されています。このページには、「Find tag」(タグを検索) というプレースホルダーテキストが表示されている検索フィールドもあります。検索フィールドの右側には、左方向ボタンと右方向ボタンの間に値「1」が表示されたページセレクターと、設定アイコンがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/policy-tags-page-2.png)

1. **[Add LF-Tag]** (LF タグを追加) を選択します。

1. **[Add LF-Tag]** (LF タグの追加) ダイアログボックスで、キーと、1 つまたは複数の値を入力します。

   各キーには、少なくとも 1 つの値が必要です。複数の値を入力するには、カンマ区切りのリストを入力してから **[Enter]** キーを押すか、一度に 1 つの値を入力し、入力するたびに **[Add]** (追加) を選択します。許可される値の最大数は 1000 です。

1. **[Add tag]** (タグを追加) を選択します。

------
#### [ AWS CLI ]

**LF タグを作成するには**
+ `create-lf-tag` コマンドを入力します。

  次の例は、キー `module` と値 `Customers` および `Orders` を持つ LF タグを作成します。

  ```
  aws lakeformation create-lf-tag --tag-key module --tag-values Customers Orders
  ```

------

 タグ作成者になると、プリンシパルは、この LF タグに対する `Alter` アクセス許可を取得し、この LF タグの任意のタグ値を更新または削除できます。LF タグ作成者プリンシパルは、この LF タグのタグ値を更新および削除する `Alter` アクセス許可を他のプリンシパルに付与することもできます。

# LF タグの更新
<a name="TBAC-updating-tags"></a>

`Alter` アクセス許可がある LF タグを更新するには、許可されたキー値を追加または削除します。LF タグのキーを変更することはできません。キーを変更するには、LF タグを削除して、必要なキーを持つ LF タグを追加します。値を更新するには、`Alter` アクセス許可のほかに、`lakeformation:UpdateLFTag` IAM アクセス許可も必要です。

LF タグの値を削除するときには、データカタログリソースにその LF タグの値が存在するかどうかのチェックは実行されません。削除された LF タグの値がリソースに関連付けられていた場合、この値はそのリソースで認識されなくなり、そのキーと値のペアに対するアクセス許可が付与されたプリンシパルはアクセス許可を失います。

LF タグの値を削除する前に、オプションで [`remove-lf-tags-from-resource` コマンド](TBAC-assigning-tags.md#remove-tag-command)を使用して、削除する値があるデータカタログリソースから LF タグを削除してから、保持したい値でリソースにタグを付け直すことができます。

データレイク管理者、LF タグ作成者、および LF タグに対する `Alter` アクセス許可を持つプリンシパルのみが、LF タグを更新できます。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して LF タグを更新できますAWS CLI。

------
#### [ Console ]

**LF タグを更新する (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   データレイク管理者、LF タグ作成者、または LF タグに対する `Alter` アクセス許可を持つプリンシパルとしてサインインします。

1. ナビゲーションペインの **[アクセス許可]** で、**[LF タグとアクセス許可]** の **[LF タグ]** を選択します。

1. **[LF タグ]** ページで、LF タグを選択し、**[編集]** を選択します。

1. **[LF タグの編集]** ダイアログボックスで、LF タグの値を追加または削除します。

   複数の値を追加するには、**[Values]** (値) フィールドで、カンマ区切りのリストを入力して **[Enter]** キーを押すか、一度に 1 つの値を入力して、入力するたびに **[Add]** (追加) を選択します。

1. **[Save]** (保存) を選択します。

------
#### [ AWS CLI ]

**LF タグを更新するには (AWS CLI)**
+ `update-lf-tag` コマンドを入力します。以下の引数の 1 つ、または両方を入力します。
  + `--tag-values-to-add`
  + `--tag-values-to-delete`

**Example**  
次の例は、LF タグのキー `level` の値 `vp` を値 `vice-president` に置き換えます。  

```
aws lakeformation update-lf-tag --tag-key level --tag-values-to-add vice-president 
--tag-values-to-delete vp
```

------

# LF タグの削除
<a name="TBAC-deleting-tags"></a>

使用されなくなった LF タグは、削除することができます。データカタログリソースに LF タグが存在するかどうかのチェックは実行されません。削除された LF タグがリソースに関連付けられていた場合、この値はそのリソースで認識されなくなり、その LF タグに対する許可が付与されていたプリンシパルはアクセス許可を失います。

LF タグを削除する前に、オプションで [`remove-lf-tags-from-resource`](TBAC-assigning-tags.md#remove-tag-command) コマンドを使用して、すべてのリソースからその LF タグを削除することができます。

データレイク管理者、LF タグ作成者、および LF タグに対する `Drop` アクセス許可を持つプリンシパルのみが、LF タグを削除できます。プリンシパルが LF タグを削除するには、`Drop` アクセス許可のほかに、`lakeformation:DeleteLFTag` IAM アクセス許可も必要です。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して LF タグを削除できますAWS CLI。

------
#### [ Console ]

**LF タグを削除するには (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   データレイク管理者としてサインインします。

1. ナビゲーションペインの **[アクセス許可]** で、**[LF タグとアクセス許可]** の **[LF タグ]** を選択します。

1. **[LF タグ]** ページで、LF タグを選択し、**[削除]** を選択します。

1. **[タグ環境を削除しますか?]** ダイアログボックスで、削除を確定するには、LF タグのキー値を指定フィールドに入力し、**[削除]** を選択します。

------
#### [ AWS CLI ]

**LF タグを削除するには (AWS CLI)**
+ `delete-lf-tag` コマンドを入力します。削除する LF タグのキーを指定します。  
**Example**  

  次の例は、キー `region` を持つ LF タグを削除します。

  ```
  aws lakeformation delete-lf-tag --tag-key region
  ```

------

# LF タグのリスト化
<a name="TBAC-listing-tags"></a>

`Describe` または `Associate` 許可を持っている LF タグをリストすることができます。LF タグの各キーと共にリストされる値は、アクセス許可を持っている値です。

LF タグ作成者には、作成した LF タグを表示する暗黙的なアクセス許可があります。

データレイク管理者は、ローカル AWS アカウントで定義されたすべての LF タグと、`Describe` および `Associate` 許可が外部アカウントからローカルアカウントに付与されたすべての LF タグを表示することができます。データレイク管理者は、すべての LF タグのすべての値を表示することができます。

 AWS Lake Formation コンソール、API、または () を使用して LF タグを AWS Command Line Interface 一覧表示できますAWS CLI。

------
#### [ Console ]

**LF タグをリストする (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   LF タグ作成者、データレイク管理者、または LF タグに対するアクセス許可を付与され、`lakeformation:ListLFTags` IAM 許可を持つプリンシパルとしてサインインします。

1. ナビゲーションペインの **[アクセス許可]** で、**[LF タグとアクセス許可]** の **[LF タグ]** を選択します。

   **[LF-Tags]** (LF タグ) ページが表示されます。  
![\[このページには、列の見出しが [Key] (キー)、[Values] (値)、および [Owner account ID] (所有者アカウント ID) になっている 3 列の表があります。テーブルには 2 つの行があります。表の上には、ページの再ロード、[Delete] (削除) (グレー表示)、[Edit] (編集) (灰色表示)、および [Add Tag] (タグを追加) の 4 つのボタンが水平に配置されています。このページには、「Find tag」(タグを検索) というプレースホルダーテキストが表示されている検索フィールドもあります。検索フィールドの右側には、左方向ボタンと右方向ボタンの間に値「1」が表示されたページセレクターと、設定アイコンがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/policy-tags-page-2.png)

   **[所有者アカウント ID]** 列をチェックして、外部アカウントからアカウントと共有された LF タグを判別します。

------
#### [ AWS CLI ]

**LF タグをリストする (AWS CLI)**
+ 以下のコマンドを、データレイク管理者、または LF タグに対する許可を付与され、`lakeformation:ListLFTags` IAM 許可を持つプリンシパルとして実行します。

  ```
  aws lakeformation list-lf-tags
  ```

  出力は以下のようになります。

  ```
  {
      "LFTags": [
          {
              "CatalogId": "111122223333",
              "TagKey": "level",
              "TagValues": [
                  "director",
                  "vp",
                  "c-level"
              ]
          },
          {
              "CatalogId": "111122223333",
              "TagKey": "module",
              "TagValues": [
                  "Orders",
                  "Sales",
                  "Customers"
              ]
          }
      ]
  }
  ```

  外部アカウントから付与された LF タグも表示するには、コマンドオプション `--resource-share-type ALL` を含めます。

  ```
  aws lakeformation list-lf-tags --resource-share-type ALL
  ```

  出力は以下のようになります。リストする LF タグがまだあることを示す `NextToken` キーに注意してください。

  ```
  {
      "LFTags": [
          {
              "CatalogId": "111122223333",
              "TagKey": "level",
              "TagValues": [
                  "director",
                  "vp",
                  "c-level"
              ]
          },
          {
              "CatalogId": "111122223333",
              "TagKey": "module",
              "TagValues": [
                  "Orders",
                  "Sales",
                  "Customers"
              ]
          }
      ],
      "NextToken": "eyJleHBpcmF0aW...ZXh0Ijp0cnVlfQ=="
  }
  ```

  引数 `--next-token` を追加してコマンドを繰り返し、残りのローカル LF タグと、外部アカウントから付与された LF タグを表示します。外部アカウントからの LF タグは、常に個別のページに表示されます。

  ```
  aws lakeformation list-lf-tags --resource-share-type ALL 
  --next-token eyJleHBpcmF0aW...ZXh0Ijp0cnVlfQ==
  ```

  ```
  {
      "LFTags": [
          {
              "CatalogId": "123456789012",
              "TagKey": "region",
              "TagValues": [
                  "central",
                  "south"
              ]
          }
      ]
  }
  ```

------
#### [ API ]

Lake Formation に利用できる SDK を使用して、リクエスト元が表示する許可を持っているタグをリストすることができます。

```
import boto3

client = boto3.client('lakeformation')
...

response = client.list_lf_tags(
    CatalogId='string',
    ResourceShareType='ALL',
    MaxResults=50'
)
```

このコマンドは、以下の構造で `dict` オブジェクトを返します。

```
{
    'LFTags': [
        {
            'CatalogId': 'string',
            'TagKey': 'string',
            'TagValues': [
                'string',
            ]
        },
    ],
    'NextToken': 'string'
}
```

------

必要な許可の詳細については、「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」を参照してください。

# Data Catalog リソースへの LF タグの割り当て
<a name="TBAC-assigning-tags"></a>

LF タグを Data Catalog リソース (データベース、テーブル、および列) に割り当てて、それらのリソースへのアクセスを制御できます。リソースにアクセスできるのは、一致する LF タグが付与されたプリンシパル (および名前付きリソース方式でアクセス権が付与されたプリンシパル) のみです。

テーブルがデータベースから LF タグを継承する場合、または列がテーブルからLF タグを継承する場合は、LF タグのキーに新しい値を割り当てることで、継承された値を上書きできます。

リソースに割り当てることができる LF タグの最大数は 50 個です。

**Topics**
+ [リソースに割り当てられたタグの管理に関する要件](#manage-tags-reqs)
+ [LF タグをテーブル列に割り当てる](#assign-tag-column)
+ [LF タグをデータカタログリソースに割り当てる](#assign-tag-catalog-resource)
+ [リソースの LF タグ の更新](#update-tags)
+ [リソースからの LF タグの削除](#remove-tag)

## リソースに割り当てられたタグの管理に関する要件
<a name="manage-tags-reqs"></a>

LF タグを Data Catalog リソースに割り当てるには、以下の要件を満たす必要があります。
+ LF タグに対する Lake Formation の `ASSOCIATE` 許可がある。
+ IAM `lakeformation:AddLFTagsToResource` の許可がある。
+ Glue データベースに対する glue: GetDatabase 許可を持っている。
+ リソース所有者 (作成者) である、リソースに対する `GRANT` オプション付きの `Super` Lake Formation 許可を持っている、または `GRANT` オプション付きの以下の許可を持っている。
  + 同じ AWS アカウントのデータベースの場合: `DESCRIBE`、`CREATE_TABLE`、`ALTER`、および `DROP` 
  + 外部アカウント内のデータベースの場合: `DESCRIBE`、`CREATE_TABLE`、および `ALTER`
  + テーブル (および列) の場合: `DESCRIBE`、`ALTER`、`DROP`、`INSERT`、`SELECT`、および `DELETE`

さらに、LF タグとそれが割り当てられているリソースは、同じ AWS アカウントにある必要があります。

データカタログリソースから LF タグを削除するには、これらの要件を満たすとともに、`lakeformation:RemoveLFTagsFromResource` IAM アクセス許可も持っている必要があります。

## LF タグをテーブル列に割り当てる
<a name="assign-tag-column"></a>

**LF タグをテーブル列に割り当てるには (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   上記の要件を満たすユーザーとしてサインインします。

1. ナビゲーションペインで **[Table]** (テーブル) を選択します。

1. テーブル名を選択します (テーブル名の横にあるオプションボタンではありません)。

1. テーブルの詳細ページの **[Schema]** (スキーマ) セクションで、**[Edit schema]** (スキーマを編集) を選択します。

1. 「**スキーマの編集**」 ページで、1 つまたは複数の列を選択してから、**[LF タグを編集]** を選択します。
**注記**  
列を追加または削除して、新しいバージョンを保存する予定の場合は、最初にそれらを実行してください。その後、LF タグを編集します。

   **[LF タグの編集]** ダイアログボックスが表示され、テーブルから継承された LF タグが表示されます。  
![\[この画像は、[Edit LF-Tags] (LF タグの編集) ダイアログウィンドウのスクリーンショットです。ウィンドウの上部には、2 つの継承されたキーが表示されています。最初の継承されたキーには、「level」(レベル) のキーと「director (inherited)」(ディレクター (継承)) の値があります。2 番目の継承されたキーには、「module」(レベル) のキーと「Orders (inherited)」(注文 (継承)) の値があります。これらのフィールドの下に「Assign new LF-Tag」(新しい LF タグを割り当てる) ボタンがあります。その下の右側には、[Cancel] (キャンセル) ボタンと [Save] (保存) ボタンがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/edit-policy-tags-for-columns-2a.png)

1. (オプション) **[Inherited keys]** (継承されたキー) フィールドの横にある**[Values]**(値) リストで、継承された値を上書きする値を選択します。

1. (オプション) **[Assign new LF-Tag]** (新しい LF タグを割り当てる) を選択します。その後、**[Assigned keys]** (割り当てられたキー) でキーを選択し、**[Values]** (値) でキーの値を選択します。  
![\[この画像は、[Edit LF-Tags] (LF タグの編集) ダイアログウィンドウのスクリーンショットです。ウィンドウの上部には、2 つの継承されたキーが表示されています。最初の継承されたキーには、「level」(レベル) のキーと「director (inherited)」(ディレクター (継承)) の値があります。2 番目の継承されたキーには、「module」(レベル) のキーと「Orders (inherited)」(注文 (継承)) の値があります。このセクションの下には、「Assigned keys」(割り当てられたキー) フィールド、「Values」(値) フィールド、および「Remove」(削除) ボタンのフィールドとコントロールが水平に配置されています。[Assigned keys] (割り当てられたキー) フィールドには、「environment」(環境)というテキストが表示されています。[Values] (値) フィールドはドロップダウンリストで、「Production」(生産) (強調表示) と 「Customers」(顧客) の値が表示されています。[Assigned keys] (割り当てられたキー) フィールドの下に [Assign new LF-Tag] (新しい LF タグを割り当てる) ボタンが表示されています。ウィンドウの右下には、[Cancel] (キャンセル) ボタンと [Save] (保存) ボタンがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/edit-policy-tags-for-columns-2b.png)

1. (オプション) **[新しい LF タグを割り当てる]** を再度選択して、別の LF タグを追加します。

1. **[Save]** (保存) を選択します。

## LF タグをデータカタログリソースに割り当てる
<a name="assign-tag-catalog-resource"></a>

------
#### [ Console ]

**LF タグをデータカタログデータベースまたはテーブルに割り当てるには**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   前述の要件を満たすユーザーとしてサインインします。

1. ナビゲーションペインの **[Data catalog]** で、以下のいずれかを実行します。
   + LF タグをデータベースに割り当てるには、**[データベース]** を選択します。
   + LF タグをテーブルに割り当てるには、**[テーブル]** を選択します。

1. データベースまたはテーブルを選択し、**[アクション]** メニューで **[LF タグを編集]** を選択します。

   **[Edit LF-Tags: *resource-name*]** (LF タグの編集: リソース名) ダイアログボックスが表示されます。

   テーブルが格納先のデータベースから LF タグを継承した場合、継承された LF タグがウィンドウに表示されます。それ以外の場合は、「There are no inherited LF-Tags associated with the resource.」(このリソースに、継承された LF タグは関連付けられていません。) というテキストが表示されます。  
![\[この画像は、「Edit LF-Tags: inventory] (LF タグの編集: inventory) ダイアログウィンドウのスクリーンショットです。上部には、「Inherited keys」(継承されたキー) (グレー表示) と「Values」(値) のフィールドがあります。[Inherited keys] (継承されたキー) フィールドには「level」(レベル) の値があり、[Values] (値) フィールドの値は「director (inherited)」(ディレクター (継承)) の値があります。このセクションの下には、「Assigned keys」(割り当てられたキー) フィールド、「Values」(値) フィールド、および「Remove」(削除) ボタンのフィールドとコントロールが水平に配置されています。[Assigned keys] (割り当てられたキー) フィールドには、「module」(モジュール)というテキストが表示されています。[Values] (値) フィールドはドロップダウンリストで、「Orders」(注文)、「Sales」(売上)、および「Customers」(顧客) (強調表示) の値が表示されています。[Assigned keys] (割り当てられたキー) フィールドの下に [Assign new LF-Tag] (新しい LF タグを割り当てる) ボタンがあります。ウィンドウの右下には、[Cancel] (キャンセル) ボタンと [Save] (保存) ボタンがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/edit-policy-tags-for-tables-2.png)

1. (オプション) テーブルに継承された LF タグがある場合、**[継承されたキー]** フィールドの横の **[値]** リストで、継承された値をオーバーライドする値を選択することができます。

1. 新しい LF タグを割り当てるには、以下の手順を実行します。

   1. **[Assign new LF-Tag]** (新しい LF タグを割り当てる) を選択します。

   1. **[割り当てられたキー]** フィールドで LF タグのキーを選択し、**[値]** フィールドで値を選択します。

   1. (オプション) **[新しい LF タグを割り当てる]** を再度選択して、追加の LF タグを割り当てます。

1. **[Save]** (保存) を選択します。

------
#### [ AWS CLI ]

**LF タグをデータカタログリソースに割り当てるには**
+ `add-lf-tags-to-resource` コマンドを実行します。

  次の例は、LF タグ `module=orders` をデータベース `erp` 内のテーブル `orders` に割り当てます。これは、`--lf-tags` 引数にショートカット構文を使用しています。`--lf-tags` の `CatalogID` プロパティはオプションです。指定されない場合は、リソース (この場合はテーブル) のカタログ ID が使用されます。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "Table": {"DatabaseName":"erp", "Name":"orders"}}' --lf-tags  CatalogId=111122223333,TagKey=module,TagValues=orders
  ```

  以下は、コマンドが成功した場合の出力です。

  ```
  {
      "Failures": []
  }
  ```

  次の例は、2 つの LF タグを `sales` テーブルに割り当てて、`--lf-tags` 引数に JSON 構文を使用します。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "Table": {"DatabaseName":"erp", "Name":"sales"}}' --lf-tags '[{"TagKey": "module","TagValues": ["sales"]},{"TagKey": "environment","TagValues": ["development"]}]'
  ```

  次の例は、LF タグ `level=director` をテーブル `sales` の `total` 列に割り当てます。

  ```
  aws lakeformation add-lf-tags-to-resource --resource '{ "TableWithColumns": {"DatabaseName":"erp", "Name":"sales", "ColumnNames":["total"]}}' --lf-tags TagKey=level,TagValues=director
  ```

------

## リソースの LF タグ の更新
<a name="update-tags"></a>

**データカタログリソースの LF タグを更新するには (AWS CLI)**
+ 前の手順で説明したように、`add-lf-tags-to-resource` コマンドを使用します。

  既存の LF タグと同じキーを持つが、値は異なるという LF タグを追加すると、既存の値が更新されます。

## リソースからの LF タグの削除
<a name="remove-tag"></a><a name="remove-tag-command"></a>

**データカタログリソースの LF タグを削除するには (AWS CLI)**
+ `remove-lf-tags-from-resource` コマンドを実行します。

  親データベースから継承された値をオーバーライドする LF タグの値がテーブルにある場合、テーブルからその LF タグを削除すると、継承された値が復元されます。この動作は、テーブルから継承されたキーの値を上書きする列にも該当します。

  以下の例では、`sales` のテーブルの `total` の列から LF タグ `level=director` を削除します。`--lf-tags` の `CatalogID` プロパティはオプションです。指定されない場合は、リソース (この場合はテーブル) のカタログ ID が使用されます。

  ```
  aws lakeformation remove-lf-tags-from-resource 
  --resource ' { "TableWithColumns":  
  { "DatabaseName": "erp",  "Name": "sales",  "ColumnNames":[ "total"]}}' 
  --lf-tags  CatalogId=111122223333,TagKey=level,TagValues=director
  ```

# リソースに割り当てられた LF タグの表示
<a name="TBAC-view-resource-tags"></a>

データカタログリソースに割り当てられた LF タグを表示できます。LF タグを表示するには、それに対する `DESCRIBE` または `ASSOCIATE` アクセス許可が必要です。

------
#### [ Console ]

**リソースに割り当てられた LF タグを表示するには (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   データレイク管理者、リソース所有者、またはリソースに対する Lake Formation 許可を付与されたユーザーとしてサインインします。

1. ナビゲーションペインの **[Data catalog]** (データカタログ) 見出しの下で、以下のいずれかを実行します。
   + データベースに割り当てられた LF タグを表示するには、**[データベース]** を選択します。
   + テーブルに割り当てられた LF タグを表示するには、**[テーブル]** を選択します。

1. **[Tables]** (テーブル) または **[Databases]** (データベース) ページで、データベースまたはテーブルの名前を選択します。次に、詳細ページで、**[LF-Tags]** セクションまでスクロールダウンします。

   次のスクリーンショットは、`retail` データベースに含まれる `customers` テーブルに割り当てられた LF タグを示しています。`module` LF タグはデータベースから継承されます。`credit_limit` 列には `level=vp` LF タグが割り当てられています。  
![\[この画像は、customers テーブルの詳細ページにある LF タグセクションのスクリーンショットです。[LF-Tag] セクションには、[Resource] (リソース)、[Key] (キー)、[Value] (値)、および [Inherited from] (継承元) の列があるテーブルが含まれています。テーブルには 3 つの行があります。表の上には、「Find tags」(タグを検索) というプレースホルダーテキストが表示されたテキスト入力フィールドと、[Edit tags] (タグを編集) ボタンがあります。画像の上に表示されている文章は、スクリーンショットに表示されているテーブルの値を説明しています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/tags-for-resource-2.png)

------
#### [ AWS CLI ]

**リソースに割り当てられた LF タグを表示するには (AWS CLI)**
+ 以下のようなコマンドを入力します。

  ```
  aws lakeformation get-resource-lf-tags --show-assigned-lf-tags --resource '{ "Table": {"CatalogId":"111122223333", "DatabaseName":"erp", "Name":"sales"}}'
  ```

  このコマンドは、以下の出力を返します。

  ```
  {
      "TableTags": [
          {
              "CatalogId": "111122223333",
              "TagKey": "module",
              "TagValues": [
                  "sales"
              ]
          },
          {
              "CatalogId": "111122223333",
              "TagKey": "environment",
              "TagValues": [
                  "development"
              ]
          }
      ],
      "ColumnTags": [
          {
              "Name": "total",
              "Tags": [
                  {
                      "CatalogId": "111122223333",
                      "TagKey": "level",
                      "TagValues": [
                          "director"
                      ]
                  }
              ]
          }
      ]
  }
  ```

  この出力には、明示的に割り当てられた LF タグのみが表示され、継承されたものは表示されません。継承された LF タグを含め、すべての列のすべての LF タグを表示するには、`--show-assigned-lf-tags` オプションを削除します。

------

# LF タグが割り当てられているリソースの表示
<a name="TBAC-view-tag-resources"></a>

特定の LF タグのキーが割り当てられているすべてのデータカタログリソースを表示できます。これを実行するには、以下の Lake Formation 許可が必要です。
+ LF タグに対する `Describe` または `Associate`。
+ リソースに対する `Describe`、またはその他 Lake Formation 許可。

さらに、次の AWS Identity and Access Management (IAM) アクセス許可が必要です。
+ `lakeformation:SearchDatabasesByLFTags`
+ `lakeformation:SearchTablesByLFTags`

------
#### [ Console ]

**LF タグが割り当てられているリソースを表示するには (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   データレイク管理者として、または前述の要件を満たすユーザーとしてサインインします。

1. ナビゲーションペインの **[アクセス許可]** で、**[LF タグとアクセス許可]** の **[LF タグ]** を選択します。

1. LF タグのキーを選択します (キー名の横にあるオプションボタンではありません)。

   LF タグの詳細ページに、LF タグが割り当てられているリソースのリストが表示されます。  
![\[この画像は、「module」というキーの LF タグ詳細ページのスクリーンショットです。LF タグの詳細ページには 2 つのセクションがあります。上部のセクションには LF タグのキーと値が表示されています。下部のセクションには、[キー]、[値]、[リソースタイプ]、および [リソース] の列がある表に、LF タグに関連付けられているリソースが表示されています。テーブルには 12 個の行ありますが、スクリーンショットには 7 行のみが表示されています。これらのテーブル行は、LF タグがデータベース、そのデータベース内の 2 つのテーブル、および継承によってそれらのテーブルの列に割り当てられていることを示しています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/resources-on-tags-2.png)

------
#### [ AWS CLI ]

**LF タグが割り当てられているリソースを表示するには**
+ `search-tables-by-lf-tags` または `search-databases-by-lf-tags` のコマンドを実行します。  
**Example**  

  次の例は、`level=vp` LF タグが割り当てられたテーブルと列をリストします。リストされた各テーブルと列について、検索式だけでなく、テーブルまたは列に割り当てられたすべての LF タグが出力されます。

  ```
  aws lakeformation search-tables-by-lf-tags --expression TagKey=level,TagValues=vp
  ```

------

必要な許可の詳細については、「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」を参照してください。

## LF タグのライフサイクル
<a name="lf-tag-life-cycle"></a>

1. LFタグ作成者のマイケルが LF タグ `module=Customers` を作成します。

1. マイケルは LF タグに対する `Associate` をデータエンジニアであるエデュアルドに付与します。`Associate` の付与は、`Describe` を黙示的に付与します。

1. マイケルはテーブル `Custs` に対する grant オプション付きの `Super` をエデュアルドに付与して、エデュアルドがそのテーブルに LF タグを割り当てることができるようにします。詳細については、「[Data Catalog リソースへの LF タグの割り当て](TBAC-assigning-tags.md)」を参照してください。

1. エデュアルドは LF タグ `module=customers` をテーブル `Custs` に割り当てます。

1. マイケルがデータエンジニアであるサンドラに以下の付与を行います (疑似コードを使用)。

   ```
   GRANT (SELECT, INSERT ON TABLES) ON TAGS module=customers TO Sandra WITH GRANT OPTION
   ```

1. サンドラがデータアナリストであるマリアに以下の付与を行います。

   ```
   GRANT (SELECT ON TABLES) ON TAGS module=customers TO Maria
   ```

   マリアが `Custs` テーブルにクエリを実行できるようになります。

**関連情報**  
[メタデータのアクセスコントロール](access-control-metadata.md)

## Lake Formation のタグベースのアクセス制御と IAM の属性ベースのアクセス制御の比較
<a name="TBAC-comparison-ABAC"></a>

属性ベースのアクセス制御 (ABAC) は、属性に基づいてアクセス許可を定義する認可戦略です。では AWS、これらの属性は*タグ*と呼ばれます。IAM エンティティ (ユーザーまたはロール) を含む IAM リソースと AWS リソースにタグをアタッチできます。IAM プリンシパルに対して、単一の ABAC ポリシー、または少数のポリシーのセットを作成できます。これらの ABAC ポリシーは、プリンシパルのタグがリソースタグと一致するときに操作を許可するように設計することができます。ATBAC は、急成長する環境や、ポリシー管理が煩雑になる状況で役に立ちます。

クラウドセキュリティチームとガバナンスチームは、Amazon S3 バケット、Amazon EC2 インスタンス、および ARN で参照できるすべてのリソースを含めたすべてのリソースに対するアクセスポリシーとセキュリティ許可を定義するために IAM を使用します。IAM ポリシーは、例えば Amazon S3 バケット、プレフィックスレベル、またはデータベースレベルでアクセスを許可または拒否するために、データレイクリソースに対する広範な (粗粒度の) 許可を定義します。IAM ABAC の詳細については、*IAM ユーザーガイド*の[「ABAC とは AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)」を参照してください。

例えば、`project-access` タグキーを使用して 3 つのロールを作成できます。最初のロールのタグ値を `Dev`、2 番目を `Marketing`、3 番目を `Support` に設定します。適切な値を持つタグをリソースに割り当てます。そうすることで、`project-access` に関してロールとリソースが同じ値でタグ付けされているときにアクセスを許可する単一のポリシーを使用できます。

データガバナンスチームは、特定のデータレイクリソースに対するきめ細かな許可を定義するために Lake Formation を使用します。LF タグはデータカタログリソース (データベース、テーブル、および列) に割り当てられ、プリンシパルに付与されます。リソースの LF タグと一致する LF タグを持つプリンシパルは、そのリソースにアクセスできます。Lake Formation 許可は IAM 許可に次ぐ二次的なものです。例えば、IAM アクセス許可がユーザーにデータレイクへのアクセスを許可していない場合、プリンシパルとリソースの LF タグが一致する場合でも、Lake Formation はそのデータレイク内のリソースへのアクセスをそのユーザーに付与しません。

Lake Formation のタグベースのアクセス制御 (LF-TBAC) は、IAM ABAC と連動して Lake Formation のデータとリソースに追加の許可レベルを提供します。
+ **Lake Formation TBAC 許可は、イノベーションとともにスケールします。**新しいリソースへのアクセスを許可するために、管理者が既存のポリシーを更新する必要はありません。例えば、Lake Formation 内で特定のデータベースへのアクセスを提供するために `project-access` タグでの IAM ABAC 戦略を使用するとします。LF-TBAC を使用することで、LF タグ`Project=SuperApp` は特定のテーブルや列に 割り当てられ、同じ LF タグがそのプロジェクトのデベロッパーに付与されます。デベロッパーは IAM を通じてデータベースにアクセスでき、LF-TBAC 許可はこのデベロッパーに特定のテーブル、またはテーブル内の列への追加のアクセス権を付与します。新しいテーブルがプロジェクトに追加される場合、Lake Formation 管理者は、新しいテーブルにタグを割り当てて、デベロッパーにそのテーブルへのアクセス権が付与されるようするだけで済みます。
+ **Lake Formation TBAC では、必要な IAM ポリシーが少なくなります。**ユーザーは Lake Formation リソースに対する高レベルのアクセス権を付与するために IAM ポリシーを使用し、より精密なデータアクセスの管理のために Lake Formation TBAC を使用するので、作成する IAM ポリシーが少なくなります。
+ **Lake Formation TBAC を使用することで、チームのより迅速な変化と成長が可能になります。**これは、新しいリソースの許可が属性に基づいて自動的に付与されるためです。例えば、新しいデベロッパーがプロジェクトに参加する場合、IAM ロールをユーザーに関連付けてから、必要な LF タグをユーザーに割り当てることで、このデベロッパーにアクセス権を簡単に付与できます。新しいプロジェクトをサポートするためや、新しい LF タグを作成するために IAM ポリシーを変更する必要はありません。
+ **Lake Formation TBAC を使用することで、よりきめ細かな許可が可能になります。**IAM ポリシーは、Data Catalog のデータベースやテーブルなどのトップレベルリソースへのアクセス権を付与します。**Lake Formation TBAC** を使用することで、特定のデータ値が含まれる特定のテーブルやカラムにアクセス権を付与することができます。

**注記**  
IAM タグと LF タグは同じではありません。これらのタグは置き換え可能ではありません。LF タグは Lake Formation アクセス許可を付与するために使用され、IAM タグは IAM ポリシーを定義するために使用されます。

# メタデータアクセスコントロールのための LF タグ式の管理
<a name="managing-tag-expressions"></a>

 LF タグ式は、 AWS Glue Data Catalog リソースに対するアクセス許可を付与するために使用される 1 つ以上の LF タグ (キーと値のペア) で構成される論理式です。LF タグ式を使用すると、メタデータタグに基づいてデータリソースへのアクセスを管理するルールを定義できます。これらの式を保存して複数のアクセス許可で再利用できるため、一貫性が確保され、タグオントロジーへの経時的な変更を簡単に管理できます。

特定の LF タグ式内では、タグキーは AND オペレーションを使用して結合され、値は OR オペレーションを使用して結合されます。例えば、タグ式 `content_type:Sales AND location:US` は、米国の売上データに関連するリソースを表します。

 AWS アカウントでは、最大 1000 個の LF タグ式を作成できます。これらの式は、メタデータタグに基づいてアクセス許可を管理するための柔軟でスケーラブルな方法を提供し、承認されたユーザーまたはアプリケーションのみが、定義されたタグルールに基づいて特定のデータリソースにアクセスできるようにします。

LF タグ式には以下のメリットがあります。
+ **再利用性 **– LF タグ式を定義して保存することで、他のリソースやプリンシパルにアクセス許可を割り当てるときに、同じ式を手動でレプリケートする必要がなくなります。
+ **整合性 **– 複数のアクセス許可の付与で LF タグ式を再利用することで、アクセス許可の付与と管理の一貫性を確保できます。
+ **タグオントロジー管理** – LF タグ式は、個々のアクセス許可付与を変更する代わりに保存された式を更新できるため、時間の経過に伴うタグオントロジーへの変更を管理するのに役立ちます。

タグベースのアクセスコントロールに関する詳細については、「[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)」を参照してください。

**LF タグ式作成者**  
LF タグ式作成者は、LF タグを作成および管理するアクセス許可を持つプリンシパルです。データレイク管理者は、Lake Formation コンソール、CLI、API、または SDK を使用して LF タグ式作成者を追加できます。LF タグ式作成者には、LF タグ式を作成、更新、削除し、LF タグ式アクセス許可を他のプリンシパルに付与する暗黙的な Lake Formation アクセス許可があります。

データレイク管理者ではない LF タグ式作成者は、作成した式に対してのみ暗黙的な `Alter`、`Drop`、`Describe`、および `Grant with LF-Tag expression` アクセス許可を受け取ります。

データレイク管理者は LF タグ式作成者に付与可能な `Create LF-Tag expression` アクセス許可を付与することもできます。その後、LF タグ式作成者は、LF タグ式を作成するアクセス許可を他のプリンシパルに付与できます。

**Topics**
+ [LF タグ式の作成に必要な IAM アクセス許可](#tag-expression-creator-permissions)
+ [LF タグ式作成者を追加する](#add-lf-tag-expression-creator)
+ [LF タグ式の作成](TBAC-creating-tag-expressions.md)
+ [LF タグ式の更新](TBAC-updating-expressions.md)
+ [LF タグ式の削除](TBAC-deleting-expressions.md)
+ [LF タグ式の一覧表示](TBAC-listing-expressions.md)

**関連情報**  
[LF タグ値のアクセス許可の管理](TBAC-granting-tags.md)
[LF-TBAC 方式を使用したデータレイク許可の付与](granting-catalog-perms-TBAC.md)
[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)

## LF タグ式の作成に必要な IAM アクセス許可
<a name="tag-expression-creator-permissions"></a>

 Lake Formation のプリンシパルが LF タグ式を作成できるようにアクセス許可を設定する必要があります。LF タグ式作成者になる必要があるプリンシパルのアクセス許可ポリシーに、以下のステートメントを追加します。

**注記**  
データレイク管理者は、LF タグと LF タグ式の作成、更新、削除、LF タグのリソースへの割り当て、プリンシパルへの LF タグと LF タグ式の付与を行う暗黙的な Lake Formation アクセス許可を持っていますが、データレイク管理者には以下の IAM アクセス許可も必要です。

詳細については、「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」を参照してください。

```
{
"Sid": "Transformational",
"Effect": "Allow",
    "Action": [
        "lakeformation:AddLFTagsToResource",
        "lakeformation:RemoveLFTagsFromResource",
        "lakeformation:GetResourceLFTags",
        "lakeformation:ListLFTags",
        "lakeformation:CreateLFTag",
        "lakeformation:GetLFTag",
        "lakeformation:UpdateLFTag",
        "lakeformation:DeleteLFTag",
        "lakeformation:SearchTablesByLFTags",
        "lakeformation:SearchDatabasesByLFTags",
        "lakeformation:CreateLFTagExpression",
        "lakeformation:DeleteLFTagExpression",
        "lakeformation:UpdateLFTagExpression",
        "lakeformation:GetLFTagExpression",
        "lakeformation:ListLFTagExpressions",
        "lakeformation:GrantPermissions",
        "lakeformation:RevokePermissions",
        "lakeformation:BatchGrantPermissions",
        "lakeformation:BatchRevokePermissions"
     ]
 }
```

## LF タグ式作成者を追加する
<a name="add-lf-tag-expression-creator"></a>

LF タグ式作成者は、再利用可能な LF タグ式の作成と保存、タグのキーと値の更新、式の削除、LF-TBAC 方式を使用したプリンシパルへのデータカタログリソースに対するアクセス許可の付与を行うことができます。LF タグ式作成者は、これらのアクセス許可をプリンシパルに付与することもできます。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して、LF タグ式作成者ロールを作成できますAWS CLI。

------
#### [ console ]

**LF タグ式作成者を追加するには**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   データレイク管理者としてサインインします。

1. ナビゲーションペインで、**[アクセス許可]** の **[LF タグとアクセス許可]** を選択します。

1. **[LF タグ式]** タブを選択します。

1. **[LF タグ式作成者]**セクションで、**[LF タグ式作成者を追加]** を選択します。  
![\[Form to add LF-Tag expression creators with IAM ユーザー selection and permissions.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/add-lf-tag-expression-creator.png)

1. 「**LF タグ式作成者を追加**」ページで、LF タグ式の作成に必要なアクセス許可を持つ IAM ロールまたはユーザーを選択します。

1. [`Create LF-Tag expression` アクセス許可] チェックボックスにチェックを入れます。

1. (オプション) 選択したプリンシパルが `Create LF-Tag expression` アクセス許可をプリンシパルに付与できるようにするには、[付与可能な `Create LF-Tag expression` アクセス許可] を選択します。

1. **[Add]** (追加) を選択します。

------
#### [ AWS CLI ]

```
aws lakeformation grant-permissions --cli-input-json file://grantCreate
{
    "Principal": {
        "DataLakePrincipalIdentifier": "arn:aws:iam::123456789012:user/tag-manager"
    },
    "Resource": {
        "Catalog": {}
    },
    "Permissions": [
        "CreateLFTagExpression"
    ],
    "PermissionsWithGrantOption": [
        "CreateLFTagExpression"
    ]
}
```

------

LF タグ式作成者ロールは、LF タグ式を作成、更新、または削除することができます。


| アクセス許可 | 説明 | 
| --- | --- | 
| Create | このアクセス許可を持つプリンシパルは、データレイクに LF タグ式を追加できます。 | 
| Drop | LF タグ式に対するこのアクセス許可を持つプリンシパルは、データレイクから LF タグ式を削除できます。 | 
| Alter | LF タグ式に対するこのアクセス許可を持つプリンシパルは、LF タグ式の式本文を更新できます。 | 
| Describe | LF タグ式に対するこのアクセス許可を持つプリンシパルは、LF タグ式の内容を表示できます。 | 
| Grant with LF-Tag expression | このアクセス許可により、受信者はデータまたはメタデータにアクセス許可を付与するときに、タグ式をリソースとして使用できます。Grant with LF-Tag expression の付与は、Describe を黙示的に付与します。 | 
| Super | LF タグ式の場合、Super ではタグ式に対する Describe、Alter、Drop の操作、および他のプリンシパルへのアクセス許可の付与が可能になります。 | 

これらの許可は付与可能です。これらの許可を grant オプションと共に付与されたプリンシパルは、これらを他のプリンシパルに付与できます。

# LF タグ式の作成
<a name="TBAC-creating-tag-expressions"></a>

Lake Formation ですべての LF タグを定義し、式の作成に使用する前にデータカタログリソースに割り当てる必要があります。LF タグ式は、キーごとに 1 つ以上のキーと 1 つ以上の可能な値で構成されます。

 データレイク管理者が LF タグ式作成者ロールに必要な IAM アクセス許可と Lake Formation アクセス許可を設定したら、プリンシパルは再利用可能な LF タグ式を作成できます。LF タグ式作成者は、式本文を更新し、LF タグ式を削除するための暗黙的なアクセス許可を取得します。

LF タグ式は、 AWS Lake Formation コンソール、 API、または AWS Command Line Interface () を使用して作成できますAWS CLI。

------
#### [ Console ]

**LF タグ式を作成するには**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   LF タグ式作成者アクセス許可を持つプリンシパルまたはデータレイク管理者としてサインインします。

1. ナビゲーションペインのアクセス**許可**で**、LF タグとアクセス許可を選択します**。

1. **[LF タグ式]** を選択します。「**LF タグ式の追加**」ページが表示されます。  
![\[このページには名前と説明を追加するフィールドと、式本文を選択するためのドロップダウンがあります。ユーザーには、アクセス許可を付与するオプションもあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/add-tag-expression.png)

1. 次の情報を入力します。
   + 名前 - 式の一意の名前を入力します。式名を更新することはできません。
   + 説明 – 式のオプションの説明と式の詳細を入力します。
   + 式 – タグキーとそれに関連する値を指定して式を作成します。式ごとに最大 50 個のキーを追加できます。式本文内のすべてのタグに対して `Grant with LF-Tags` Lake Formation アクセス許可が必要です。

      各キーには、少なくとも 1 つの値が必要です。複数の値を入力するには、カンマ区切りのリストを入力してから **[Enter]** キーを押すか、一度に 1 つの値を入力し、入力するたびに **[Add]** (追加) を選択します。キーごとに許可される値の最大数は 1000 個です。

      Lake Formation は AND/OR ロジックを使用して、式内の複数のキーと値を結合します。単一の (キー: 値のリスト) ペア内では、論理 OR 演算子を使用して値が結合されます。例えば、ペアが (Department : [Sales, Marketing]) の場合、リソースに Sales OR Marketing の値が指定された Department タグがある場合に、タグが一致します。

      複数のキーを指定すると、キーは AND 論理演算子によって結合されます。したがって、完全な式が (Department : [Sales, Marketing]) AND (Location : [US, Canada]) の場合、Sales OR Marketing という値を持つ Department タグと、米国またはカナダという値を持つ Location タグを持つリソースに一致します。以下は複数のキーと値を持つ別の例です。

     LF タグ式: (ContentType : [Video, Audio]) AND (Region : [Europe, Asia]) AND (Department : [Engineering, ProductManagement])。

     この式は、 - 値が Video OR Audio の ContentType タグ AND - 値が Europe OR Asia のリージョンタグ AND - 値が Engineering OR ProductManagement の Department タグを持つリソースと一致します。

    LF タグを使用してデータレイクのアクセス許可を付与するときに、タグ式を保存することもできます。キーと値のペアを選択し、**[新しい式として保存]** オプションを選択します。式を説明する名前を入力します。  
![\[このページには、式本文を選択するフィールドと、名前を入力するファイルがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/save-expression-grant.png)

1.  (オプション) 次に、ユーザー/ロールと、アカウントでユーザー/ロールに付与する式のアクセス許可を選択します。また、付与可能なアクセス許可を選択して、ユーザーがアカウントの他のユーザーにこれらのアクセス許可を付与できるようにします。タグ式にクロスアカウントアクセス許可を付与することはできません。  
![\[このページには、他のプリンシパルに付与するアクセス許可を選択するフィールドが表示されます。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-expression-permissions.png)

1. **[** の追加] を選択します。

------
#### [ AWS CLI ]

**LF タグ式を作成するには**
+ `create-lf-tag-expression` のコマンドを入力します。

  次の例では、値 `Sales` と `Marketing` を持つ `Department` タグと、値 `US` を持つタグ `Location` を使用して LF タグ式を作成します。

  ```
  aws lakeformation create-lf-tag-expression \
  -- name "my-tag-expression" \
  -- catalog-id "123456789012" \
  -- expression '{"Expression":[{"TagKey":"Department","TagValues":["Sales","Marketing"]},{"TagKey":"Location","TagValues":["US"]}]}'
  ```

   この CLI コマンドは、 に新しい LF タグ式を作成します AWS Glue Data Catalog。式を使用すると、データベース、テーブル、ビュー、列などのデータカタログリソースに、関連するタグに基づいてアクセス許可を付与できます。この例では、式は、`Department` キー が値 `Sales` または `Marketing` で、`Location` キー が値 `US` であるリソースと一致します。

------

 プリンシパルは、タグ式作成者 としてこの LF タグ式に対する `Alter` アクセス許可を取得し、式を更新または削除できます。LF タグ作成者プリンシパルは、この式を更新および削除する `Alter` アクセス許可を他のプリンシパルに付与することもできます。

# LF タグ式の更新
<a name="TBAC-updating-expressions"></a>

データレイク管理者と、LF タグ式作成者、LF タグ式に対する `Alter` または `Super` のアクセス許可を持つプリンシパルのみが LF タグ式を更新できます。式を更新するには、`Alter` アクセス許可に加えて、新しい式本文の基礎となるすべてのキーと値に対する `lakeformation:UpdateLFTagExpression` IAM アクセス許可と `Grant with LF-Tag` アクセス許可も必要です。

LF タグ式を更新するには、式で付与された説明、式本文、アクセス許可を更新します。LF タグ式の名前を変更することはできません。名前を変更するには、LF タグ式を削除して、必要なパラメータを持つ LF タグ式を追加します。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して LF タグ式を更新できますAWS CLI。

------
#### [ Console ]

**LF タグ式を更新するには**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、LF タグ作成者、または LF タグに対する `Alter` アクセス許可を持つプリンシパルとしてサインインします。

1. ナビゲーションペインで、[アクセス許可] の**[LF タグとアクセス許可]** を選択します。

1. **[LF タグ式]** タブを選択します。

1. **[LF タグ式]** セクションで、LF タグ式を選択し、次に **[編集]**を選択します。

1. **[LF タグ式を編集]** ダイアログボックスで、説明を更新し、キーと値を追加または削除して式本文を更新します。

   複数の値を追加するには、**[値]** フィールドで、ドロップダウンから値を選択します。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

 Lake Formation の update-lf-tag-expression コマンドを使用すると、既存の LF タグ式を更新できます。

```
aws lakeformation update-lf-tag-expression \
-- name expression_name\
-- description new_description \
-- catalog-id catalog_id \
-- expression '{"Expression": [{"TagKey": "tag_key", "TagValues": ["tag_value1", "tag_value2", ...]}]}'
```

提供されたコマンドのパラメータの意味は次のとおりです。
+ name – 更新する既存の名前付きタグ式の名前。
+ description – 式の新しい説明。

  catalog-id – 名前付きタグ式が存在するデータカタログの ID。
+ expression – 式を更新する新しいタグ式文字列。

------

# LF タグ式の削除
<a name="TBAC-deleting-expressions"></a>

使用しなくなった LF タグ式は削除できます。LF タグ式を使用してデータカタログリソースのプリンシパルにアクセス許可を付与している場合、プリンシパルのアクセス許可は失われます。

データレイク管理者と、LF タグ式作成者、LF タグ式に対する `Drop` のアクセス許可を持つプリンシパルのみが LF タグ式を削除できます。プリンシパルが LF タ式グを削除するには、`Drop` アクセス許可のほかに、`lakeformation:DeleteLFTagExpression` IAM アクセス許可も必要です。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して、LF タグ式を削除できますAWS CLI。

------
#### [ Console ]

**LF タグ式を削除するには (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、LF タグ式作成者、または式を削除する権限を持つプリンシパルとしてサインインします。

1. ナビゲーションペインで、**[アクセス許可]** の **[LF タグとアクセス許可]** を選択します。

1. **[LF タグ式]** タブを選択します。

1. **[LF タグ式]** セクションで、LF タグ式を選択し、**[削除]** を選択します。

1. **[タグ式を削除しますか?]** ダイアログボックスで、削除を確定するには、LF タグ式の名前を指定フィールドに入力し、**[削除]** を選択します。

------
#### [ AWS CLI ]

**LF タグを削除するには (AWS CLI)**
+ `delete-lf-tag-expression` のコマンドを入力します。削除する式名とカタログ ID を指定します。  
**Example**  

  次の例では、ID `123456789012` の データカタログから `my-tag-expression` という名前の LF タグ式を削除します。 AWS CLI 設定と同じアカウントを使用している場合、 `catalog-id`パラメータはオプションです。LF タグ式を削除すると、Lake Formation はその式の関連するアクセス許可レコードをクリーンアップします。これには、削除された式を含む個別のアクセス許可レコードとアクセス許可レコードの集合の両方が含まれます。

  ```
  aws lakeformation delete-lf-tag-expression \
  --name "my-tag-expression" \
  --catalog-id "123456789012"
  ```

------

# LF タグ式の一覧表示
<a name="TBAC-listing-expressions"></a>

 Describe アクセス許可がある LF タグ式を一覧表示することができます。データレイク管理者、LF タグ式作成者、読み取り専用管理者は、自分のアカウント内のすべてのタグ式を暗黙的に表示できます。

 AWS Lake Formation コンソール、API、または () を使用して、LF タグ式を AWS Command Line Interface 一覧表示できますAWS CLI。

------
#### [ Console ]

**LF タグ式を一覧表示するには (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   LF タ式グ作成者、データレイク管理者、または LF タグ式に対するアクセス許可を付与され、`lakeformation:ListLFTagExpressions` IAM 許可を持つプリンシパルとしてサインインします。

1. ナビゲーションペインの **[アクセス許可]** で、**[LF タグとアクセス許可]** を選択します。

1. **[LF タグ式]** タブを選択すると、式が表示されます。このセクションには、式名、付けられているタグへのリンクを含む式自体、式を作成、編集、削除するオプションなど、既存の LF タグ式に関する情報が表示されます。

------
#### [ AWS CLI ]

**LF タグをリストする (AWS CLI)**
+ を使用して LF タグ式を一覧表示するには AWS CLI、list-lf-tag-expressions コマンドを使用できます。リクエスト構文は次のとおりです。

  ```
  aws lakeformation list-lf-tag-expressions \
  -- catalog-id "123456789012" \
  -- max-items "100" \
  -- next-token "next-token"
  ```

   コードの説明は以下のとおりです。
  + `catalog-id` は、 のタグ式を一覧表示するデータカタログの AWS アカウント ID です。
  + `max-items` は、返されるタグ式の最大数を指定します。このパラメータを使用しない場合、デフォルト値は 100 です。
  + `next-token` は、前のリクエストで結果が切り捨てられた場合の継続トークンです。

  レスポンスには、LF タグ式のリストと、該当する場合は次のトークンが含まれます。

------

# LF タグ値のアクセス許可の管理
<a name="TBAC-granting-tags"></a>

LF タグ値の式を管理するために LF タグに対する `Drop`、`Alter` アクセス許可をプリンシパルに付与することができます。プリンシパルが LF タグを表示し、データカタログリソース (データベース、テーブル、列) に割り当てることができるように、LF タグに対する `Describe`、`Associate`、および `Grant with LF-Tag expressions` アクセス許可を付与することもできます。LF タグがデータカタログリソースに割り当てられているときには、Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方法を使用して、これらのリソースをセキュリティで保護できます。詳細については、「[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)」を参照してください。

これらのアクセス許可を grant オプションと共に付与されたプリンシパルは、これらを他のプリンシパルに付与できます。`Grant with LF-Tag expressions`、`Describe`、および `Associate` アクセス許可は、「[LF タグ作成者の追加](TBAC-adding-tag-creator.md#add-lf-tag-creator)」で説明されています。

LF タグに対する `Describe`および の`Associate`アクセス許可を外部 AWS アカウントに付与できます。そうすると、そのアカウントのデータレイク管理者が、アカウント内の他のプリンシパルにこれらの許可を付与できるようになります。外部アカウントのデータレイク管理者が `Associate` アクセス許可を付与したプリンシパルは、アカウントを共有するデータカタログリソースに LF タグを割り当てることができます。

外部アカウントに付与するときは、grant オプションを含める必要があります。

LF タグに対するアクセス許可は、Lake Formation コンソール、API、または AWS Command Line Interface (AWS CLI) を使用して付与することができます。

**Topics**
+ [コンソールを使用した LF-Tag アクセス許可の表示](TBAC-listing-tag-perms-console.md)
+ [コンソールを使用した LF-Tag アクセス許可の付与](TBAC-granting-tags-console.md)
+ [を使用した LF タグのアクセス許可の管理 AWS CLI](TBAC-granting-revoking-tags-cli.md)

詳細については、「[メタデータアクセスコントロールのための LF タグの管理](managing-tags.md)」および「[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)」を参照してください。

# コンソールを使用した LF-Tag アクセス許可の表示
<a name="TBAC-listing-tag-perms-console"></a>

Lake Formation コンソールを使用して、LF タグに付与された許可を表示できます。これを表示するには、LF タグ作成者またはデータレイク管理者であるか、LF タグに対する `Describe` または `Associate` アクセス許可を持ってる必要があります。

**LF タグ許可をリストする (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬)を開きます。

   LF タグ作成者、データレイク管理者、または LF タグに対する `Drop`、`Alter`、`Associate`、または `Describe` 許可が付与されたユーザーとしてサインインします。

1. ナビゲーションペインで、**[アクセス許可]** の **[LF タグとアクセス許可]** を選択し、**[LF タグアクセス許可]** セクションを選択します。

   **[LF タグアクセス許可]** セクションには、プリンシパル、タグキー、値、およびアクセス許可を含むテーブルが表示されます。  
![\[このページには、[Principal] (プリンシパル)、[Principal type] (プリンシパルタイプ)、[Keys] (キー)、[Values] (値)、[Permissions] (許可)、および [Grantable] (付与可能) の列がある許可の表があります。5 つの行があります。各行の左側にラジオボタンがあります。表の上には、検索フィールドと、更新ボタン、[View] (表示) ボタン、[Revoke] (取り消す) ボタン、および [Grant] (付与) ボタンがあります。最初はどの行も選択されていないため、[View] (表示) ボタンと [Revoke] (取り消す) ボタンが無効になっています。最初の行にある値は、Principal=arn:aws:iam::111122223333:user/datalake_admin, Principal type=IAM user, Keys=environment, Values=All values, Permissions=DESCRIBE, Grantable=DESCRIBE です。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/list-tag-permissions-page.png)

# コンソールを使用した LF-Tag アクセス許可の付与
<a name="TBAC-granting-tags-console"></a>

以下の手順では、Lake Formation コンソールの **[LF タグアクセス許可の付与]** ページを使用して LF タグに対するアクセス許可を付与する方法を説明します。このページは、これらのセクションに分けられています。
+ **アクセス許可タイプ** — 付与するアクセス許可のタイプ。
+ **プリンシパル** – アクセス許可を付与する IAM ユーザーもしくはロール、または SAML ユーザーもしくはロール。
+  **LF タグキーと値のペアのアクセス許可** – アクセス許可を付与する LF タグキーと値のペア。
+  **LF タグのアクセス許可** - アクセス許可を付与する LF タグ。
+  **LF タグ式のアクセス許可** – アクセス許可を付与する LF タグ。
+  **[Permissions]** (許可) – 付与する許可。

## **[LF タグアクセス許可の付与]** ページを開く
<a name="tag-start-grant"></a>

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   LF タグ作成者、データレイク管理者、または `Grant` オプションで LF タグアクセス許可または LF タグに対する LF タグのキーと値のペアのアクセス許可が付与されたユーザーとしてサインインします。

1. ナビゲーションペインで、**[LF タグとアクセス許可]** を選択し、**[LF タグアクセス許可]** セクションを選択します。

1. **[Grant permissions]** (アクセス許可の付与) を選択します。

## アクセス許可タイプを指定する
<a name="grant-tag-permission-type"></a>

**[アクセス許可タイプ]** セクションで、アクセス許可タイプを選択します。

LF タグアクセス許可  
**[LF タグアクセス許可]** を選択して、プリンシパルが LF タグ値を更新したり、LF タグを削除したりするのを許可します。

LF タグのキーと値のペアのアクセス許可  
**[LF タグのキーと値のペアのアクセス許可]** を選択して、プリンシパルが LF タグをデータカタログリソースに割り当てたり、LF タグと値を表示したり、データカタログリソースに対する LF タグベースのアクセス許可をプリンシパルに付与したりするのを許可します。  
以下のセクションで使用できるオプションは、**[アクセス許可タイプ]** によって異なります。

LF タグ式のアクセス許可  
**[LF タグ式のアクセス許可]** を選択して、プリンシパルが式を更新または削除できるようにします。

## プリンシパルを指定する
<a name="grant-tags-principals"></a>

**注記**  
LF タグアクセス許可 (`Alter` および `Drop`) を外部アカウントまたは別のアカウントのプリンシパルに付与することはできません。

**[Principals]** (プリンシパル) セクションでプリンシパルタイプを選択して、許可の付与先となるプリンシパルを指定します。

![\[[Principals] (プリンシパル) セクションには、次のテキストを使用した名前が付いている 3 つのタイルが含まれています。各タイルには、オプションボタンとテキストがあります。[IAM users and roles] (IAM ユーザーおよびロール) タイルが選択されており、タイルの下に [IAM users and roles] (IAM ユーザーおよびロール) ドロップダウンリストがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-tags-principals-section.png)


**IAM ユーザーとロール**  
**[IAM users and roles]** (IAM ユーザーおよびロール) リストから、1 人、または複数のユーザーまたはロールを選択します。

**SAML ユーザーとグループ**  
**SAML およびクイックユーザーおよびグループ**の場合は、SAML を介してフェデレーションされたユーザーまたはグループの 1 つ以上の Amazon リソースネーム (ARNs)、またはクイックユーザーまたはグループの ARNs を入力します。各 ARN の後で **[Enter]** キーを押します。  
ARN の構築方法については、「[Lake Formation の許可と取り消し AWS CLI コマンド](lf-permissions-reference.md#perm-command-format)」を参照してください。  
Lake Formation と Quick の統合は、Quick Enterprise Edition でのみサポートされています。

**外部アカウント**  
**AWS アカウント**には、1 つ以上の有効な AWS アカウント IDsを入力します。各 ID の後で **[Enter]** キーを押します。  
組織 ID は、最初の「o-」と、その後に続く 10～32 個の小文字または数字で構成されています。  
組織単位 ID は「ou-」で始まり、その後に 4～32 個の小文字または数字 (OU が含まれるルートの ID) が続きます。この文字列の後には、2 番目の「-」ダッシュと 8～32 個の追加の小文字または数字が続きます。  
IAM プリンシパルの場合は、IAM ユーザーまたはロールの ARN を入力します。

## LF タグを指定する
<a name="grant-tags-tags"></a>

LF タグに対するアクセス許可を付与するには、**[LF タグアクセス許可]** セクションで、アクセス許可を付与する LF タグを指定します。

![\[[LF-Tags] (LF タグ) セクションには 2 行のフィールドが表示されており、各行には、左から右に向かって [Key] (キー) フィールド、[Value] (値) フィールド、および [Remove] (削除) ボタンがあります。[Value] (値) フィールドはドロップダウンリストです。2 行のフィールドの下には、[Add LF-Tag] (LF タグを追加) ボタンがあります。最初の行の [Key] (キー) フィールドには「module」(モジュール) が表示されています。[Value] (値) フィールドの下にはそれぞれ Orders (注文) および Sales (売上) が表示された 2 つの小さなタイルがあり、ユーザーがキーモジュールの値として Orders と Sales を選択したことを示しています。各タイルには X が付いており、クローズボックスのようにクリックしてタイルを削除できます。2 番目の行のフィールドは空です。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-tags-tags-section-2.png)

+ ドロップダウンを使用して、1 つ以上の LF タグを選択します。

## LF タグのキーと値のペアを指定する
<a name="w2aac15b9c27c19c21c15"></a>

1. LF タグのキーと値のペアに対するアクセス許可を付与するには (まず、**[LF タグのキーと値のペアのアクセス許可]** を **[アクセス許可のタイプ]** として選択する必要があります)、**[LF タグのキーと値のペアを追加]** を選択して、LF タグのキーと値を指定するフィールドの最初の行を表示します。  
![\[Interface for adding LF-Tag key-value pairs and setting associated permissions.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/tag-key-value-pair.png)

1. カーソルを **[キー]** フィールドに置き、オプションで入力を開始して選択リストを絞り込んで、LF タグのキーを選択します。

1. **[Values]** (値) リストで、1 つ、または複数の値を選択してから、**[Tab]** (タブ) を押すか、フィールドの外側をクリックまたはタップして、選択した値を保存します。
**注記**  
**[Values]** (値) リストの行のいずれかがフォーカスされている場合は、**[Enter]** キーを押すと、チェックボックスがオンまたはオフになります。

   選択された値は、**[Values]** (値) リストの下にタイルとして表示されます。✖ を選択して値を削除します。**[削除]** を選択して、LF タグ全体を削除します。

1. 別の LF タグを追加するには、もう一度 **[LF タグを追加]** を選択して、前の 2 つのステップを繰り返します。

## LF タグ式を指定する
<a name="w2aac15b9c27c19c21c17"></a>

1. LF タグ式に対するアクセス許可を付与するには、(まず **[LF タグ式のアクセス許可]** を **[アクセス許可タイプ]** として選択する必要があります)。  
![\[Permission type selection interface with LF-Tag expression permissions highlighted.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/tag-expression.png)

1. LF タグ式を選択します。

1. 選択した式は、**[LF タグ式]** リストの下にタイルとして表示されます。✖ を選択して式を削除します。

1. 別の LF タグ式を追加するには、別の式を選択します。

## 許可を指定する
<a name="grant-tags-permissions"></a>

このセクションには、前のステップで選択した [**アクセス許可タイプ]** に基づいて、**[LF タグアクセス許可]** または **[LF-タグ値のアクセス許可]** のいずれかが表示されます。

付与する **[アクセス許可タイプ]** に応じて、**[LF タグアクセス許可]** または **[LF タグのキーと値のペアのアクセス許可]** と付与可能なアクセス許可を選択します。

1. **[LF タグアクセス許可]** で、付与するアクセス許可を選択します。

   **[ドロップ]** および **[変更]** を付与すると、**[説明]** を暗黙的に付与することになります。

   すべてのタグ値に対して、**[変更]** および **[ドロップ]** を付与する必要があります。

1. **[LF タグのキーと値のペアのアクセス許可]** で、付与するアクセス許可を選択します。

   **[Associate]** (関連付け) の付与は、**[Describe]** (記述) を黙示的に付与します。**[LF タグ式による付与]** を選択すると、付与されたユーザーは、LF-TBAC 方法を使用してデータカタログリソースに対するアクセス許可を付与または取り消すことができます。

1. **[LF タグ式アクセス許可]** で、付与するアクセス許可を選択します。

   **[ドロップ]** および **[変更]** を付与すると、**[説明]** を暗黙的に付与することになります。

   **Super** アクセス許可を付与すると、使用可能なすべてのアクセス許可が付与されます。

1. (オプション) **付与可能なアクセス**許可で、付与受信者が AWS アカウントの他のプリンシパルに付与できるアクセス許可を選択します。

1. **[付与]** を選択します。

# を使用した LF タグのアクセス許可の管理 AWS CLI
<a name="TBAC-granting-revoking-tags-cli"></a>

 AWS Command Line Interface (AWS CLI) を使用して、LF タグに対するアクセス許可の付与、取り消し、および一覧表示を行うことができます。

**LF タグアクセス許可を一覧表示するには (AWS CLI)**
+ `list-permissions` コマンドを入力します。これを表示するには、LF タグ作成者またはデータレイク管理者であるか、LF タグに対する `Drop`、`Alter`、`Describe`、`Associate`、`Grant with LF-Tag permissions` アクセス許可を持ってる必要があります。

  以下のコマンドは、アクセス許可を持っているすべての LF タグをリクエストします。

  ```
  aws lakeformation list-permissions --resource-type LF_TAG
  ```

  以下は、すべてのプリンシパルに付与されたすべての LF タグが表示される、データレイク管理者のための出力の例です。非管理ユーザーには、自分に付与された LF タグのみが表示されます。外部アカウントから付与された LF タグアクセス許可は、個別の結果ページに表示されます。それらを表示するには、コマンドの前回の実行から返されたトークンを `--next-token` 引数に指定して、コマンドを繰り返します。

  ```
  {
      "PrincipalResourcePermissions": [
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_admin"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "environment",
                      "TagValues": [
                          "*"
                      ]
                  }
              },
              "Permissions": [
                  "ASSOCIATE"
              ],
              "PermissionsWithGrantOption": [
                  "ASSOCIATE"
              ]
          },
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "module",
                      "TagValues": [
                          "Orders",
                          "Sales"
                      ]
                  }
              },
              "Permissions": [
                  "DESCRIBE"
              ],
              "PermissionsWithGrantOption": []
          },
  ...
      ],
      "NextToken": "eyJzaG91bGRRdWVy...Wlzc2lvbnMiOnRydWV9"
  }
  ```

  特定の LF タグのキーに関するすべてのアクセス許可を一覧表示できます。次のコマンドは、`module` という LF タグに関して付与されたすべてのアクセス許可を返します。

  ```
  aws lakeformation list-permissions --resource-type LF_TAG --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
  ```

  特定の LF タグに関して特定のプリンシパルに付与された LF タグの値を一覧表示することもできます。`--principal` 引数を指定する場合は、`--resource` 引数を指定する必要があります。このため、このコマンドが実質的にリクエストできるのは、特定の LF タグのキーに関して特定のプリンシパルに付与された値のみです。次のコマンドは、これをプリンシパル `datalake_user1` と LF タグのキー `module` について行う方法を示しています。

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

  以下は出力例です。

  ```
  {
      "PrincipalResourcePermissions": [
          {
              "Principal": {
                  "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
              },
              "Resource": {
                  "LFTag": {
                      "CatalogId": "111122223333",
                      "TagKey": "module",
                      "TagValues": [
                          "Orders",
                          "Sales"
                      ]
                  }
              },
              "Permissions": [
                  "ASSOCIATE"
              ],
              "PermissionsWithGrantOption": []
          }
      ]
  }
  ```

**LF タグに対するアクセス許可を付与するには (AWS CLI)**

1. 以下のようなコマンドを入力します。この例は、`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":["*"]}}'
   ```

   `Associate` 許可の付与は、`Describe` 許可を黙示的に付与します。

   次の例では`Associate`、キー を持つ LF タグの外部 AWS アカウント 1234-5678-9012 に`module`グラントオプションを使用して を付与します。これは、`sales` と `orders` の値のみを表示して割り当てる許可を付与します。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=123456789012 --permissions "ASSOCIATE" --permissions-with-grant-option "ASSOCIATE" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["sales", "orders"]}}'
   ```

1. `GrantWithLFTagExpression` 許可の付与は、`Describe` 許可を黙示的に付与します。

   次の例は、キー `module` を持つ LF タグに対する `GrantWithLFTagExpression` を付与オプション付きでユーザーに付与します。データカタログリソースを表示するアクセス許可を付与し、値 `sales` と `orders` のみを使用してアクセス許可を付与するアクセス許可を付与します。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "GrantWithLFTagExpression" --permissions-with-grant-option "GrantWithLFTagExpression" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["sales", "orders"]}}'
   ```

1. 次の例は、キー `module` を持つ LF タグに対する `Drop` アクセス許可を grant オプション付きでユーザーに付与します。LF タグを削除するアクセス許可を付与します。LF タグを削除するには、そのキーのすべての値に対するアクセス許可が必要です。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "DROP" --permissions-with-grant-option "DROP" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
   ```

1. 次の例は、キー `module` を持つ LF タグに対する `Alter` アクセス許可を grant オプション付きでユーザーに付与します。LF タグを削除するアクセス許可を付与します。LF タグを更新するには、そのキーのすべての値に対するアクセス許可が必要です。

   ```
   aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "ALTER" --permissions-with-grant-option "ALTER" --resource '{ "LFTag": {"CatalogId":"111122223333","TagKey":"module","TagValues":["*"]}}'
   ```

**LF タグに対するアクセス許可を取り消すには (AWS CLI)**
+ 以下のようなコマンドを入力します。この例は、`module` キーを持つ LF タグに対する `Associate` 許可をユーザー `datalake_user1` から取り消します。

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

# LF-TBAC 方式を使用したデータレイク許可の付与
<a name="granting-catalog-perms-TBAC"></a>

LF タグに対する `DESCRIBE` と `ASSOCIATE` の Lake Formation 許可をプリンシパルに付与して、プリンシパルが LF タグを表示し、データカタログリソース (データベース、テーブル、ビュー、列) に割り当てるようにできます。LF タグがデータカタログリソースに割り当てられているときには、Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方法を使用して、これらのリソースをセキュリティで保護できます。詳細については、「[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)」を参照してください。

最初は、データレイク管理者のみがこれらの許可を付与できます。データレイク管理者が grant オプションと共にこれらの許可を付与すると、他のプリンシパルがそれらを付与できるようになります。`DESCRIBE` 許可と `ASSOCIATE` 許可は、「[Lake Formation のタグベースのアクセスコントロールのベストプラクティスと考慮事項](lf-tag-considerations.md)」で説明されています。

LF タグに対する `DESCRIBE`および アクセス`ASSOCIATE`許可を外部 AWS アカウントに付与できます。そうすると、そのアカウントのデータレイク管理者が、アカウント内の他のプリンシパルにこれらの許可を付与できるようになります。外部アカウントのデータレイク管理者が `ASSOCIATE` アクセス許可を付与したプリンシパルは、アカウントを共有するデータカタログリソースに LF タグを割り当てることができます。

外部アカウントに付与するときは、grant オプションを含める必要があります。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して、LF タグに対するアクセス許可を付与できますAWS CLI。

**注記**  
S3 Tables カタログでは、次の手順は必要ありません。LF タグを使用すると、既存の S3 Tables カタログを削除して再作成することなく、既存の S3 Tables カタログに対するアクセス許可を付与できます。

**Lake Formation アクセス許可を使用する既存のフェデレーティッドカタログに対する LF タグのサポートを有効にする**

Amazon Redshift や LF タグのサポートがフェデレーティッドカタログで利用可能になる前に作成された Amazon DynamoDB カタログなど、Lake Formation アクセス許可を使用している既存のフェデレーティッドカタログがある場合は、次の手順に従います。

1. 既存のカタログを削除する – `deleteCatalog` API オペレーションを呼び出して、Lake Formation アクセス許可を使用する既存のフェデレーティッドカタログを削除します。

1.  新しいフェデレーティッドカタログを作成する – 新しいカタログを作成し、新しいカタログを既存の名前空間/データ共有にポイントします。

   カタログに新しい名前を使用する – このプロセスでは、LF タグ機能をサポートするように既存のフェデレーティッドカタログを更新します。同じカタログ名を使用する場合は、 AWS サポートチームにお問い合わせください。

**Topics**
+ [データカタログ許可の付与](#granting-cat-perms-TBAC-console)

**関連情報**  
[LF タグ値のアクセス許可の管理](TBAC-granting-tags.md)
[メタデータアクセスコントロールのための LF タグの管理](managing-tags.md)
[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)

## データカタログ許可の付与
<a name="granting-cat-perms-TBAC-console"></a>

Lake Formation コンソールまたは を使用して、Lake Formation タグベースのアクセスコントロール (LF-TBAC) メソッドを使用して、データカタログデータベース、テーブル、ビュー、列に対する Lake Formation アクセス許可 AWS CLI を付与します。

------
#### [ Console ]

以下は、Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方式と Lake Formation コンソールの **[データレイクのアクセス許可を付与]** ページを使用して、許可を付与する方法を説明する手順です。このページは、以下のセクションに分かれています。
+  **プリンシパル** – アクセス許可を付与 AWS アカウント するユーザー、ロール、および 。
+  **[LF-Tags or catalog resources]** (LF タグまたはカタログリソース) – 付与する許可の対象となるデータベース、テーブル、またはリソースリンク。
+  **[Permissions]** (許可) – 付与される Lake Formation 許可。

1. 

**[データレイクのアクセス許可を付与] ページを開きます。**

   [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開き、データレイク管理者として、または 許可オプションを使用して LF-TBAC を通じて Data Catalog リソースに対する Lake Formation アクセス許可を付与されたユーザーとしてサインインします。

   ナビゲーションペインの **[Permissions]** (許可) で **[Data lake permissions]** (データレイクの許可) を選択します。次に、**[Grant]** (付与) を選択します。

1. 

**プリンシパルを指定します。**

    **[Principals]** (プリンシパル) セクションでプリンシパルタイプを選択してから、許可の付与先となるプリンシパルを指定します。  
![\[[プリンシパル] セクションには、次のテキストを使用した名前が付いている 4 つのタイルが含まれています。各タイルには、オプションボタンとテキストがあります。[IAM アイデンティティセンター] タイルが選択されており、タイルの下に [ユーザーとグループ] ドロップダウンリストがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/identity-center-grant-perm.png)  
**IAM ユーザーとロール**  
**[IAM users and roles]** (IAM ユーザーおよびロール) リストから、1 人、または複数のユーザーまたはロールを選択します。  
**IAM アイデンティティセンター **  
**[ユーザーとグループ]** リストから、1 人、または複数のユーザーを選択します。  
**SAML ユーザーとグループ**  
**SAML およびクイックユーザーおよびグループ**の場合は、SAML を介してフェデレーションされたユーザーまたはグループの 1 つ以上の Amazon リソースネーム (ARNs)、またはクイックユーザーまたはグループの ARNs を入力します。各 ARN の後で Enter キーを押します。  
ARN の構築方法については、「[Lake Formation の許可と取り消し AWS CLI コマンド](lf-permissions-reference.md#perm-command-format)」を参照してください。  
Lake Formation と Quick の統合は、Quick Enterprise Edition でのみサポートされています。  
**外部アカウント**  
**AWS アカウント、 AWS 組織**、または **IAM プリンシパル**には、IAM ユーザーまたはロールの 1 つ以上の有効な AWS アカウント IDs、組織 IDs、組織単位 IDs、または ARN を入力します。各 ID の後で **[Enter]** キーを押します。  
組織 ID は、最初の「o-」と、その後に続く 10～32 個の小文字または数字で構成されています。  
組織単位 ID は「ou-」で始まり、その後に 4～32 個の小文字または数字 (OU が含まれるルートの ID) が続きます。この文字列の後には、2 番目の「-」ダッシュと 8～32 個の追加の小文字または数字が続きます。

1. 

**LF タグを指定します。**

   **[LF タグに一致するリソース]** オプションが選択されていることを確認します。**[LF タグのキーと値のペア]** または **[保存された LF タグ式]** を選択します。

   1. **[LF タグのキーと値のペア]** オプションを選択した場合は、キーと値を選択します。

      複数の値を選択する場合は、`OR` 演算子で LF タグ式を作成することになります。これは、LF タグの値のいずれかが Data Catalog リソースに割り当てられた LF タグと一致する場合、そのリソースに対する許可が付与されることを意味します。  
![\[[LF-Tag or catalog resources] (LF タグまたはカタログリソース) セクションには、水平に配置された 2 つのタイルがあり、各タイルにはオプションボタンと説明テキストが含まれています。オプションは、[Resources matched by LF-Tags] (LF タグに一致するリソース) (推奨) と [Named data catalog resources] (名前付きの Data Catalog リソース) です。LF タグに一致するリソースが選択されています。タイルの下には、水平に配置されている [Key] (キー) フィールドと [Value] (値) フィールドがあります。[Key] (キー) フィールドには「module」(モジュール) が表示されており、[Value] (値) フィールドは [Orders] (注文)、[Sales] (売上)、および [Customers] (顧客) の 3 つのエントリが含まれるドロップダウンリストになっています。各エントリには、チェックボックスが関連付けられています。[Customers] (顧客) のチェックボックスがオンになっています。これら 2 つのフィールドの右側には、[Remove] (削除) ボタンがあります。最下部に [Add LF-Tag] (LF タグを追加) ボタンがあり、[Key] (キー) フィールドと [Value] (値) フィールド、および [Remove] (削除) ボタンが含まれる別の行を追加できることを示しています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-data-permissions-tags-2.png)

   1. (オプション) **[LF タグのキーと値のペアを追加]** を再度選択して、別の LF タグを指定します。

      複数の LF タグを指定する場合は、`AND` 演算子で LF タグ式を作成することになります。プリンシパルには、LF タグ式内の各 LF タグに一致する LF タグが Data Catalog リソースに割り当てられている場合にのみ、その Data Catalog リソースに対する許可が付与されます。

   1. 式を再利用するには、**[新しい式として保存]** オプションを選択します。

      式を保存するには `Create LF-Tag expression` が必要です。

      LF タグ式に関する詳細については、「[メタデータアクセスコントロールのための LF タグ式の管理](managing-tag-expressions.md)」を参照してください。

1. 

**許可を指定します。**

   一致するデータカタログリソースに対してプリンシパルに付与する許可を指定します。一致するリソースとは、プリンシパルに付与された LF タグ式の 1 つに一致する LF タグが割り当てられたリソースです。

   一致するデータベース、一致するテーブル、および一致するビューについて付与する許可を指定できます。  
![\[ページの 2 つのセクションが表示されています。[Database permissions] (データベースの許可) セクションには、[Database permissions] (データベースの許可) と [Grantable permissions] (付与可能な許可) のチェックボックスがあります。[Database] (データベース) セクションの下にある [Table permissions] (テーブルの許可) セクションには、[Table permissions] (テーブルの許可) と [Grantable permissions] (付与可能な許可) のチェックボックスが表示されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-TBAC-DB-table-permissions.png)

   **[Database permissions]** (データベースの許可) で、プリンシパルに付与される、一致するデータベースに対するデータベース許可を選択します。

   **[テーブルの許可]** で、プリンシパルに付与される、一致するテーブルとビューに対するテーブルまたはビューのアクセス許可を選択します。

   **[テーブルの許可]** から `Select`、`Describe`、`Drop` 許可を選択してビューに適用することもできます。

1. **[付与]** を選択します。

------
#### [ AWS CLI ]

 AWS Command Line Interface (AWS CLI) および Lake Formation タグベースのアクセスコントロール (LF-TBAC) メソッドを使用して、Data Catalog データベース、テーブル、および列に対する Lake Formation アクセス許可を付与できます。

**AWS CLI および LF-TBAC メソッドを使用したデータレイク許可の付与**
+ `grant-permissions` コマンドを実行します。  
**Example**  

  以下の例は、LF タグ式「`module=*`」(LF タグのキー `module` のすべての値) をユーザー `datalake_user1` に付与します。このユーザーは、一致するすべてのデータベース、つまり、`module` キーと任意の値を持つ LF タグが割り当てられているデータベースに対する `CREATE_TABLE` 許可を持つようになります。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"DATABASE","Expression":[{"TagKey":"module","TagValues":["*"]}]}}' 
  ```  
**Example**  

  以下の例では、LF タグ式「`(level=director) AND (region=west OR region=south)`」をユーザー `datalake_user1` に付与します。このユーザーは、一致するテーブル、つまり `level=director` と (`region=west` または `region=south`) の両方が割り当てられているテーブルに対する grant オプション付きの `SELECT`、`ALTER`、および `DROP` 許可を持つようになります。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" "ALTER" "DROP" --permissions-with-grant-option "SELECT" "ALTER" "DROP" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"TABLE","Expression": [{"TagKey": "level","TagValues": ["director"]},{"TagKey": "region","TagValues": ["west", "south"]}]}}'
  ```  
**Example**  

  次の例では、LF タグ式`module=orders`「」を AWS アカウント 1234-5678-9012 に付与します。付与後、このアカウント内のデータレイク管理者は、そのアカウント内のプリンシパルに「`module=orders`」式を付与できるようになります。そうすると、これらのプリンシパルは、名前付きリソース方式または LF-TBAC 方式のいずれかを使用することで、アカウント 1111-2222-3333 が所有し、アカウント 1234-5678-9012 と共有されるデータベースに対する `CREATE_TABLE` 許可を持つようになります。

  ```
  aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=123456789012 --permissions "CREATE_TABLE" --permissions-with-grant-option "CREATE_TABLE" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"DATABASE","Expression":[{"TagKey":"module","TagValues":["orders"]}]}}'
  ```

------

# 属性ベースのアクセスコントロール
<a name="attribute-based-access-control"></a>

 AWS Lake Formation では、ロールやユーザーなどの IAM エンティティに関連付けられた IAM タグとセッションタグである属性を使用して、カタログ、データベース、テーブル、データフィルターなどの AWS Glue Data Catalog オブジェクトへのアクセスを許可できます。

セッションタグの使用の詳細については、 AWS CLI ユーザーガイドの [assume-role](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/assume-role.html) を参照してください。

属性ベースのアクセスコントロール (ABAC) は、属性に基づいてアクセス許可を定義する認可戦略です。 はこれらの属性*タグ*を AWS 呼び出します。ABAC を使用して、同じアカウント内、またはデータカタログリソース上の別のアカウント内のプリンシパルにアクセスを許可できます。一致する IAM タグまたはセッションタグのキーと値を持つすべての IAM プリンシパルがリソースにアクセスできます。これらの許可を行うには、リソースに対する付与可能なアクセス許可が必要です。

ABAC を使用すると、複数のユーザーに同時にアクセスを許可できます。新しいユーザーが組織に加わると、管理者が特定のロールやアクセス許可を手動で割り当てなくても、ジョブ機能や部門などの属性に基づいてデータへのアクセス権を自動的に決定できます。ABAC は、ロールの代わりに属性を使用することで、さまざまなシステムや環境間でデータアクセスをより合理的で保守しやすい方法で管理できるようにし、最終的にデータガバナンスとコンプライアンスを強化します。

属性の定義の詳細については、「[ABAC 認可で属性に基づいてアクセス許可を定義する](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)」を参照してください。

制限、考慮事項、サポートされている AWS リージョンの詳細については、「」を参照してください[属性ベースのアクセス制御に関する考慮事項、制限、サポートされているリージョン](abac-considerations.md)。

**Topics**
+ [属性を使用してアクセス許可を付与するための前提条件](abac-prerequisites.md)
+ [属性ベースのアクセス制御を使用したアクセス許可の付与](abac-granting-permissions.md)

# 属性を使用してアクセス許可を付与するための前提条件
<a name="abac-prerequisites"></a>

属性ベースのアクセス制御 (ABAC) を使用してアクセス許可を付与するには、次の前提条件を満たす必要があります。
+ **データカタログ****設定**を更新して、データカタログオブジェクトの Lake Formation アクセス許可を有効にします。詳細については、「[デフォルトのアクセス許可モデルを変更する、またはハイブリッドアクセスモードを使用する](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#setup-change-cat-settings)」セクションを参照してください。
+ クロスアカウントバージョン設定を 2 つ以上に設定します。
+ アクセスを必要とする IAM エンティティに[属性をアタッチ](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)します。
+ データレイク管理者または必要なアクセス許可を持つ IAM ユーザーのみが、データカタログオブジェクトへのアクセスを許可できます。必要なアクセス許可の詳細については、「[IAM アクセス許可](https://docs.aws.amazon.com/lake-formation/latest/dg/required-permissions-for-grant.html)」を参照してください。

# 属性ベースのアクセス制御を使用したアクセス許可の付与
<a name="abac-granting-permissions"></a>

このトピックでは、データカタログリソースに対する属性ベースのアクセス許可を付与するために必要な手順について説明します。Lake Formation コンソールまたは コマンドラインインターフェイス (AWS CLI) AWS を使用できます。

## ABAC を使用したアクセス許可の付与 (AWS マネジメントコンソール)
<a name="w2aac15b9c31c19b5b1"></a>

1. Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) を開き、データレイク管理者、リソース作成者、またはリソースに対して**付与可能なアクセス許可**を持つIAM ユーザーとしてサインインします。

1. 次のいずれかを行います。
   + ナビゲーションペインの **[Permissions]** (許可) で **[Data lake permissions]** (データレイクの許可) を選択します。次に、**[Grant]** (付与) を選択します。
   + ナビゲーションペインの**[データカタログ]** で、**[カタログ]** を選択します。次に、**[アクセス許可]** の **[アクション]** メニューからカタログオブジェクト (カタログ、データベース、テーブル、データフィルター) を選択し、**[付与]** を選択します。

1. 「**アクセス許可の付与**」ページで、**[属性別プリンシパル]** を選択します。

1. 属性のキーと値を指定します。複数の値を選択する場合は、`OR` 演算子で属性式を作成することになります。つまり、IAM ロールまたはユーザーに割り当てられた属性タグ値のいずれかが一致した場合、ロール/ユーザーはリソースに対するアクセス許可を取得します。

   複数の属性タグを指定する場合は、`AND` 演算子で属性式を作成することになります。プリンシパルには、属性式内の各属性タグに一致するタグが IAM ロール/ユーザーに割り当てられている場合にのみ、データカタログリソースに対する許可が付与されます。

   コンソールに表示された Cedar ポリシー式を確認します。  
![\[[アクセス許可を付与] ダイアログボックスで、属性式が作成されます。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/abac-grant-permissions.png)

1. アクセス許可の範囲を選択します。被付与者が外部アカウントに属している場合は、**外部アカウント**を選択し、 AWS アカウント ID を入力します。

1. 次に、データカタログアカウントまたは外部アカウントを選択します。アクセス許可の付与を正常に完了するには、リソースに対応する付与可能なアクセス許可が必要です。

1. 一致する属性を持つプリンシパル (ユーザーまたはロール) に実行を許可するアクションを指定します。アクセスは、指定した属性式の少なくとも 1 つに一致するタグと値が割り当てられた IAM エンティティに付与されます。コンソールで Cedar ポリシー式を確認します。Cedar の詳細については、「[Cedar とは」を参照してください。\$1 Cedar Policy Language Reference GuideLink](https://docs.cedarpolicy.com/) を参照してください。

1. 次に、アクセスを許可するデータカタログリソースを選択します。これらのアクセス許可は、カタログ、データベース、テーブル、データフィルターなど、さまざまなデータカタログリソースに対して定義できます。

1. **[付与]** を選択します。

   このアプローチにより、属性に基づいてアクセスを制御できるため、適切なタグを持つユーザーまたはロールのみが、指定されたリソースに対して特定のアクションを実行できます。

## ABAC を使用したアクセス許可の付与 (AWS CLI)
<a name="abac-granting-permissions-cli"></a>

 次の例は、リソースで使用可能なすべてのアクセス許可を受け取るために満たす必要がある属性式を示しています。または、`Select`、`Describe`、`Drop` などの個々のアクセス許可を指定することもできます。式は Cedar ポリシー式を使用します。Cedar の詳細については、「[Cedar とは」を参照してください。\$1 Cedar Policy Language Reference GuideLink](https://docs.cedarpolicy.com/) を参照してください。

 この条件は、IAM プリンシパルに `department` タグがあり、`department` タグ値が `sales` に等しいかどうかを確認します。

```
aws lakeformation grant-permissions 
--principal '{"DataLakePrincipalIdentifier": "111122223333:IAMPrincipals"}' \
--resource '{"Database": {"CatalogId": 111122223333, "Name": "abac-db"}}' \
--permissions ALL \
--condition '{"Expression": "context.iam.principalTags.hasTag(\"department\") \
   && context.iam.principalTags.getTag(\"department\") == \"sales\""}'
```

# 許可のシナリオ例
<a name="security-permissions-example-scenario"></a>

以下のシナリオは、 AWS Lake Formationでデータへのアクセスをセキュア化するための許可をセットアップする方法の説明に役立ちます。

Shirley はデータ管理者です。Shirley は、自分の会社である AnyCompany のためにデータレイクを設定したいと考えています。現在、すべてのデータは Amazon S3 に保存されています。John はマーケティングマネージャーで、顧客の購買情報 (`s3://customerPurchases` に保存されています) に対する書き込みアクセス権が必要です。この夏、マーケティングアナリストの Diego が John の同僚になります。John には、データに対してクエリを実行するためのアクセス権を、Shirley を介さずに Diego に付与する能力が必要です。

財務部門の Mateo は、財務データ (`s3://transactions` など) をクエリするためのアクセス権が必要です。Mateo は、財務チームが使用しているデータベース (`Finance_DB`) 内のテーブルのトランザクションデータをクエリしたいと考えています。Mateo のマネージャーである Arnav は、`Finance_DB` へのアクセスを Mateo に許可できます。Mateo は、財務データの変更を許可されない場合でも、データを予測に適した形式 (スキーマ) に変換できる必要があります。このデータは、Mateo が変更できる別のバケット (`s3://financeForecasts`) に保存されます。

これを要約すると、以下のようになります。
+ Shirley はデータレイク管理者です。
+ John には、Data Catalog で新しいデータベースとテーブルを作成するための `CREATE_DATABASE` と `CREATE_TABLE` 許可が必要です。
+ John には、作成するテーブルに対する `SELECT`、`INSERT`、および `DELETE` 許可も必要です。
+ Diego には、クエリを実行するためのテーブルに対する `SELECT` 許可が必要です。

AnyCompany の従業員は、以下のアクションを実行して許可をセットアップします。このシナリオで使用される API 操作は、わかりやすくするために簡素化された構文を示しています。

1. Shirley が、顧客の購入情報が含まれる Amazon S3 パスを Lake Formation に登録します。

   ```
   RegisterResource(ResourcePath("s3://customerPurchases"), false, Role_ARN )
   ```

1. Shirley が、顧客の購入情報が含まれる Amazon S3 パスへのアクセス権を John に付与します。

   ```
   GrantPermissions(John, S3Location("s3://customerPurchases"), [DATA_LOCATION_ACCESS]) )
   ```

1. Shirley が、データベースを作成するための許可を John に付与します。

   ```
   GrantPermissions(John, catalog, [CREATE_DATABASE]) 
   ```

1. John がデータベース `John_DB` を作成します。John は、データベースを作成したことから、それに対する `CREATE_TABLE` 許可を自動的に取得します。

   ```
   CreateDatabase(John_DB)
   ```

1. John が、`s3://customerPurchases` をポイントするテーブル `John_Table` を作成します。テーブルを作成したことから、John にはテーブルに対するすべての許可があり、そのテーブルに対する許可を付与できます。

   ```
   CreateTable(John_DB, John_Table)
   ```

1. John が、アナリスト Diego にテーブル `John_Table` へのアクセスを許可します。

   ```
    GrantPermissions(Diego, John_Table, [SELECT])
   ```

1. John が、アナリスト Diego に `s3://customerPurchases/London/` へのアクセスを許可します。Shirley が `s3://customerPurchases` を登録済みであるため、そのサブフォルダーは Lake Formation に登録されています。

   ```
    GrantDataLakePrivileges( 123456789012/datalake, Diego, [DATA_LOCATION_ACCESS], [], S3Location("s3://customerPurchases/London/") )
   ```

1. John は、アナリスト Diego に対して、データベース `John_DB` のテーブルを作成することを許可します。

   ```
    GrantDataLakePrivileges( 123456789012/datalake, Diego, John_DB, [CREATE_TABLE], [] )
   ```

1. Diego は `John_DB` のテーブルを `s3://customerPurchases/London/` で作成し、`ALTER`、`DROP`、`SELECT``INSERT`、`DELETE` の許可を自動的に取得します。

   ```
    CreateTable( 123456789012/datalake, John_DB, Diego_Table )
   ```

# Lake Formation でのデータフィルタリングとセルレベルのセキュリティ
<a name="data-filtering"></a>

Data Catalog テーブルに対する Lake Formation 許可を付与するときは、クエリ結果、および Lake Formation と統合されたエンジン内の特定のデータへのアクセスを制限するためのデータフィルタリング仕様を含めることができます。Lake Formation は、列レベルのセキュリティ、行レベルのセキュリティ、およびセルレベルのセキュリティを実現するために、データフィルタリングを使用します。ソースデータにネストされた構造が含まれている場合は、ネストされた列にデータフィルターを定義して適用できます。

Lake Formation のデータフィルタリング機能により、以下のレベルのデータセキュリティを実装することができます。

**列レベルのセキュリティ**  
列レベルのセキュリティ (列フィルタリング) を使用して Data Catalog テーブルに対するアクセス許可を付与すると、ユーザーはそのテーブル内でアクセスが許可されている特定の列とネストされた列のみを表示できます。大規模な多地域通信会社向けの複数のアプリケーションで使用される `persons` テーブルについて考えてみましょう。Data Catalog テーブルに対する列フィルタリングを伴う許可の付与は、人事部門に属さないユーザーによる社会保障番号や生年月日などの個人を特定できる情報 (PII) の表示を制限することができます。セキュリティポリシーを定義して、ネストされた列の一部のサブ構造のみへのアクセスを許可することもできます。

**行レベルのセキュリティ**  
Data Catalog テーブルに対する行レベルのセキュリティ (行フィルタリング) を伴う許可の付与は、ユーザーがそのテーブル内でアクセス権を持っている特定のデータの行のみを表示できるようにします。フィルタリングは、1 つ、または複数の列の値に基づいて行われます。行フィルター式を定義するときに、ネストされた列構造を含めることができます。例えば、この通信会社の異なる地域支社にそれぞれ独自の人事部門がある場合、人事部門の従業員が表示できる個人情報記録を、その地域の従業員の記録のみに制限することができます。

**セルレベルのセキュリティ**  
セルレベルのセキュリティは、柔軟性に優れた許可モデルのために、行フィルタリングと列フィルタリングを組み合わせます。テーブルの行と列をグリッドとして考えると、セルレベルのセキュリティを使用することによって、行と列の二次元上にあれば、どこでもグリッドの個々の要素 (セル) へのアクセスを制限することができます。つまり、行に応じて異なる列へのアクセスを制限することができます。これは、制限された列に色が付けられた以下の図に表されています。

![\[5つの 行と 6 つの列で構成されたグリッドが表示されています。行と列には、Col1、Col2、Row1、Row2 などのヘッダーがあります。R3 と C1、R3 と C2、R3 と C3、R5 と C1、R5 と C2、R5 と C5、R5 と C6 の座標のグリッドセルに色が付けられています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/cells-diagram.png)


個人情報テーブルの例を引き続き使用すると、国の列が「英国」に設定されている行の住所列へのアクセスを制限するが、国の列が「米国」に設定されている行の住所列へのアクセスは許可するという*データフィルター*をセルレベルで作成することができます。

フィルターは読み取り操作のみに適用されます。このため、付与できるのはフィルターを伴う `SELECT` Lake Formation 許可のみになります。

**ネストされた列のセルレベルのセキュリティ**  
Lake Formationでは、ネストされた列のセルレベルのセキュリティを使用してデータフィルターを定義して適用できます。ただし、Amazon Athena、Amazon EMR、Amazon Redshift Spectrum などの統合分析エンジンは、行レベルと列レベルのセキュリティを使用した Lake Formation マネージドのネストされたテーブルに対するクエリ実行をサポートしています。

制限事項については、「[データフィルタリングの制限事項](data-filtering-notes.md)」を参照してください。

**Topics**
+ [Lake Formation でのデータフィルター](#data-filters-about)
+ [行フィルター式での PartiQL のサポート](partiql-support.md)
+ [セルレベルのフィルタリングを使用したテーブルのクエリに必要な許可](row-filtering-prereqs.md)
+ [データフィルターの管理](managing-filters.md)

## Lake Formation でのデータフィルター
<a name="data-filters-about"></a>

*データフィルター*を作成することで、列レベル、行レベル、およびセルレベルのセキュリティを実装することができます。データフィルターは、テーブルに対する `SELECT` Lake Formation 許可を付与する時に選択します。テーブルにネストされた列構造が含まれている場合は、子列を含めるか除外するかしてデータフィルターを定義できます。また、ネストされた属性に対して行レベルのフィルター式を定義できます。



各データフィルターは、Data Catalog 内の特定のテーブルに属します。データフィルターには、以下の情報が含まれています。
+ フィルター名
+ フィルターが関連付けられたテーブルのカタログ ID
+ テーブル名
+ テーブルが含まれるデータベースの名前
+ 列の指定 – クエリ結果に含めたり、クエリ結果から除外したりする列およびネストされた列 (`struct` データ型) のリスト。
+ 行フィルター式 – クエリ結果に含める行を指定する式。制限はいくつかありますが、この式には PartiQL 言語の `WHERE` 句の構文があります。すべての行を指定するには、コンソールの **[行レベルのアクセス]** で **[すべての行へのアクセス]** を選択するか、API コールで `AllRowsWildcard` を使用します。

  行フィルター式で何がサポートされるかに関する詳細については、「[行フィルター式での PartiQL のサポート](partiql-support.md)」を参照してください。

得られるフィルターのレベルは、データフィルターの設定方法に応じて異なります。
+ 「全列」ワイルドカードを指定して、行フィルター式を提供する場合は、行レベルのセキュリティ (行フィルタリング) のみを確立することになります。
+ 特定の列およびネストされた列を含めるか除外し、全行ワイルドカードを使用して「すべての行」を指定すると、列レベルのセキュリティ (列フィルタリング) のみを設定することになります。
+ 特定の列を包含または除外するとともに、行フィルタリング式も指定するという場合は、セルレベルのセキュリティ (セルフィルタリング) を確立することになります。

Lake Formation コンソールからの以下のスクリーンショットは、セルレベルのフィルタリングを実行するデータフィルターを示しています。これは、`orders` テーブルに対するクエリについて、`customer_name` 列へのアクセスを制限し、クエリ結果は `product_type` 列に 'pharma' が含まれる行のみを返します。

![\[データフィルターウィンドウには、縦向きに配置された [Data filter name] (データフィルター名)、[Target database] (ターゲットデータベース)、[Target table] (ターゲットテーブル)、[Access to all columns] (すべての列にアクセス) と [Include columns] (列を含める) と [Exclude columns] (列を除外する) のオプションがあるオプションボタンのグループ、[Select columns] (列の選択) (ドロップダウンリスト)、および [Row filter expression] (行フィルター式) (複数行のテキストボックス) のフィールドが含まれています。[Exclude columns] (列を除外する) オプションが選択され、customer_name 列が除外対象として選択されて、[Row filter expression] (行フィルター式) フィールドには 'product_type='pharma' が表示されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/data-filter-sample-pharma.png)


文字列リテラルを囲むための一重引用符の使用 (`'pharma'`) に注意してください。

このデータフィルターを作成するには、Lake Formation コンソールを使用するか、`CreateDataCellsFilter` API 操作に以下のリクエストオブジェクトを提供することができます。

```
{
     "Name": "restrict-pharma",
     "DatabaseName": "sales",
     "TableName": "orders",
     "TableCatalogId": "111122223333",      
     "RowFilter": {"FilterExpression": "product_type='pharma'"},
     "ColumnWildcard": {
         "ExcludedColumnNames": ["customer_name"]
     }
}
```

テーブルには、必要な数だけデータフィルターを作成できます。これには、テーブルに対する grant オプション付きの `SELECT` 許可が必要です。データレイク管理者にはデフォルトで、そのアカウント内のすべてのテーブルに対して*データフィルター*を作成するアクセス許可があります。通常、テーブルに対する許可をプリンシパルに付与するときは、使用可能なデータフィルターのサブセットのみを使用します。例えば、`orders` テーブルのために、行セキュリティのみのデータフィルターである 2 番目のデータフィルターを作成することができます。上記のスクリーンショットを参考にすると、**[Access to all columns]** (すべての列にアクセス) オプションを選択して、`product_type<>pharma` という行フィルター式を含めることができます。このデータフィルターの名前は `no-pharma` にすることができます。これは、`product_type` 列が 'pharma' に設定されているすべての行に対するアクセスを制限します。

以下は、このデータフィルターの `CreateDataCellsFilter` API 操作のリクエストオブジェクトです。

```
{
     "Name": "no-pharma",
     "DatabaseName": "sales",
     "TableName": "orders",
     "TableCatalogId": "111122223333",      
     "RowFilter": {"FilterExpression": "product_type<>'pharma'"},
     "ColumnNames": ["customer_id", "customer_name", "order_num"
          "product_id", "purchase_date", "product_type", 
          "product_manufacturer", "quantity", "price"]
}
```

その後、`orders` テーブルに対する `restrict-pharma` データフィルターを伴う `SELECT` を管理者ユーザーに、`orders` テーブルに対する `no-pharma` データフィルターを伴う `SELECT` を非管理者ユーザーに付与することができます。ヘルスケア部門のユーザーの場合は、`orders` テーブルに対するすべての行と列への完全なアクセス権を伴う (データフィルターなし) `SELECT` を付与するか、料金設定情報へのアクセスを制限する別のデータフィルターを使用するものを付与こともできます。

 データフィルター内に列レベルと行レベルのセキュリティを指定する際に、ネストされた列を含めるか除外することができます。次の例では、修飾列名 (二重引用符で囲まれた列名) を使用して `product.offer` フィールドへのアクセスを指定しています。これは、ネストされたフィールドにとって、列名に特殊文字が含まれている場合にエラーが発生するのを防ぎ、最上位の列レベルのセキュリティ定義との下位互換性を維持するために重要です。

```
{
     "Name": "example_dcf",
     "DatabaseName": "example_db",
     "TableName": "example_table",
     "TableCatalogId": "111122223333",      
     "RowFilter": { "FilterExpression": "customer.customerName <> 'John'" },
     "ColumnNames": ["customer", "\"product\".\"offer\""]
}
```

**以下も参照してください。**  
[データフィルターの管理](managing-filters.md)

# 行フィルター式での PartiQL のサポート
<a name="partiql-support"></a>

PartiQL データ型、演算子、および集計のサブセットを使用して、行フィルター式を構築することができます。Lake Formation では、フィルター式にユーザー定義または標準の PartiQL 関数は使用できません。比較演算子を使用して、列を定数 (例えば `views >= 10000`) と比較することはできますが、列を他の列と比較することはできません。

 行フィルター式は、単純式または複合式にすることができます。式の合計長は 2048 文字未満にする必要があります。

**単純式**  
単純式は、次の形式になります: ` <column name > <comparison operator ><value >`
+ **Column name** (列名)

  これは、テーブルスキーマに存在する最上位レベルのデータ列、パーティション列、またはネストされた列のいずれかであり、以下に示す[サポートされているデータ型](#row-filter-supported-datatypes)に属している必要があります。
+ **Comparison operator** (比較演算子)

   サポートされている演算子は、次のとおりです: `=, >, <, >=, <=, <>,!=, BETWEEN, IN, LIKE, NOT, IS [NOT] NULL`
+  すべての文字列比較および `LIKE` パターンマッチングでは、大文字と小文字が区別されます。IS [NOT] NULL 演算子は、パーティション列には使用できません。
+ **Column value** (列値)

   列値は、列名のデータ型に一致する必要があります。

**複合式**  
複合式は、次の形式になります: `( <simple expression >) <AND/OR >(<simple expression >)` 複合式は、論理演算子 `AND/OR` を使用してさらに組み合わせることができます。

## サポートされているデータ型
<a name="row-filter-supported-datatypes"></a>

サポートされていないデータ型を含む AWS Glue Data Catalog テーブルを参照する行フィルターはエラーになります。以下は、データ型にマッピングされるテーブル列と定数でサポートされている Amazon Redshift データ型です。
+ `STRING, CHAR, VARCHAR`
+ `INT, LONG, BIGINT, FLOAT, DECIMAL, DOUBLE`
+ `BOOLEAN`
+  `STRUCT` 

Amazon Redshift のデータ型の詳細については、「*Amazon Redshift データベースデベロッパーガイド*」の「[データ型](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html)」を参照してください。

## 行フィルター式
<a name="Row-Filter-Expressions"></a>

**Example**  
以下は、次の列を持つテーブルに対する有効な行フィルター式の例です: ` country (String), id (Long), year (partition column of type Integer), month (partition column of type Integer)`  
+ `year > 2010 and country != 'US'`
+ `(year > 2010 and country = 'US') or (month < 8 and id > 23)`
+ `(country between 'Z' and 'U') and (year = 2018)`
+ `(country like '%ited%') and (year > 2000)`

**Example**  
ネストされた列を持つテーブルに対する有効な行フィルター式の例は、次のとおりです: `year > 2010 and customer.customerId <> 1 `   
 ネストされた行レベルの式を定義するときは、パーティション列の下のネストされたフィールドを参照しないでください。

文字列定数は一重引用符で囲む必要があります。

## 予約キーワード
<a name="partiql-reserved-keywords"></a>

行フィルター式に PartiQL キーワードが含まれている場合、列名がキーワードと競合する可能性があることから構文解析エラーが発生します。このエラーが発生した場合は、二重引用符を使用して列名をエスケープしてください。予約キーワードの例には、「first」、「last」、「asc」、「missing」などがあります。予約キーワードのリストについては、PartiQL の仕様を参照してください。

## PartiQL リファレンス
<a name="partiql-ref"></a>

PartiQL の詳細については、[https://partiql.org/](https://partiql.org/) を参照してください。

# セルレベルのフィルタリングを使用したテーブルのクエリに必要な許可
<a name="row-filtering-prereqs"></a>

セルレベルのフィルタリングを使用してテーブルに対してクエリを実行するには、次の AWS Identity and Access Management (IAM) アクセス許可が必要です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:StartQueryPlanning",
                "lakeformation:GetQueryState",
                "lakeformation:GetWorkUnits",
                "lakeformation:GetWorkUnitResults"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Lake Formation の許可の詳細については、「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」を参照してください。

# データフィルターの管理
<a name="managing-filters"></a>

列レベル、行レベル、およびセルレベルのセキュリティを実装するには、データフィルターを作成して維持することができます。各データフィルターは、Data Catalog テーブルに属します。テーブル用に複数のデータフィルターを作成してから、そのテーブルに対する許可を付与するときに 1 つ、または複数のデータフィルターを使用できます。また、`struct` データ型を持つネストされた列にデータフィルターを定義して適用し、ネストされた列のサブ構造のみへのアクセスをユーザーに許可することもできます。

データフィルターを作成または表示するには、grant オプション付きの `SELECT` 許可が必要です。アカウントのプリンシパルがデータフィルターを表示して使用できるようにするには、そのデータフィルターに対する `DESCRIBE` 許可を付与することができます。

**注記**  
Lake Formation は、別のアカウントから共有されているデータフィルターへの `Describe` アクセス許可の付与をサポートしていません。

データフィルターは、 AWS Lake Formation コンソール、 API、または AWS Command Line Interface () を使用して管理できますAWS CLI。

データフィルターについては、「[Lake Formation でのデータフィルター](data-filtering.md#data-filters-about)」を参照してください。

# データフィルターの作成
<a name="creating-data-filters"></a>

Data Catalog テーブルごとに、1 つ、または複数のデータフィルターを作成できます。

**Data Catalog テーブルのデータフィルターを作成する (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、ターゲットテーブル所有者、またはターゲットテーブルに対する Lake Formation 許可を持つプリンシパルとしてサインインします。

1. ナビゲーションペインの **[Data catalog]** で **[Data filters]** (データフィルター) を選択します。

1. **[Data filters]** (データフィルター) ページで、**[Create new filter]** (新しいフィルターを作成) を選択します。

1. **[Create data filter]** (データフィルターの作成) ダイアログボックスで、以下の情報を入力します。
   + [Data filter name] (データフィルター名) 
   + [Target database] (ターゲットデータベース) – テーブルが含まれるデータベースを指定します。
   + [Target table] (ターゲットテーブル) 
   + [Column-level access] (列レベルのアクセス) – 行フィルターのみを指定する場合は、**[Access to all columns]** (すべての列にアクセス) のままにしておきます。列またはセルフィルタリングを指定する場合は、**[Include columns]** (列を含める) または**[Exclude columns]** (列を除外する) を選択してから、含める列、または除外する列を指定します。

     ネストされた列 — ネストされた列を含むテーブルにフィルターを適用する場合、データフィルター内でネストされた構造体列のサブ構造を明示的に指定できます。

     このフィルターでプリンシパルに SELECT アクセス許可を付与すると、次のクエリを実行するプリンシパルには、`customer.customerName` のデータのみが表示され、`customer.customerId` のデータは表示されません。

     ```
     SELECT "customer" FROM "example_db"."example_table";
     ```  
![\[Column-level access settings with options to include specific columns and filter rows.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/nested-column-filter.png)

      `customer` 列にアクセス許可を付与すると、プリンシパルは、列とその列の下にネストされたフィールド (`customerName` と `customerID`) へのアクセス権を受け取ります。
   + [Row filter expression] (行フィルター式) – 行またはセルフィルタリングを指定するフィルター式を入力します。サポートされるデータ型と演算子については、「[行フィルター式での PartiQL のサポート](partiql-support.md)」を参照してください。**[すべての行へのアクセス]** を選択して、すべての行に対するアクセスを許可します。

     ネストされた列の一部の列構造を行フィルター式に含めて、特定の値を含む行をフィルターできます。

     行フィルター式 `Select * from example_nestedtable where customer.customerName <>'John'` を使用してテーブルに対するアクセス許可をプリンシパルに付与し、**列レベル**のアクセスを **[すべての列へのアクセス]** に設定すると、クエリ結果には `customerName <>'John'` が true と評価された行のみが表示されます。

   次のスクリーンショットは、セルフィルタリングを実装するデータフィルターを示しています。`orders` テーブルに対するクエリでは、`customer_name` 列へのアクセスが拒否され、`product_type` 列に 'pharma' がある行のみが表示されます。  
![\[データフィルターウィンドウには、縦向きに配置された [Data filter name] (データフィルター名)、[Target database] (ターゲットデータベース)、[Target table] (ターゲットテーブル)、[Access to all columns] (すべての列にアクセス) と [Include columns] (列を含める) と [Exclude columns] (列を除外する) のオプションがあるオプションボタンのグループ、[Select columns] (列の選択) (ドロップダウンリスト)、および [Row filter expression] (行フィルター式) (複数行のテキストボックス) のフィールドが含まれています。[Exclude columns] (列を除外する) オプションが選択され、customer_name 列が除外対象として選択されて、[Row filter expression] (行フィルター式) フィールドには product_type='pharma' が表示されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/data-filter-sample-pharma.png)

1. **[Create filter]** (フィルターを作成) を選択します。

**ネストされたフィールドでセルフィルターポリシーを使用してデータフィルターを作成するには**

 このセクションでは、次のサンプルスキーマを使用してデータセルフィルターを作成する方法を示します。

```
[
    { name: "customer", type: "struct<customerId:string,customerName:string>" },
    { name: "customerApplication", type: "struct<appId:string>" },
    { name: "product", type: "struct<offer:struct<prodId:string,listingId:string>,type:string>" },
    { name: "purchaseId", type: "string" },
]
```

1. **[データフィルターを作成]** ページで、データフィルターの名前を入力します。

1.  次に、ドロップダウンを使用してデータベース名とテーブル名を選択します。

1. **[列レベルのアクセス]** セクションで、[含まれる列] を選択し、ネストされた列 (`customer.customerName`) を選択します。

1. **[行レベルのアクセス]** セクションで、**[すべての行へのアクセス]** オプションを選択します。

1. **[フィルターを作成]** をクリックします。

   このフィルターで `SELECT` アクセス許可を付与すると、プリンシパルは `customerName` 列内のすべての行にアクセスできるようになります。

1. 次に、同じデータベース/テーブルに別のデータフィルターを定義します。

1. **[列レベルのアクセス]** セクションで、[含まれる列] を選択し、別のネストされた列 (`customer.customerid`) を選択します。

1. **[行レベルのアクセス]** セクションで、**[行をフィルタリングする]** を選択し、**[行フィルター式]** (`customer.customerid <> 5`) を入力します。

1. **[フィルターを作成]** をクリックします。

   このフィルターで `SELECT` アクセス許可を付与すると、プリンシパルは、`customerName` フィールドと `customerId` フィールド (`customerId` 列の値が 5 であるセルを除く) のすべての行にアクセスできるようになります。

# データフィルターの許可の付与
<a name="granting-filter-perms"></a>

プリンシパルには、データフィルターに対する `SELECT`、`DESCRIBE`、および `DROP` Lake Formation 許可を付与することができます。

当初、テーブル用に作成したデータフィルターを表示できるのは、作成したユーザーだけです。別のプリンシパルがデータフィルターを表示して、そのデータフィルターを伴う Data Catalog 許可を付与できるようにするには、以下のいずれかを実行する必要があります。
+ テーブルに対する grant オプション付きの `SELECT` をプリンシパルに付与し、その付与にデータフィルターを適用する。
+ データフィルターに対する `DESCRIBE` または `DROP` 許可をプリンシパルに付与する。

外部 AWS アカウントに アクセス`SELECT`許可を付与できます。付与後、そのアカウントのデータレイク管理者は、アカウント内の他のプリンシパルにその許可を付与できるようになります。外部アカウントに付与するときは、外部アカウントの管理者がそのアカウント内の他のユーザーに許可をさらにカスケードできるように、grant オプションを含める必要があります。アカウント内のプリンシパルに付与するときの grant オプションを伴う付与はオプションです。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して、データフィルターに対するアクセス許可を付与および取り消すことができますAWS CLI。

------
#### [ Console ]

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールを開きます。

1. ナビゲーションペインの **[Permissions]** (許可) で **[Data lake permissions]** (データレイクの許可) を選択します。

1. **[Permissions]** (許可) ページの **[Data permissions]** (データの許可) セクションで、**[Grant]** (付与) を選択します。

1. **[Grant data permissions]** (データ許可の付与) ページで、許可を付与するプリンシパルを選択します。

1. [LF-Tags or catalog resources] (LF タグまたはカタログリソース) セクションで、**[Named data catalog resources]** (名前付きの Data Catalog リソース) を選択します。次に、許可を付与するデータベース、テーブル、およびデータフィルターを選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. **[Data filter permissions]** (データフィルターの許可) セクションで、選択したプリンシパルに付与する許可を選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-perms-on-filters.png)

------
#### [ AWS CLI ]
+ `grant-permissions` のコマンドを入力します。`resource` 引数に `DataCellsFilter` を指定し、`Permissions` 引数、およびオプションで `PermissionsWithGrantOption` 引数に、`DESCRIBE` または `DROP` を指定します。

  以下の例は、データフィルター `restrict-pharma` ( AWS アカウント 1111-2222-3333 内の `sales` データベースにある `orders` テーブルの属するもの) に対する grant オプション付きの `DESCRIBE` をユーザー `datalake_user1` に付与します。

  ```
  aws lakeformation grant-permissions --cli-input-json file://grant-params.json
  ```

  以下は、ファイル `grant-params.json` の内容です。

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------

# データフィルターが提供するデータの許可の付与
<a name="granting-data-perms-for-filters"></a>

データフィルターは、テーブル内のデータのサブセットを表します。プリンシパルにデータアクセスを提供するには、これらのプリンシパルに `SELECT` 許可を付与する必要があります。この許可により、プリンシパルは以下を実行できます。
+ プリンシパルのアカウントと共有されているテーブルのリストで実際のテーブル名を表示する。
+ 共有テーブルでデータフィルターを作成し、これらのデータフィルターに対する許可をユーザーに付与します。

------
#### [ Console ]

**SELECT 許可を付与する**

1. Lake Formation コンソールで **[Permissions]** (許可) ページに移動し、**[Grant]** (付与) を選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/permissions-grant-action.png)

1. アクセス権を付与する先のプリンシパルを選択し、**[Named data catalog resources]** (名前付きの Data Catalog リソース) を選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-data-filter-perms-step2.png)

1. フィルターが表すデータへのアクセス権を提供するには、**[Data filter permissions]** (データフィルターの許可) で **[Select]** (選択) を選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-data-filter-perms-step3.png)

------
#### [ CLI ]

`grant-permissions` のコマンドを入力します。Resource 引数に `DataCellsFilter` を指定し、Permissions 引数に `SELECT` を指定します。

次の例では`restrict-pharma`、 `SELECT`の`sales`データベースの `orders`テーブルに属するデータフィルター `datalake_user1`のユーザーに grant オプションを使用して を付与します AWS アカウント `1111-2222-3333`。

```
aws lakeformation grant-permissions --cli-input-json file://grant-params.json 
```

以下は、ファイル `grant-params.json` の内容です。

```
{
    "Principal": {
        "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"
    },
    "Resource": {
        "DataCellsFilter": {
            "TableCatalogId": "111122223333", 
            "DatabaseName": "sales", 
            "TableName": "orders", 
            "Name": "restrict-pharma"
        }
    },
    "Permissions": ["SELECT"]
}
```

------

# データフィルターの表示
<a name="view-data-filters"></a>

Lake Formation コンソール AWS CLI、または Lake Formation API を使用して、データフィルターを表示できます。

データフィルターを表示するには、Data Lake 管理者であるか、データフィルターに対する必要な許可を持っている必要があります。

------
#### [ Console ]

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールを開きます。

1. ナビゲーションペインの **[Data catalog]** で **[Data filters]** (データフィルター) を選択します。

   このページには、アクセスできるデータフィルターが表示されます。  
![\[[Data filters] (データフィルター) ページには、[Filter name] (フィルター名)、[Table] (テーブル)、[Database] (データベース)、および [Table catalog ID] (テーブルカタログ ID) 列がある利用可能なデータフィルターが表示されます。スクリーンショットには、test-df、cloudtrailtest_cloudTrail、lakeformation_cloudTrail、および編集されたアカウント ID の値を持つ単一のデータフィルターが表示されています。テーブルの上には、左から右に、更新/再ロードボタンと、[View] (表示) (グレー表示)、[Delete] (削除) (グレー表示)、[Create new filter] (新しいフィルターを作成) ボタンの 4 つのボタンがあります。空の検索フィールドもあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/list-data-filters.jpg)

1. データフィルターの詳細を表示するには、データフィルターを選択してから [View] (表示) を選択します。データフィルターの詳細情報が記載された新しいウィンドウが開きます。  
![\[[View data filter] (データフィルターの表示) ウィンドウには、選択されたデータフィルターに関する追加情報が表示されます。表示されている情報には、[Name] (名前)、[Database] (データベース)、[Table] (テーブル)、[Column-level access] (列レベルのアクセス)、[Row filter expression] (行フィルター式)、および [Columns] (列) が含まれます。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/list-data-filters-details.jpg)

------
#### [ AWS CLI ]

`list-data-cells-filter` コマンドを入力して、テーブルリソースを指定します。

以下の例は、`cloudtrailtest_cloudtrail` テーブルのデータフィルターをリストします。

```
aws lakeformation list-data-cells-filter --table '{ "CatalogId":"123456789012", 
"DatabaseName":"lakeformation_cloudtrail", "Name":"cloudtrailtest_cloudtrail"}'
```

------
#### [ API/SDK ]

`ListDataCellsFilter` API を使用して、テーブルリソースを指定します。

以下の例は、Python を使用して `myTable` テーブルの最初 20 個のデータフィルターをリストします。

```
response = client.list_data_cells_filter(
    Table = {
        'CatalogId': '111122223333',
        'DatabaseName': 'mydb',
        'Name': 'myTable'
    },
    MaxResults=20
)
```

------

# データフィルターの許可の表示
<a name="listing-filter-perms"></a>

Lake Formation コンソールを使用して、データフィルターに対して付与された許可を表示できます。

データフィルターに対する許可を表示するには、Data Lake 管理者であるか、データフィルターに対する必要な許可を持っている必要があります。

------
#### [ Console ]

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールを開きます。

1. ナビゲーションペインの **[Permissions]** (許可) で **[Data permissions]** (データの許可) を選択します。

1. **[Data permissions]** (データの許可) ページで検索フィールドをクリックまたはタップし、**[Properties]** (プロパティ) メニューで **[Resource type]** (リソースタイプ) を選択します。

1. **[Resource type]** (リソースタイプ) メニューで **[Resource type: Data cell filter]** (リソースタイプ: データセルフィルター) を選択します。

   許可を持っているデータフィルターがリストされます。**[Permissions]** (許可) と **[Grantable]** (付与可能) 列を見るには、水平方向にスクロールする必要がある場合があります。  
![\[[Data Permissions] データの許可ページには、[Principal] (プリンシパル)、[Resource type] (リソースタイプ)、[Database] (データベース)、[Table] (テーブル)、[Resource] (リソース)、[Catalog] (カタログ)、および [Permissions] (許可) の列がある許可の表が表示されます。[Resource type] (リソースタイプ) 列には、4 行すべてに「Data cell filter」(データセルフィルター) が表示されています。1 行目と 2 行目の [Permissions] (許可) は、[Describe] (記述)、[Drop] (ドロップ)、および [Select] (選択) です。3 行目の許可は [Describe] (記述) です。表の上には、[Clear filter] (フィルターをクリア) ボタンと、現在の検索が [Resource type: Data cell filter] (リソースタイプ:データセルフィルター) のためのものであることを示すタイルがあります。それらの上には検索 (テキスト) フィールドがあり、その上には更新ボタンと、[Revoke] (取り消す) および [Grant] (付与) ボタンがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/data-permissions-cell-filters.png)

------
#### [ AWS CLI ]
+ `list-permissions` のコマンドを入力します。`resource` 引数に `DataCellsFilter` を指定し、`Permissions` 引数、およびオプションで `PermissionsWithGrantOption` 引数に、`DESCRIBE` または `DROP` を指定します。

  以下の例は、データフィルター `restrict-pharma` に対する grant オプション付きの `DESCRIBE` 許可をリストします。結果は、 AWS アカウント 1111-2222-3333 の`sales`データベース内のプリンシパル`datalake_user1`と`orders`テーブルに付与されたアクセス許可に限定されます。

  ```
  aws lakeformation list-permissions --cli-input-json file://list-params.json
  ```

  以下は、ファイル `grant-params.json` の内容です。

  ```
  {
      "Principal": {"DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1"},
      "Resource": {
          "DataCellsFilter": {
              "TableCatalogId": "111122223333",
              "DatabaseName": "sales",
              "TableName": "orders",
              "Name": "restrict-pharma"
          }
      },
      "Permissions": ["DESCRIBE"],
      "PermissionsWithGrantOption": ["DESCRIBE"]
  }
  ```

------

# Lake Formation でのデータベースとテーブル許可の表示
<a name="viewing-permissions"></a>

Data Catalog データベースまたはテーブルについて付与された Lake Formation 許可を表示することができます。これを行うには、Lake Formation コンソール、 API、または AWS Command Line Interface () を使用しますAWS CLI。

コンソールを使用した許可の表示は、**[Databases]** (データベース) もしくは **[Tables]** (テーブル) ページ、または **[Data permissions]** (データの許可) ページから開始することができます。

**注記**  
データベース管理者またはリソース所有者ではないときは、リソースに対する grant オプション付きの Lake Formation 許可がある場合に限り、他のプリンシパルが持っているそのリソースに対する許可を表示できます。  
必要な Lake Formation アクセス許可に加えて、 AWS Identity and Access Management (IAM) アクセス許可 `glue:GetDatabases`、`glue:GetDatabase`、`glue:GetTables`、`glue:GetTable`、および が必要です`lakeformation:ListPermissions`。

**データベースに対する許可を表示する (コンソール。[Databases] (データベース) ページから開始)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、データベース作成者、またはデータベースに対する grant オプション付きの Lake Formation 許可を持つユーザーとしてサインインします。

1. ナビゲーションペインで、**[Databases]** (データベース) を選択します。

1. データベースを選択し、**[Actions]** (アクション) メニューで **[View permissions]** (許可を表示) を選択します。
**注記**  
データベースリソースリンクを選択する場合、Lake Formation はリソースリンクのターゲットデータベースではなく、リソースリンクに対する許可を表示します。

   **[Data permissions]** (データの許可) ページに、データベースに対するすべての Lake Formation 許可がリストされます。データベース所有者のデータベース名とカタログ ID (AWS アカウント ID) は、検索ボックスの下にラベルとして表示されます。タイルは、そのデータベースに対する許可のみをリストするようにフィルターが適用されたことを示します。タイルを閉じる、または **[Clear filter]** (フィルターをクリア) を選択することで、フィルターを調整することができます。  
![\[[Data permissions] (データの許可) ページの上部に検索ボックスが表示されており、その下に 2 つのタイルがあります。タイルには、Database:logs と Catalog ID:111122223333 というラベルが付けられます。タイルの横には [Clear filter] (フィルターをクリア) ボタンがあります。その下には、データベースとその許可のリストがあります。この例のリストは、1 行しかありません。これは logs データベース用の行で、Alter (変更)、Create table (テーブルの作成)、および Drop (ドロップ) 許可が grant オプションと共に IAM ユーザー管理者に付与されます。リストには [Owner account ID] (所有者アカウント ID) 列が含まれており、この行では、その列に 11112222333 が表示されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/permissions-page-database.png)

**データベースに対する許可を表示する (コンソール。[Data permissions] (データの許可) ページから開始)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、データベース作成者、またはデータベースに対する grant オプション付きの Lake Formation 許可を持つユーザーとしてサインインします。

1. ナビゲーションペインで、**[Data permissions]** (データの許可) を選択します。

1. ページ上部の検索ボックスにカーソルを置き、表示される **[Properties]** (プロパティ) メニューで **[Database]** (データベース) を選択します。

1. 表示される **[Databases]** (データベース) メニューで、データベースを選択します。
**注記**  
データベースリソースリンクを選択する場合、Lake Formation はリソースリンクのターゲットデータベースではなく、リソースリンクに対する許可を表示します。

   **[Data permissions]** (データの許可) ページに、データベースに対するすべての Lake Formation 許可がリストされます。データベース名が、検索ボックスの下にタイルとして表示されます。タイルは、そのデータベースに対する許可のみをリストするようにフィルターが適用されたことを示します。タイルを閉じる、または **[Clear filter]** (フィルターをクリア) を選択することで、フィルターを削除することができます。

**テーブルに対する許可を表示する (コンソール。[Tables] (テーブル) ページから開始)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、テーブル作成者、またはテーブルに対する grant オプション付きの Lake Formation 許可を持つユーザーとしてサインインします。

1. ナビゲーションペインで **[Table]** (テーブル) を選択します。

1. テーブルを選択し、**[Actions]** (アクション) メニューで **[View permissions]** (許可を表示) を選択します。
**注記**  
テーブルリソースリンクを選択する場合、Lake Formation はリソースリンクのターゲットテーブルではなく、リソースリンクに対する許可を表示します。

   **[Data permissions]** (データの許可) ページに、テーブルに対するすべての Lake Formation 許可がリストされます。テーブル名、テーブルを含むデータベースのデータベース名、およびテーブル所有者のカタログ ID (AWS アカウント ID) は、検索ボックスの下にラベルとして表示されます。ラベルは、そのテーブルに対する許可のみをリストするようにフィルターが適用されたことを示します。ラベルを閉じる、または **[Clear filter]** (フィルターをクリア) を選択することで、フィルターを調整することができます。  
![\[[Data permissions] (データの許可) ページの上部に検索フィールドが表示されており、その下に 3 つのタイルがあります。タイルには、左から右に Database:logs、Table:alexa-logs、および Catalog ID:111122223333 というラベルが付けられています。タイルの横には [Clear filter] (フィルターをクリア) ボタンがあります。その下には、テーブルとその許可のリストがあります。この例のリストは、1 行しかありません。これは alexa-logs テーブル用の行、grant オプション付きの Super (スーパー) 許可が IAM ユーザー管理者に付与されています。リストには [Owner account ID] (所有者アカウント ID) 列が含まれており、この行では、その列に 11112222333 が表示されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/permissions-page-table.png)

**テーブルに対する許可を表示する (コンソール。[Data permissions] (データの許可) ページから開始)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、テーブル作成者、またはテーブルに対する grant オプション付きの Lake Formation 許可を持つユーザーとしてサインインします。

1. ナビゲーションペインで、**[Data permissions]** (データの許可) を選択します。

1. ページ上部の検索ボックスにカーソルを置き、表示される **[Properties]** (プロパティ) メニューで **[Database]** (データベース) を選択します。

1. 表示される **[Databases]** (データベース) メニューで、データベースを選択します。
**重要**  
外部アカウントから AWS アカウントと共有されたテーブルに対するアクセス許可を表示するには、データベースへのリソースリンクではなく、テーブルを含む外部アカウントのデータベースを選択する必要があります。

   **[Data permissions]** (データの許可) ページに、データベースに対するすべての Lake Formation 許可がリストされます。

1. もう1 度検索ボックスにカーソルを置き、表示される **[Properties]** (プロパティ) メニューで **[Table]** (テーブル) を選択します。

1. 表示された **[Tables]** (テーブル) メニューで、テーブルを選択します。

   **[Data permissions]** (データの許可) ページに、テーブルに対するすべての Lake Formation 許可がリストされます。テーブル名と、テーブルが含まれるデータベースのデータベース名が、検索ボックスの下にタイルとして表示されます。タイルは、そのテーブルに対する許可のみをリストするようにフィルターが適用されたことを示します。タイルを閉じる、または **[Clear filter]** (フィルターをクリア) を選択することで、フィルターを調整することができます。

**テーブルに対する許可を表示する (AWS CLI)**
+ `list-permissions` コマンドを入力します。

  以下の例は、外部アカウントから共有されているテーブルに対する許可をリストします。`CatalogId` プロパティは外部 AWS アカウントのアカウント ID であり、データベース名はテーブルを含む外部アカウントのデータベースを指します。

  ```
  aws lakeformation list-permissions  --resource-type TABLE --resource '{ "Table": {"DatabaseName":"logs", "Name":"alexa-logs", "CatalogId":"123456789012"}}'
  ```

# Lake Formation コンソールを使用した許可の取り消し
<a name="revoking-permssions-console-all"></a>

コンソールを使用して、Data Catalog 許可、ポリシータグ許可、データフィルター許可、およびロケーション許可といった、すべてのタイプの Lake Formation 許可を取り消すことができます。

**リソースに対する Lake Formation 許可を取り消す (コンソール)**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、またはリソースに対する grant オプション付きの許可を付与されたユーザーとしてサインインします。

1. ナビゲーションペインの **[許可]** で、**[データレイクのアクセス許可]**、**[LF タグとアクセス許可]**、または **[データのロケーション]** を選択します。

1. 許可またはロケーションを選択してから、**[Revoke]** (取り消す) を選択します。

1. 表示されるダイアログボックスで、**[Revoke]** (取り消す) を選択します。

# Lake Formation でのクロスアカウントデータ共有
<a name="cross-account-permissions"></a>

Lake Formation のクロスアカウント機能を使用すると、ユーザーは分散データレイクを複数の AWS 組織間で安全に共有したり AWS アカウント、別のアカウントの IAM プリンシパルと直接共有したりして、データカタログのメタデータと基盤となるデータにきめ細かなアクセスを提供したりできます。大企業は通常、複数の を使用します。これらのアカウントの多くは AWS アカウント、単一の によって管理されるデータレイクにアクセスする必要がある場合があります AWS アカウント。ユーザーおよび AWS Glue 抽出、変換、ロード (ETL) ジョブは、複数のアカウント間でテーブルをクエリおよび結合できますが、Lake Formation のテーブルレベルおよび列レベルのデータ保護を活用できます。

Data Catalog リソースに対する Lake Formation アクセス許可を外部アカウントまたは別のアカウントの IAM プリンシパルに直接付与すると、Lake Formation は AWS Resource Access Manager (AWS RAM) サービスを使用してリソースを共有します。付与対象アカウントが付与する側のアカウントと同じ組織内にある場合、付与対象アカウントはその共有リソースをただちに使用できるようになります。被付与者アカウントが同じ組織にない場合、 は被付与者アカウントにリソース付与を承認または拒否するための招待 AWS RAM を送信します。次に、共有リソースを使用できるようにするには、被付与者アカウントのデータレイク管理者が AWS RAM コンソールまたは AWS CLI を使用して招待を受け入れる必要があります。

 Lake Formation は、ハイブリッドアクセスモードでの外部アカウントとの Data Catalog リソースの共有をサポートしています。ハイブリッドアクセスモードでは、 AWS Glue Data Catalog内のデータベースとテーブルの Lake Formation 許可を柔軟かつ選択的に有効にできます。  ハイブリッドアクセスモードでは、他の既存のユーザーやワークロードのアクセス許可ポリシーを中断することなく、特定のユーザーのセットに Lake Formation 許可を設定できる増分パスが導入されました。

詳細については、「[ハイブリッドアクセスモード](hybrid-access-mode.md)」を参照してください。

**直接的なクロスアカウント共有**  
許可されたプリンシパルは、外部アカウントの IAM プリンシパルとリソースを明示的に共有できます。この機能は、外部アカウントの誰がリソースにアクセスできるかをアカウント所有者が制御する場合に便利です。IAM プリンシパルが受け取るアクセス許可は、直接の付与とアカウントレベルの付与を組み合わせたもので、それらはプリンシパルにカスケードされます。アクセス許可の受領者のみが、直接クロスアカウント付与を表示できます。リソース共有を受け取るプリンシパルが、他のプリンシパルとリソースを共有することはできません。

**データカタログリソースを共有する方法**  
単一の Lake Formation 付与操作で、以下の Data Catalog リソースに対するクロスアカウント許可を付与できます。
+ 1 つのデータベース
+ 個々のテーブル (オプションで列フィルタリングを使用)
+ 選択された数個のテーブル
+ データベース内のすべてのテーブル (すべてのテーブルのワイルドカードを使用)

データベースとテーブルを別の アカウントの別の AWS アカウント または IAM プリンシパルと共有するには、2 つのオプションがあります。
+ Lake Formation のタグベースのアクセスコントロール (LF-TBAC) (推奨)

  Lake Formation のタグベースのアクセスコントロールは、属性に基づいて許可を定義する認可戦略です。タグベースのアクセスコントロールを使用して、Data Catalog リソース (データベース、テーブル、列) を外部の IAM プリンシパル、組織 AWS アカウント、組織単位 (OUs) と共有できます。これらの属性は、Lake Formation で LF タグと呼ばれています。詳細については、「[Lake Formation のタグベースのアクセスコントロールを使用したデータレイクの管理](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-dl-tutorial.html)」を参照してください。
**注記**  
クロスアカウント付与 AWS Resource Access Manager に使用する Data Catalog アクセス許可を付与する LF-TBAC メソッド。  
Lake Formation では、LF-TBAC 方式を使用した Organizations および組織単位へのクロスアカウントアクセス許可の付与をサポートするようになりました。  
この機能を有効にするには、**[クロスアカウントのバージョン設定]** を **[バージョン 3]** に更新する必要があります。  
詳細については、「[クロスアカウントデータ共有のバージョン設定の更新](optimize-ram.md)」を参照してください。
+ Lake Formation の名前付きリソース

  名前付きリソース方式を使用した Lake Formation のクロスアカウントデータ共有では、外部、IAM プリンシパル AWS アカウント、組織、または組織単位に、データカタログテーブルとデータベースに対する許可オプションを使用して Lake Formation アクセス許可を付与できます。この付与操作は、これらのリソースを自動的に共有します。

**注記**  
Lake Formation 認証情報を使用して、 AWS Glue クローラが別のアカウントのデータストアにアクセスすることを許可することもできます。詳細については、「 AWS Glue デベロッパーガイド」の[「クロスアカウントクローリング](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#cross-account-crawling)」を参照してください。

Athena や Amazon Redshift Spectrum などの統合されたサービスでは、クエリに共有リソースを含めることができるように、リソースリンクが必要になります。リソースリンクの詳細については、「[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)」を参照してください。

考慮事項と制限事項については、「[クロスアカウントデータ共有のベストプラクティスと考慮事項](cross-account-notes.md)」を参照してください。

**Topics**
+ [前提条件](cross-account-prereqs.md)
+ [クロスアカウントデータ共有のバージョン設定の更新](optimize-ram.md)
+ [外部アカウントから AWS アカウント または IAM プリンシパル間で Data Catalog テーブルとデータベースを共有する](cross-account-data-share-steps.md)
+ [アカウントと共有されたデータベースまたはテーブルに対する許可の付与](regranting-shared-resources.md)
+ [リソースリンク許可の付与](granting-link-permissions.md)
+ [共有テーブルの基盤となるデータへのアクセス](cross-account-read-data.md)
+ [CloudTrail のクロスアカウントロギング](cross-account-logging.md)
+ [AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理](hybrid-cross-account.md)
+ [GetResourceShares API 操作を使用したすべてのクロスアカウント付与の表示](cross-account-getresourcepolicies.md)

**関連トピック**  
[Lake Formation 許可の概要](lf-permissions-overview.md)
[共有 Data Catalog テーブルとデータベースへのアクセスと表示](viewing-shared-resources.md)
[リソースリンクの作成](creating-resource-links.md)
[クロスアカウントアクセスのトラブルシューティング](troubleshooting.md#trouble-cross-account)

# 前提条件
<a name="cross-account-prereqs"></a>

 AWS アカウントが Data Catalog リソース (カタログ、データベース、テーブル) を別のアカウントまたは別のアカウントのプリンシパルと共有する前に、およびアカウントと共有されているリソースにアクセスする前に、次の前提条件を満たす必要があります。

**クロスアカウントデータ共有の一般的な要件**
+ ハイブリッドアクセスモードでデータカタログのデータベースとテーブルを共有し、フェデレーティッドカタログでオブジェクトを共有するには、**[クロスアカウントバージョン設定]** を **[バージョン 4]** に更新する必要があります。
+ Data Catalog リソースに対するクロスアカウント許可を付与する前に、そのリソースの `IAMAllowedPrincipals` グループからすべての Lake Formation 許可を取り消す必要があります。呼び出し元のプリンシパルがリソースにアクセスするためのクロスアカウント許可を持っていて、リソースに `IAMAllowedPrincipals` 許可がある場合、Lake Formation は `AccessDeniedException` をスローします。

  この要件は、基盤となるデータロケーションを Lake Formation モードで登録する場合にのみ該当します。データロケーションをハイブリッドモードで登録すると、`IAMAllowedPrincipals` グループ許可が共有データベースまたはテーブルに存在することになる可能性があります。
+  共有する予定のテーブルが含まれるデータベースについては、新しいテーブルに `IAMAllowedPrincipals` への `Super` のデフォルト付与がないようにする必要があります。Lake Formation コンソールで、データベースを編集してオフにします。**このデータベースの新しいテーブルには IAM アクセスコントロールのみを使用する**か、次の AWS CLI コマンドを入力して、 をデータベースの名前`database`に置き換えます。基になるデータロケーションがハイブリッドアクセスモードで登録されている場合は、このデフォルト設定を変更する必要はありません。ハイブリッドアクセスモードでは、Lake Formation ではAmazon S3と IAM アクセス許可ポリシーを同じリソース AWS Glue に選択的に適用できます。

  ```
  aws glue update-database --name database --database-input '{"Name":"database","CreateTableDefaultPermissions":[]}'
  ```
+ クロスアカウントアクセス許可を付与するには、付与者に AWS Glueおよび AWS RAM サービスに対する必要な AWS Identity and Access Management (IAM) アクセス許可が必要です。 AWS 管理ポリシーは、必要なアクセス許可`AWSLakeFormationCrossAccountManager`を付与します。

  を使用してリソース共有を受信するアカウントのデータレイク管理者には、次の追加ポリシー AWS RAM が必要です。これにより、管理者は AWS RAM リソース共有の招待を受け入れることができます。また、管理者が組織とのリソース共有を有効にすることも可能にします。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "ram:AcceptResourceShareInvitation",
                  "ram:RejectResourceShareInvitation",
                  "ec2:DescribeAvailabilityZones",
                  "ram:EnableSharingWithAwsOrganization"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ Data Catalog リソースを AWS Organizations または組織単位と共有する場合は、 で組織との共有を有効にする必要があります AWS RAM。

  組織との共有を有効にする方法については、*AWS RAM 「 ユーザーガイド*」の[AWS 「組織との共有を有効にする](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs)」を参照してください。

  組織との共有を有効にするには、`ram:EnableSharingWithAwsOrganization` 許可が必要です。
+ 別のアカウントの IAM プリンシパルとリソースを直接共有するには、**[Cross account version settings]** (クロスアカウントバージョン設定) を **[Version 3]** (バージョン 3) に更新する必要があります。この設定は、**[Data catalog settings]** (データカタログ設定) ページにあります。**[Version 1]** (バージョン 1) を使用している場合は、設定を更新する手順「[クロスアカウントデータ共有のバージョン設定の更新](optimize-ram.md)」を参照してください。
+  AWS Glue サービスマネージドキーで暗号化された Data Catalog リソースを別のアカウントと共有することはできません。共有できるのは、お客様の暗号化キーで暗号化された Data Catalog リソースのみです。リソース共有を受け取るアカウントには、オブジェクトを復号するための Data Catalog 暗号化キーに対する許可が必要です。

**LF-TBAC 要件を使用したクロスアカウントデータ共有**
+  Data Catalog リソースを AWS Organizations および組織単位 (OUs) と共有するには、**クロスアカウントバージョン設定**を**バージョン 3** 以上に更新する必要があります。
+ Data Catalog リソースをバージョン 3 の**クロスアカウントバージョン設定**と共有するには、付与者はアカウントの AWS 管理ポリシー `AWSLakeFormationCrossAccountManager` で定義されている IAM アクセス許可を持っている必要があります。
+ **[クロスアカウントのバージョン設定]** のバージョン 1 またはバージョン 2 を使用している場合、LF-TBAC を有効にする Data Catalog リソースポリシー (`glue:PutResourcePolicy`) が必要です。詳細については、「[AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理](hybrid-cross-account.md)」を参照してください。
+ 現在 AWS Glue Data Catalog リソースポリシーを使用しており、**[クロスアカウントバージョン設定]** のバージョン 3 を使用してクロスアカウント許可を付与したいという場合、[AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理](hybrid-cross-account.md) セクションに示されているように `glue:PutResourcePolicy` API オペレーションを使用して Data Catalog 設定で `glue:ShareResource` 許可を付与する必要があります。AWS Glue Data Catalog リソースポリシー (バージョン 1 とバージョン 2 では `glue:PutResourcePolicy` の許可を使用) を使用してクロスアカウントアクセス付与を行わなかった場合、このポリシーは必要ありません。

  ```
  {
        "Effect": "Allow",
        "Action": [
          "glue:ShareResource"
        ],
        "Principal": {"Service": [
          "ram.amazonaws.com"
        ]},
        "Resource": [
          "arn:aws:glue:<region>:<account-id>:table/*/*",
          "arn:aws:glue:<region>:<account-id>:database/*",
          "arn:aws:glue:<region>:<account-id>:catalog"
        ]
      }
  ```
+ アカウントが AWS Glue データカタログリソースポリシーを使用してクロスアカウント共有を行っており、現在 AWS RAM を使用してリソースを共有するために名前付きリソースメソッドまたは LF-TBAC **[クロスアカウント設定]** バージョン 3 を使用してリソースを共有している場合は、`glue:PutResourcePolicy` API オペレーションを呼び出すときに引数 `EnableHybrid` を `'true'` に設定する必要があります。詳細については、「[AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理](hybrid-cross-account.md)」を参照してください。

**共有リソースにアクセスする各アカウントで必要になるセットアップ**
+ リソースを共有する場合 AWS アカウント、共有リソースを表示するには、コンシューマーアカウントの少なくとも 1 人のユーザーがデータレイク管理者である必要があります。データレイク管理者の作成方法については、「[データレイク管理者を作成する](initial-lf-config.md#create-data-lake-admin)」を参照してください。

  データレイク管理者は、共有リソースに対する Lake Formation 許可をアカウント内の他のプリンシパルに付与できます。他のプリンシパルは、データレイク管理者から共有リソースに対する許可を付与されるまで、そのリソースにアクセスできません。
+ Athena や Redshift Spectrum などの統合されたサービスでは、クエリに共有リソースを含めることができるように、リソースリンクが必要になります。プリンシパルは、その Data Catalog に、別の AWS アカウントアカウントからの共有リソースへのリソースリンクを作成する必要があります。リソースリンクの詳細については、「[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)」を参照してください。
+ リソースを IAM プリンシパルと直接共有する場合、Athena を使用してテーブルをクエリする場合、プリンシパルはそのリソースリンクを作成する必要があります。リソースリンクを作成するには、プリンシパルは Lake Formation の `CREATE_TABLE` または `CREATE_DATABASE` アクセス許可と、`glue:CreateTable` または `glue:CreateDatabase` IAM アクセス許可が必要です。

  プロデューサーアカウントが同じデータベース内の別のテーブルを同じプリンシパルまたは別のプリンシパルと共有している場合、そのプリンシパルはすぐにテーブルをクエリできます。

**注記**  
データレイク管理者と、データレイク管理者から許可が付与されたプリンシパルには、共有リソースがローカル (所有) リソースであるかのように Data Catalog に表示されます。抽出、変換、ロード (ETL) ジョブは、共有リソースの基盤となるデータにアクセスできます。  
共有リソースについては、Lake Formation コンソールの **[Tables]** (テーブル) および **[Databases]** (データベース) ページに所有者のアカウント ID が表示されます。  
共有リソースの基盤となるデータに対するアクセスが行われると、共有リソース受領者のアカウントと、リソース所有者のアカウントの両方で CloudTrail ログイベントが生成されます。CloudTrail イベントには、データにアクセスしたプリンシパルの ARN を含めることができますが、これは受領者アカウントがログにプリンシパル ARN を含めるようにオプトインする場合のみになります。詳細については、「[CloudTrail のクロスアカウントロギング](cross-account-logging.md)」を参照してください。

# クロスアカウントデータ共有のバージョン設定の更新
<a name="optimize-ram"></a>

 は、クロスアカウントデータ共有設定を随時 AWS Lake Formation 更新して、 AWS RAM 使用状況に加えられた変更を区別し、クロスアカウントデータ共有機能に加えられた更新をサポートします。Lake Formation がこれを行うと、**[Cross account version settings]** (クロスアカウントバージョン設定) の新しいバージョンが作成されます。

## クロスアカウントバージョン設定の主な違い
<a name="cross-account-version-diff"></a>

さまざまな **[Cross account version settings]** (クロスアカウントバージョン設定) でのクロスアカウントデータ共有の仕組みの詳細については、以下のセクションを参照してください。

**注記**  
別のアカウントとデータを共有するには、付与者が `AWSLakeFormationCrossAccountManager` マネージド IAM ポリシーのアクセス許可を持っている必要があります。これがすべてのバージョン必須の前提条件です。  
**[Cross account version settings]** (クロスアカウントバージョン設定) を更新しても、共有リソースに対する受信者のアクセス許可には影響しません。これは、バージョン 1 からバージョン 2、バージョン 2 からバージョン 3、バージョン 1 からバージョン 3 への更新の場合に適用されます。バージョンを更新する際は、以下の考慮事項を参照してください。

**バージョン 1**  
*名前付きリソースメソッド: *各クロスアカウント Lake Formation アクセス許可付与を 1 つの AWS RAM リソース共有にマッピングします。ユーザー (付与者ロールまたはプリンシパル) には追加のアクセス許可は必要ありません。  
*LF-TBAC メソッド: *クロスアカウント Lake Formation アクセス許可の付与は、データの共有 AWS RAM に を使用しません。ユーザーには `glue:PutResourcePolicy` アクセス許可が必要です。  
*バージョン更新のメリット: *初期バージョン - 該当しません  
*バージョンを更新する際の考慮事項: *初期バージョン - 該当しません

**バージョン 2**  
*名前付きリソースメソッド: * 複数のクロスアカウントアクセス許可の付与を 1 つの AWS RAM リソース共有にマッピングすることで、 AWS RAM リソース共有の数を最適化します。ユーザーには、追加のアクセス許可は必要ありません。  
*LF-TBAC メソッド: *クロスアカウント Lake Formation アクセス許可の付与は、データの共有 AWS RAM に を使用しません。ユーザーには `glue:PutResourcePolicy` アクセス許可が必要です。  
*バージョンを更新するメリット: * AWS RAM 容量の最適な使用率によるスケーラブルなクロスアカウント設定。  
*バージョンを更新する際の考慮事項: *クロスアカウント Lake Formation アクセス許可を付与するユーザーには、 `AWSLakeFormationCrossAccountManager` AWS マネージドポリシーの アクセス許可が必要です。それ以外の場合は、別のアカウントとリソースを正常に共有するための `ram:AssociateResourceShare` および `ram:DisassociateResourceShare` アクセス許可が必要です。

**バージョン 3**  
*名前付きリソースメソッド: * 複数のクロスアカウントアクセス許可の付与を 1 つの AWS RAM リソース共有にマッピングすることで、 AWS RAM リソース共有の数を最適化します。ユーザーには、追加のアクセス許可は必要ありません。  
*LF-TBAC メソッド: * Lake Formation はクロスアカウント付与 AWS RAM に を使用します。ユーザーは `glue:PutResourcePolicy` アクセス許可に glue: ShareResource ステートメントを追加する必要があります。受信者は、 からのリソース共有の招待を受け入れる必要があります AWS RAM。  
*バージョン更新のメリット: *次の機能をサポートします。  
+ 外部アカウントの IAM プリンシパルとリソースを明示的に共有できます。

  詳細については、「[データカタログリソースに対するアクセス許可の付与](granting-catalog-permissions.md)」を参照してください。
+ Organizations または組織単位 (OU) に対して、LF-TBAC 方式を使用したクロスアカウント共有を可能にします。
+ クロスアカウント付与の追加 AWS Glue ポリシーを維持するオーバーヘッドを排除します。
*バージョンを更新する際の考慮事項:* LF-TBAC 方式を使用してリソースを共有する場合、付与者がバージョン 3 より前のバージョンを使用していて、受信者がバージョン 3 以降を使用していると、付与者に「Invalid cross account grant request. Consumer account has opt-in to cross account version: v3. Please update `CrossAccountVersion` in `DataLakeSetting` to minimal version v3 (Service: AmazonDataCatalog; Status Code: 400; Error Code: InvalidInputException)」というエラーメッセージが表示されます。ただし、付与者がバージョン 3 を使用していて、受信者がバージョン 1 またはバージョン 2 を使用している場合、LF タグを使用したクロスアカウント付与は正常に行われます。  
名前付きリソース方式を使用したクロスアカウント付与は、異なるバージョン間で互換性があります。付与者アカウントが以前のバージョン (バージョン 1 または 2) を使用していて、受信者アカウントが新しいバージョン (バージョン 3 以降) を使用している場合でも、クロスアカウントアクセス機能は互換性の問題やエラーなしでシームレスに動作します。  
リソースを別のアカウントの IAM プリンシパルと直接共有するには、付与者だけがバージョン 3 を使用する必要があります。  
LF-TBAC 方式を使用してクロスアカウント付与を行うには、ユーザーがアカウントに AWS Glue Data Catalog リソースポリシーを持っている必要があります。バージョン 3 に更新すると、LF-TBAC は AWS RAMを使用して付与します。 AWS RAM ベースのクロスアカウント許可を成功させるには、 [AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理](hybrid-cross-account.md)セクションに示すように、 `glue:ShareResource`ステートメントを既存の Data Catalog リソースポリシーに追加する必要があります。

**バージョン 4**  
ハイブリッドアクセスモードでデータカタログリソースを共有したり、フェデレーティッドカタログ内のオブジェクトを共有したりするには、付与者にバージョン 4 以降が必要です。

**バージョン 5**  
クロスアカウントバージョン 5 では、クロスアカウントリソース共有が強化され、無制限の数のテーブルを別のアカウントと共有できるため、リソースタイプごとの以前のリソース関連付け制限がなくなります。開始するには、Lake Formation コンソールまたは API を使用してクロスアカウントバージョン 5 にアップグレードします。新しいクロスアカウントアクセス許可の付与では、個々のリソースの関連付けではなく、リソース共有でワイルドカードパターンが自動的に使用されます。既存のすべてのクロスアカウント共有は引き続き機能し、既存のすべての Lake Formation APIs互換性を維持します。  
*バージョンを更新するメリット: *クロスアカウント v5 はクロスアカウント共有を強化し、アカウント間で数十万のテーブルを共有できるようにします。  
*バージョンを更新する際の考慮事項: *バージョン 5 のアップグレード後の新しい権限では、既存の AWS Resource Manager リソース共有にワイルドカードリソースパターンが追加されるか、ワイルドカードパターンで新しい共有が作成されます。バージョン 5 にアップグレードすると、ダウングレードはサポートされません。

## AWS RAM リソース共有の最適化
<a name="optimize-version"></a>

クロスアカウント付与の新しいバージョン (バージョン 2 以降) では、クロスアカウントの使用を最大化するために AWS RAM 容量が最適に活用されます。外部 AWS アカウント または IAM プリンシパルとリソースを共有すると、Lake Formation は新しいリソース共有を作成するか、リソースを既存の共有に関連付けることができます。Lake Formation は、既存の共有と関連付けることによって、コンシューマーが受け入れる必要があるリソース共有への招待数を減らします。バージョン 5 では、個々のリソースの関連付けの代わりにワイルドカードベースのリソースパターンを使用することで、RAM の使用がさらに最適化されるため、リソース共有あたりのリソースの関連付けが大幅に削減されます。

## TBAC 経由で AWS RAM 共有を有効にするか、リソースをプリンシパルに直接共有する
<a name="ram-tbac-direct-iam-version"></a>

リソースを別のアカウントの IAM プリンシパルと直接共有するか、Organizations や組織単位との TBAC クロスアカウント共有を有効にするには、**[Cross account version settings]** (クロスアカウントバージョン設定) を [Version 3] (バージョン 3) に更新する必要があります。 AWS RAM リソース制限の詳細については、「」を参照してください[クロスアカウントデータ共有のベストプラクティスと考慮事項](cross-account-notes.md)。

### クロスアカウントのバージョン設定の更新に必要なアクセス許可
<a name="req-permissions-version-update"></a>

 クロスアカウント許可の付与者に `AWSLakeFormationCrossAccountManager` マネージド IAM ポリシーのアクセス許可がある場合、クロスアカウントアクセス許可の付与者ロールまたはプリンシパルに追加のアクセス許可設定は必要ありません。ただし、クロスアカウントの付与者がマネージドポリシーを使用していない場合、新しいバージョンのクロスアカウント付与を成功させるには、付与者ロールまたはプリンシパルに次の IAM 許可が付与されている必要があります。

------
#### [ JSON ]

****  

```
  
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
         "ram:AssociateResourceShare",
         "ram:DisassociateResourceShare",
         "ram:GetResourceShares"
       ],
     "Resource": "*",
     "Condition": {
       "StringLike": {
         "ram:ResourceShareName": "LakeFormation*"
        }
      }
    }
  ]
}
```

------

## 新しいバージョンを有効にするには
<a name="version-update-steps"></a>

コンソールまたは を使用して**クロスアカウントバージョン設定**を更新するには、 AWS Lake Formation次の手順に従います AWS CLI。

------
#### [ Console ]

1. **データカタログ****設定ページのクロスアカウントバージョン**設定で、**バージョン 2**、**バージョン 3**、**バージョン 4**、または**バージョン 5 **を選択します。**[Version 1]** (バージョン 1) を選択すると、Lake Formation はデフォルトのリソース共有モードを使用します。  
![\[画面には、アカウント内のすべての LF タグのアクセス許可が表示されます。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/cross-account-version-setting.png)

1. **[保存]** を選択します。

------
#### [ AWS Command Line Interface (AWS CLI) ]

`put-data-lake-settings` AWS CLI コマンドを使用して `CROSS_ACCOUNT_VERSION`パラメータを設定します。使用できる値は 1、2、3、4、5 です。

```
aws lakeformation put-data-lake-settings --region us-east-1 --data-lake-settings file://settings
{
    "DataLakeAdmins": [
        {
            "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/test"
        }
    ],
    "CreateDatabaseDefaultPermissions": [],
    "CreateTableDefaultPermissions": [],
    "Parameters": {
        "CROSS_ACCOUNT_VERSION": "3"
    }
}
```

------

**重要**  
**[Version 2]** (バージョン 2) または **[Version 3]** (バージョン 3) を選択すると、新しい**名前付きリソース**の付与はすべて新しいクロスアカウント付与モードになります。既存のクロスアカウント共有の AWS RAM 容量を最適に使用するには、古いバージョンで行われた許可を取り消し、新しいモードで再付与することをお勧めします。

# 外部アカウントから AWS アカウント または IAM プリンシパル間で Data Catalog テーブルとデータベースを共有する
<a name="cross-account-data-share-steps"></a>

このセクションでは、Data Catalog リソースに対するクロスアカウントアクセス許可を外部 AWS アカウント、IAM プリンシパル、 AWS 組織、または組織単位に付与する方法について説明します。この付与操作は、これらのリソースを自動的に共有します。

**Topics**
+ [タグベースのアクセスコントロールを使用したデータ共有](cross-account-TBAC.md)
+ [名前付きリソース方式を使用したクロスアカウントデータ共有。](cross-account-named-resource.md)

# タグベースのアクセスコントロールを使用したデータ共有
<a name="cross-account-TBAC"></a>

AWS Lake Formation タグベースのアクセスコントロール (LF-TBAC) は、属性に基づいてアクセス許可を定義する認可戦略です。以下の手順では、LF タグを使用してクロスアカウント許可を付与する方法を説明します。

**プロデューサー/付与者アカウントで必要なセットアップ**

1. LF タグを追加します。

   1. Lake Formation コンソールにデータレイク管理者または LF タグ作成者としてサインインします。

   1. ナビゲーションペインで、**[アクセス許可]** の **[LF タグとアクセス許可]** を選択します。

   1. **[Add LF-Tag]** (LF タグを追加) を選択します。

      LF タグの作成手順については、「[LF タグの作成](TBAC-creating-tags.md)」を参照してください。

1. 自分のカウントまたは外部アカウントの IAM プリンシパルに、**LF タグのキーと値**のペアの**記述**および/または**関連付け**のアクセス許可を付与します。

   **LF タグのキーと値**のペアに対するアクセス許可を付与すると、プリンシパルは LF タグを表示し、それをデータカタログリソース (データベース、テーブル、列) に割り当てることができるようになります。

1. 次に、データレイク管理者または**関連付け**アクセス許可を持つ IAM プリンシパルは、データベース、テーブル、または列に LF タグを割り当てることができます。詳細については、「[Data Catalog リソースへの LF タグの割り当て](TBAC-assigning-tags.md)」を参照してください。

1. 次に、LF タグ式を使用して外部アカウントにデータアクセス許可を付与します。これにより、アクセス許可の被付与者または受領者は、同じキーと値でタグ付けされたデータカタログリソースにアクセスできます。

   1. ナビゲーションペインの **[アクセス許可]** で **[データのアクセス許可]** を選択します。

   1. **[付与]** を選択します。

   1. **[アクセス許可の付与]** ページで、**[プリンシパル]** に **[外部アカウント]** を選択し、外部プリンシパルに直接クロスアカウント付与を行う場合は、プリンシパルの被付与者 AWS アカウント ID もしくは IAM ロール、またはプリンシパルの Amazon リソースネーム (ARN) (プリンシパル ARN) を入力します。アカウント ID を入力した後、**Enter** キーを押します。  
![\[外部アカウントと LF タグのキーと値のペアが指定されたアクセス許可の付与画面。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/cross-acct-grant-tags.png)

   1. **[LF タグまたはカタログリソース]** で、**[LF タグに一致するリソース (推奨)]** を選択します。

      1. オプションの **[LF タグのキーと値のペア]** または **[保存された LF タグ式]** を選択します。

      1. ****[LF タグのキーと値のペア]** を選択した場合は**、被付与者アカウントと共有されているデータカタログリソースに関連付けられている **LF タグ**のキーと値を入力します。

         被付与者には、LF タグ式で一致する LF タグが割り当てられたデータカタログリソースに対するアクセス許可が付与されます。LF タグ式がタグキーごとに複数の値を指定する場合、タグ値のいずれかを一致させることができます。

   1. LF タグ式と一致するリソースに付与する、データベースレベルまたはテーブルレベルのアクセス許可を選択します。
**重要**  
データレイク管理者は、共有リソースに対するアクセス許可を被付与者アカウント内のプリンシパルに付与する必要があるため、クロスアカウントアクセス許可は、常に付与オプションと共に付与される必要があります。

      詳細については、「[コンソールを使用した LF-Tag アクセス許可の付与](TBAC-granting-tags-console.md)」を参照してください。
**注記**  
クロスアカウント付与を直接受け取るプリンシパルには、**[Grantable permissions]** (付与可能なアクセス許可) オプションがありません。

**受信者側/被付与者アカウントで必要なセットアップ**

1. Lake Formation コンソールにデータレイク管理者としてサインインします。

1.  次に、コンシューマーアカウントでリソース共有を受け取ります。

   1.  AWS RAM コンソールを開きます。

   1.  ナビゲーションペインの **[自分と共有]**で、**[リソース共有]** を選択します。

   1.  リソース共有を選択し、**[リソース共有を受け入れる]** を選択します。

1. 別のアカウントとリソースを共有しても、そのリソースは引き続きプロデューサーアカウントに属し、Athena コンソール内には表示されません。リソースを Athena コンソールで表示するには、共有リソースを指すリソースリンクを作成する必要があります。リソースリンクの作成手順については、「[共有 Data Catalog テーブルへのリソースリンクの作成](create-resource-link-table.md)」および「[共有 Data Catalog データベースへのリソースリンクの作成](create-resource-link-database.md)」を参照してください。

   1.  データカタログで **[データベース]** または **[テーブル]** を選択します。

   1. [データベース/テーブル] ページで、**作成]**、**[リソースリンク]** を選択します。

   1. データベースリソースリンクに次の情報を入力します。
      + **リソースリンク名** – リソースリンクの一意の名前。
      + **送信先カタログ** – リソースリンクを作成するカタログ。
      + **共有データベースのリージョン** - 別のリージョンでリソースリンクを作成する場合は、共有するベースのリージョン。
      + **共有データベース** – 共有データベースを選択します。
      + **共有データベースのカタログ ID** – 共有データベースのカタログ ID を入力します。

   1.  **[作成]** を選択します。新しく作成されたリソースリンクは、データベースリストに表示されます。

   同様に、共有テーブルへのリソースリンクを作成できます。

1. ここで、リソースを共有する IAM プリンシパルへのリソースリンクに対する **記述**アクセス許可を付与します。

   1. **[データベース/テーブル]**ページでリソースリンクを選択し、**[アクション]** メニューで、**[付与]** を選択します。

   1. **[アクセス許可を付与]** セクションで、**[IAM ユーザーとロール]** を選択します。

   1. リソースリンクへのアクセスを許可する IAM ロールを選択します。

   1. **[リソースリンク]** のアクセス許可セクションで、**[記述]** を選択します。

   1. **[付与]** を選択します。

1. 次に、コンシューマーアカウントのプリンシパルに **[LF タグのキーと値のアクセス許可]** を付与します。

   共有されている LF タグは、Lake Formation コンソールのコンシューマーアカウントにある、**[アクセス許可]** の **[LF タグとアクセス許可]** で確認できます。付与者から共有されたタグを、データベース、テーブル、列を含む付与者アカウントから共有されたリソースに関連付けることができます。また、リソースに対するアクセス許可を他のプリンシパルに付与できます。  
![\[画面には、アカウントの LF タグのアクセス許可が表示されます。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/lf-tag-permissions.png)

   1.  ナビゲーションペインで、**[アクセス許可]**、**[データレイクのアクセス許可]** の順に移動し、**[付与]** を選択します。

   1.  **[アクセス許可の付与]** ページで、**[IAM ユーザーとロール]** を選択します。

   1. 次に、アカウント内の IAM ユーザーとロールを選択して、共有データベース/テーブルへのアクセスを許可します。

   1. **[LF タグまたはカタログリソース]** で、**[LF タグに一致するリソース]** を選択します。

   1.  次に、共有されている LF タグのキーと値を選択します。

   1.  次に、IAM ユーザーとロールに付与するデータベースとテーブルのアクセス許可を選択します。また、IAM ユーザーとロールが他のユーザー/ロールにアクセス許可を付与できるようにする **[付与可能なアクセス許可]** を選択することもできます。

   1.  **[付与]** を選択します。

   1. Lake Formation コンソールの **[データのアクセス許可]** でアクセス許可の付与を表示できます。

# 名前付きリソース方式を使用したクロスアカウントデータ共有。
<a name="cross-account-named-resource"></a>

アクセス許可は、別の AWS アカウントのプリンシパル、または外部 AWS アカウント または に直接付与できます AWS Organizations。Lake Formation のアクセス許可を Organizations または組織単位に付与することは、その組織または組織単位 AWS アカウント のすべての にアクセス許可を付与することと同じです。

外部のアカウントまたは組織にアクセス許可を付与する場合は、**[Grantable permissions]** (付与可能なアクセス許可) オプションを含める必要があります。共有リソースにアクセスできるのは、外部アカウント内のデータレイク管理者が外部アカウント内の他のプリンシパルに共有リソースに対する許可を付与するまで、データレイク管理者のみになります。

**注記**  
外部アカウントから IAM プリンシパルに直接アクセス許可を付与する場合、**[Grantable permissions]** (付与可能なアクセス許可) オプションはサポートされません。

「[名前付きリソース方式を使用したデータベースのアクセス許可の付与](granting-database-permissions.md)」の手順に従い、名前付きリソース方式を使用してクロスアカウント許可を付与します。

 次の動画は、Lake Formation を使用して AWS 組織とデータを共有する方法を示しています。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/S-Mdcmq6oPM?controls=0&/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/S-Mdcmq6oPM?controls=0&)


# アカウントと共有されたデータベースまたはテーブルに対する許可の付与
<a name="regranting-shared-resources"></a>

別の AWS アカウントに属する Data Catalog リソースがアカウント AWS と共有されると、データレイク管理者として、共有リソースに対するアクセス許可をアカウントの他のプリンシパルに付与できます。ただし、リソースに対する許可を他の AWS アカウントまたは組織に付与することはできません。

 AWS Lake Formation コンソール、API、または AWS Command Line Interface (AWS CLI) を使用してアクセス許可を付与できます。

**共有データベースに対する許可を付与する (名前付きリソース方式、コンソール)**
+ 「[名前付きリソース方式を使用したデータベースのアクセス許可の付与](granting-database-permissions.md)」の手順を実行します。**[LF-Tags or catalog resources]** (LF タグまたはカタログリソース) の **[Database]** (データベース) リストでは、外部アカウントのデータベースを選択して、データベースのリソースリンクは選択しないようにしてください。

  データベースのリストにデータベースが表示されない場合は、そのデータベースの AWS Resource Access Manager (AWS RAM) リソース共有招待を承諾していることを確認してください。詳細については、「[からのリソース共有の招待の承諾 AWS RAM](accepting-ram-invite.md)」を参照してください。

  また、`CREATE_TABLE` および `ALTER` 許可については、「[データロケーション許可の付与 (同じアカウント)](granting-location-permissions-local.md)」の手順を実行し、**[Registered account location]** (登録されたアカウントのロケーション) に所有側のアカウント ID を入力するようにしてください。

**共有テーブルに対する許可を付与する (名前付きリソース方式、コンソール)**
+ 「[名前付きリソース方式を使用したテーブル許可の付与](granting-table-permissions.md)」の手順を実行します。**[LF-Tags or catalog resources]** (LF タグまたはカタログリソース) の **[Database]** (データベース) リストでは、外部アカウントのデータベースを選択して、データベースのリソースリンクは選択しないようにしてください。

  テーブルのリストにテーブルが表示されない場合は、そのテーブルの AWS RAM リソース共有招待を承諾していることを確認してください。詳細については、「[からのリソース共有の招待の承諾 AWS RAM](accepting-ram-invite.md)」を参照してください。

  また、`ALTER` 許可については、「[データロケーション許可の付与 (同じアカウント)](granting-location-permissions-local.md)」の手順を実行し、**[Registered account location]** (登録されたアカウントのロケーション) に所有側のアカウント ID を入力するようにしてください。

**共有リソースに対する許可を付与する (LF-TBAC 方式、コンソール)**
+ 「[データカタログ許可の付与](granting-catalog-perms-TBAC.md#granting-cat-perms-TBAC-console)」の手順を実行します。**[LF タグまたはカタログリソース]** セクションで、外部アカウントがアカウントに付与したものと同一の LF タグ式、またはその式のサブセットを付与します。

  例えば、外部アカウントが LF タグ式 `module=customers AND environment=production` を付与オプションでアカウントに付与した場合は、データレイク管理者として、同じ式や、`module=customers` または `environment=production` をアカウント内のプリンシパルに付与できます。付与できるのは、リソースに対して LF タグ式で付与された Lake Formation 許可 (例えば `SELECT` や `ALTER` など) と同じ許可、またはそのサブセットのみです。

**共有テーブルに対するアクセス許可を付与するには (名前付きリソースメソッド AWS CLI)**
+ 以下のようなコマンドを入力します。この例では、以下のようになっています。
  +  AWS アカウント ID は 1111-2222-3333 です。
  + テーブルを所有し、それをアカウントに付与したアカウントは 1234-5678-9012 です。
  + 共有テーブル `pageviews` に対する `SELECT` 許可がユーザー `datalake_user1` に付与されています。そのユーザーはアカウントのプリンシパルです。
  + `pageviews` テーブルは、アカウント 1234-5678-9012 が所有する `analytics` データベースにあります。

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

  `resource` 引数の `CatalogId` プロパティには、所有側のアカウントを指定する必要があることに注意してください。

# リソースリンク許可の付与
<a name="granting-link-permissions"></a>

 AWS アカウントのプリンシパルに 1 つ以上のリソースリンクに対する AWS Lake Formation アクセス許可を付与するには、次の手順に従います。

リソースリンクの作成後は、作成したユーザーのみがそのリンクを表示してアクセスすることができます。(これは、データベースに **[Use only IAM access control for new tables in this database]** (このデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する) が有効化されていないことを前提としています。) アカウント内の他のプリンシパルがリソースリンクにアクセスすることを許可するには、少なくとも `DESCRIBE` 許可を付与してください。

**重要**  
リソースリンクに対する許可を付与しても、ターゲットの (リンクされた) データベースまたはテーブルに対する許可は付与されません。ターゲットに対する許可は、別途付与する必要があります。

Lake Formation コンソール、 API、または AWS Command Line Interface () を使用してアクセス許可を付与できますAWS CLI。

------
#### [ console ]

**Lake Formation コンソールを使用してリソースリンク許可の付与するには**

1. 次のいずれかを行います。
   + データベースリソースリンクの場合は、「[名前付きリソース方式を使用したデータベースのアクセス許可の付与](granting-database-permissions.md)」の手順に従って以下を実行します。

     1.  [データカタログ] の **[データベース]** で、データベースリストからリソースリンクを選択します。

     1.  **[付与]** を選択して**[アクセス許可の付与]** ページを開きます。

     1.  アクセス許可を付与するプリンシパルを指定します。

     1.  **[カタログ]** フィールドと **[データベース]** フィールドにデータが入力されます。
   + テーブルリソースリンクの場合は、「[名前付きリソース方式を使用したテーブル許可の付与](granting-table-permissions.md)」の手順に従って以下を実行します。

     1.  [データカタログ] の **[テーブル]** で、テーブルリストからリソースリンクを選択します。

     1. **[アクセス許可の付与]** ページを開きます。

     1.  プリンシパルを指定します。

     1.  **[カタログ]**、**[データベース]**、**[テーブル]** フィールドにデータが入力されます。

     1.  プリンシパルを指定します。

1. **[Permissions]** (許可) で、付与する許可を選択します。オプションで、[Grantable Permissions] (付与可能な許可) を選択します。  
![\[[アクセス許可] セクションには タイルが 1 つあります。タイルには、付与するリソースリンクへのアクセス許可に対するチェックボックスのグループがあります。チェックボックスには [ドロップ]、[記述]、および [スーパー] があります。そのグループの下には、付与可能な許可に対する同じチェックボックスのグループがもう 1 つあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/grant-resource-link-permissions-TBAC.png)

1. **[Grant]** (付与) を選択します。

------
#### [ AWS CLI ]

**を使用してリソースリンクのアクセス許可を付与するには AWS CLI**
+ リソースリンクをリソースとして指定して、`grant-permissions` コマンドを実行します。  
**Example**  

  この例では`DESCRIBE`、 AWS アカウント 1111-2222-3333 `datalake_user1`のデータベース`incidents-link`内のテーブルリソースリンク`issues`の ユーザーに を付与します。

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

------

**以下も参照してください。**  
 [リソースリンクの作成](creating-resource-links.md) 
 [Lake Formation 許可のリファレンス](lf-permissions-reference.md) 

# 共有テーブルの基盤となるデータへのアクセス
<a name="cross-account-read-data"></a>

 AWS アカウント A がデータカタログテーブルをアカウント B と共有しているとします。たとえば、 にテーブルの付与オプション`SELECT`を指定してアカウント B に付与します。アカウント B のプリンシパルが共有テーブルの基盤となるデータを読み取れるようにするには、次の条件を満たす必要があります。
+ アカウント B のデータレイク管理者が共有を承諾すること。(これは、アカウント A と B が同じ組織内にある場合、またはこの付与が Lake Formation のタグベースのアクセスコントロール方式で行われた場合は必要ありません。)
+ アカウント A が付与した共有テーブルに対する Lake Formation `SELECT` 許可を、データレイク管理者がプリンシパルに再度付与すること。
+ プリンシパルが、テーブル、テーブルが含まれるデータベース、およびアカウント A Data Catalog に対する以下の IAM 許可を持っていること。
**注記**  
以下の IAM ポリシーで、これらを実行してください。  
*<account-id-A>* を AWS アカウント A のアカウント ID に置き換えます。
*<region>* を有効なリージョンに置き換える。
*<database>* を、アカウント A 内の共有テーブルが含まれるデータベースの名前に置き換える。
*<table>* を共有テーブルの名前に置き換える。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "glue:GetTable",
              "glue:GetTables",
              "glue:GetPartition",
              "glue:GetPartitions",
              "glue:BatchGetPartition",
              "glue:GetDatabase",
              "glue:GetDatabases"
             ],
             "Resource": [
              "arn:aws:glue:us-east-1:111122223333:table/<database>/<table>",
              "arn:aws:glue:us-east-1:111122223333:database/<database>",
              "arn:aws:glue:us-east-1:111122223333:catalog"
             ]
          },
          {
            "Effect": "Allow",
            "Action": [
              "lakeformation:GetDataAccess"
             ],
            "Resource": [
              "*"
             ]
      }
     ]
  }
  ```

------

**以下も参照してください。**  
[からのリソース共有の招待の承諾 AWS RAM](accepting-ram-invite.md)

# CloudTrail のクロスアカウントロギング
<a name="cross-account-logging"></a>

Lake Formation は、データレイク内のデータに対するすべてのクロスアカウントアクセスの一元的な監査証跡を提供します。受信者 AWS アカウントが共有テーブルのデータにアクセスすると、Lake Formation は CloudTrail イベントを所有アカウントの CloudTrail ログにコピーします。コピーされたイベントには、 Amazon Athena や Amazon Redshift Spectrum などの統合サービスによるデータに対するクエリと、AWS Glueジョブによるデータアクセスが含まれます。

Data Catalog リソースへのクロスアカウント操作に関する CloudTrail イベントも、同様にコピーされます。

リソース所有者として Amazon S3 でのオブジェクトレベルのロギングを有効にすると、S3 CloudTrail イベントと Lake Formation CloudTrail イベントを結合するクエリを実行して、S3 バケットにアクセスしたアカウントを特定することができます。

**Topics**
+ [クロスアカウント CloudTrail ログにプリンシパルアイデンティティを含める](#cross-account-logging-optin)
+ [Amazon S3 クロスアカウントアクセスの CloudTrail ログのクエリ](#cross-account-logging-s3)

## クロスアカウント CloudTrail ログにプリンシパルアイデンティティを含める
<a name="cross-account-logging-optin"></a>

デフォルトでは、共有リソース受信者のログに追加され、リソース所有者のログにコピーされたクロスアカウント CloudTrail イベントには、外部アカウントプリン AWS シパルのプリンシパル ID のみが含まれ、プリンシパル (プリンシパル ARN) の人間が読み取り可能な Amazon リソースネーム (ARN) は含まれません。同じ組織またはチーム内などの信頼できる境界範囲内でリソースを共有するときは、CloudTrail イベントにプリンシパル ARN を含めることをオプトインできます。そうすることで、リソース所有者アカウントは、アカウントが所有するリソースにアクセスする受領者アカウントのプリンシパルを追跡できるようになります。

**重要**  
共有リソースの受領者として独自の CloudTrail ログ内のイベントのプリンシパル ARN を表示するには、所有者アカウントとプリンシパル ARN を共有することをオプトインする必要があります。  
リソースリンク経由でデータアクセスが行われる場合、リソースリンクへのアクセスと、ターゲットリソースへのアクセスの 2 つのイベントが、共有リソース受領者のアカウントにログに記録されます。リソースリンクアクセスのイベントには、プリンシパル ARN が*含まれて*います。オプトインされなかった場合、ターゲットリソースアクセスのイベントにプリンシパル ARN は含まれません。リソースリンクアクセスイベントは、所有者アカウントにコピーされません。

以下は、デフォルトのクロスアカウント CloudTrail イベント (オプトインなし) からの抜粋です。データアクセスを実行するアカウントは 1111-2222-3333 です。これは、呼び出し側のアカウントとリソース所有者アカウントの両方に表示されるログです。クロスアカウントの場合、Lake Formation は両方のアカウントにログを入力します。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSAccount",
        "principalId": "AROAQGFTBBBGOBWV2EMZA:GlueJobRunnerSession",
        "accountId": "111122223333"
    },
    "eventSource": "lakeformation.amazonaws.com",
    "eventName": "GetDataAccess",
...
...
    "additionalEventData": {
        "requesterService": "GLUE_JOB",
        "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-G13T0Rmng2"
    },
...
}
```

共有リソースのコンシューマーとしてプリンシパル ARN を含めることをオプトインすると、この抜粋は以下のようになります。`lakeFormationPrincipal` フィールドは、Amazon Athena、Amazon Redshift Spectrum、または AWS Glue ジョブを使用してクエリを実行するエンドロールまたはユーザーを表します。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "AWSAccount",
        "principalId": "AROAQGFTBBBGOBWV2EMZA:GlueJobRunnerSession",
        "accountId": "111122223333"
    },
    "eventSource": "lakeformation.amazonaws.com",
    "eventName": "GetDataAccess",
...
...
    "additionalEventData": {
        "requesterService": "GLUE_JOB",
        "lakeFormationPrincipal": "arn:aws:iam::111122223333:role/ETL-Glue-Role",
        "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-G13T0Rmng2"
    },
...
}
```

**クロスアカウント CloudTrail ログにプリンシパル ARN を含めることをオプトインする**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   `Administrator` ユーザー、または `Administrator Access` の IAM ポリシーを持つユーザーとしてサインインします。

1. ナビゲーションペインで **[Settings]** (設定) を選択します。

1. **データカタログ設定**ページの**「 のデフォルトアクセス許可 AWS CloudTrail**」セクションで、**リソース所有者**に 1 つ以上の AWS リソース所有者アカウント ID を入力します。 IDs

   各アカウント ID の後で **Enter** キーを押します。

1. **[Save]** (保存) を選択します。

   これで、共有リソース受領者とリソース所有者両方のログに保存されるクロスアカウント CloudTrail イベントに、プリンシパル ARN が含まれるようになりました。

## Amazon S3 クロスアカウントアクセスの CloudTrail ログのクエリ
<a name="cross-account-logging-s3"></a>

共有リソース所有者は、S3 CloudTrail ログをクエリして、Amazon S3 バケットにアクセスしたアカウントを特定することができます (Amazon S3 でオブジェクトレベルのロギングが有効化されている場合)。これは、Lake Formation に登録した S3 ロケーションのみに適用されます。共有リソースのコンシューマーが Lake Formation CloudTrail ログにプリンシパル ARN を含めることをオプトインする場合は、バケットにアクセスしたロールまたはユーザーを特定することができます。

を使用してクエリを実行する場合 Amazon Athena、セッション名プロパティで Lake Formation CloudTrail イベントと S3 CloudTrail イベントを結合できます。クエリは、Lake Formation イベントを `eventName="GetDataAccess"` で、S3 イベントを `eventName="Get Object"` または `eventName="Put Object"` でフィルタリングすることもできます。

以下は、登録された S3 ロケーションのデータに対するアクセスが行われた Lake Formation クロスアカウント CloudTrail イベントからの抜粋です。

```
{
  "eventSource": "lakeformation.amazonaws.com",
  "eventName": "GetDataAccess",
  ..............
  ..............
  "additionalEventData": {
    "requesterService": "GLUE_JOB",
    "lakeFormationPrincipal": "arn:aws:iam::111122223333:role/ETL-Glue-Role",
    "lakeFormationRoleSessionName": "AWSLF-00-GL-111122223333-B8JSAjo5QA"
   }
}
```

`lakeFormationRoleSessionName` キーの値である `AWSLF-00-GL-111122223333-B8JSAjo5QA` は、S3 CloudTrail イベントの `principalId` キーにあるセッション名と結合させることができます。以下は、S3 CloudTrail イベントからの抜粋です。これには、セッション名のロケーションが表示されています。

```
{
   "eventSource": "s3.amazonaws.com",
   "eventName": "Get Object"
   ..............
   ..............
   "principalId": "AROAQSOX5XXUR7D6RMYLR:AWSLF-00-GL-111122223333-B8JSAjo5QA",
   "arn": "arn:aws:sets::111122223333:assumed-role/Deformationally/AWSLF-00-GL-111122223333-B8JSAjo5QA",  
   "session Context": {
     "session Issuer": {
       "type": "Role",
       "principalId": "AROAQSOX5XXUR7D6RMYLR",
       "arn": "arn:aws:iam::111122223333:role/aws-service-role/lakeformation.amazonaws.com/Deformationally",
       "accountId": "111122223333",
       "user Name": "Deformationally"
     },
   ..............
   ..............
}
```

セッション名は以下のような形式になります。

```
AWSLF-<version-number>-<query-engine-code>-<account-id->-<suffix>
```

**`version-number`**  
この形式のバージョンは、現在 `00` です。セッション名の形式が変更される場合、次のバージョンは `01` になります。

**`query-engine-code`**  
データにアクセスしたエンティティを示します。現在の値は次のとおりです。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/cross-account-logging.html)

**`account-id`**  
Lake Formation から認証情報をリクエストした AWS アカウント ID。

**`suffix`**  
ランダムに生成された文字列。

# AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理
<a name="hybrid-cross-account"></a>

AWS Glue または AWS Lake Formationを使用することで、Data Catalog リソースと基盤となるデータに対するクロスアカウントアクセス権を付与することが可能です。

AWS Glue では、データカタログリソースポリシーを作成または更新することでクロスアカウント許可を付与します。Lake Formation では、Lake Formation の `GRANT/REVOKE` 許可モデルと、`Grant Permissions` API 操作を使用することによって、クロスアカウント許可を付与します。

**ヒント**  
データレイクをセキュア化するには、Lake Formation 許可のみに頼ることをお勧めします。

Lake Formation のクロスアカウント付与を表示するには、Lake Formation コンソールまたは AWS Resource Access Manager (AWS RAM) コンソールを使用します。ただし、これらのコンソールページには、AWS Glue Data Catalog リソースポリシーによって付与されたクロスアカウント許可が表示されません。同様に、AWS Glue コンソールの **[Settings]** (設定) ページを使用して Data Catalog リソースポリシー内のクロスアカウント許可を表示することはできますが、そのページに Lake Formation を使用して付与されたクロスアカウント許可は表示されません。

クロスアカウント許可を表示および管理するときに付与を見落とさないようにするため、Lake Formation と AWS Glue では、以下のアクションを実行して、Lake Formation と AWS Glue の両方によるクロスアカウント付与を認識しており、それらを許可していることを示す必要があります。

**AWS Glue Data Catalog リソースポリシーを使用してクロスアカウント許可を付与する場合**  
アカウント (付与者アカウントまたはプロデューサーアカウント) が、 AWS RAM を使用してリソースを共有するクロスアカウント付与を行っていない場合は、データカタログリソースポリシーを通常どおり AWS Glue に保存できます。ただし、 AWS RAM リソース共有を含む許可がすでに作成されている場合は、リソースポリシーの保存が成功するように、次のいずれかを実行する必要があります。
+ AWS Glue コンソールの [**Settings**] (設定) ページでリソースポリシーを保存するときは、ポリシー内の許可が Lake Formation コンソールを使用して付与された許可に追加されることを示す警告が、コンソールに表示されます。**[Proceed]** (続行) を選択してポリシーを保存する必要があります。
+ `glue:PutResourcePolicy` API オペレーションを使用してリソースポリシーを保存するときは、`EnableHybrid` フィールドを「`TRUE`」(型 = 文字列) に設定する必要があります。

  既存のリソースポリシーを更新するには、`glue:GetResourcePolicy` API オペレーションを使用してまず現在のポリシーを取得し、必要に応じて変更してから `glue:PutResourcePolicy` を呼び出します。
**注記**  
クロスアカウントアクセス用の AWS Glue リソースポリシーを作成するときは、特定のユースケースに必要な最小限のアクセス許可のみを付与します。

  詳細については、「*AWS Glue デベロッパーガイド*」の「[PutResourcePolicy アクション (Python: put\$1resource\$1policy)](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-security.html#aws-glue-api-jobs-security-PutResourcePolicy)」を参照してください。

**Lake Formation の名前付きリソース方式を使用してクロスアカウント許可を付与する場合**  
アカウント (プロデューサーアカウント) にデータカタログリソースポリシーがない場合、Lake Formation クロスアカウント付与は通常どおりに実行されます。ただし、Data Catalog リソースポリシーが存在する場合は、以下のステートメントをポリシーに追加して、クロスアカウント付与が名前付きリソース方式で行われた場合でもそれらが成功することを許可する必要があります。*<region>* を有効なリージョン名に置き換え、*<account-id>* を AWS アカウント ID (プロデューサーアカウント ID) に置き換えます。

```
    {
      "Effect": "Allow",
      "Action": [
        "glue:ShareResource"
      ],
      "Principal": {"Service": [
        "ram.amazonaws.com"
      ]},
      "Resource": [
        "arn:aws:glue:<region>:<account-id>:table/*/*",
        "arn:aws:glue:<region>:<account-id>:database/*",
        "arn:aws:glue:<region>:<account-id>:catalog"
      ]
    }
```

この追加のステートメントがないと、Lake Formation 許可は成功しますが、ブロックされ AWS RAM、受信者アカウントは付与されたリソースにアクセスできません。

**重要**  
クロスアカウント付与を実行するために Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方式も使用している場合、少なくとも「[前提条件](cross-account-prereqs.md)」で指定されている許可がある Data Catalog リソースポリシーが必要です。

**以下も参照してください。**  
「[メタデータのアクセスコントロール](access-control-metadata.md)」(名前付きリソース方式と Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方式の説明)
[共有 Data Catalog テーブルとデータベースの表示](viewing-available-shared-resources.md)
「*AWS Glue デベロッパーガイド*」の「[AWS Glue コンソールでのデータカタログ設定の使用](https://docs.aws.amazon.com/glue/latest/dg/console-data-catalog-settings.html)」
「*AWS Glue デベロッパーガイド*」の「[クロスアカウントアクセス許可の付与](https://docs.aws.amazon.com/glue/latest/dg/cross-account-access.html)」(データカタログリソースポリシーのサンプル)

# GetResourceShares API 操作を使用したすべてのクロスアカウント付与の表示
<a name="cross-account-getresourcepolicies"></a>

企業がリソース AWS Glue Data Catalog ポリシーと Lake Formation 許可の両方を使用してクロスアカウント許可を付与する場合、すべてのクロスアカウント許可を 1 か所に表示する唯一の方法は、 `glue:GetResourceShares` API オペレーションを使用することです。

名前付きリソースメソッドを使用してアカウント間で Lake Formation アクセス許可を付与すると、 AWS Resource Access Manager (AWS RAM) は AWS Identity and Access Management (IAM) リソースポリシーを作成し、 AWS アカウントに保存します。このポリシーは、リソースへのアクセスに必要なアクセス許可を付与します。 は、クロスアカウント付与ごとに個別のリソースポリシー AWS RAM を作成します。`glue:GetResourceShares` API 操作を使用することで、これらすべてのポリシーを表示することができます。

**注記**  
この操作は、Data Catalog リソースポリシーも返します。ただし、Data Catalog 設定でメタデータ暗号化を有効にし、 AWS KMS キーに対するアクセス許可がない場合、オペレーションは Data Catalog リソースポリシーを返しません。

**すべてのクロスアカウント付与を表示する**
+ 次のコマンドを入力します AWS CLI 。

  ```
  aws glue get-resource-policies
  ```

以下は、`t`データベースのテーブルに対するアクセス許可を AWS アカウント 1111-2222-3333 `db1`に付与するときに AWS RAM 作成および保存するリソースポリシーの例です。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "glue:GetTable",
         "glue:GetTables",
         "glue:GetTableVersion",         
         "glue:GetTableVersions",
         "glue:GetPartition", 
         "glue:GetPartitions",
         "glue:BatchGetPartition",
         "glue:SearchTables"
       ],
      "Principal": {"AWS": [
        "111122223333"
      ]},
      "Resource": [
      "arn:aws:glue:us-east-1:111122223333:table/db1/t"
     ]
    }
  ]
}
```

------

**以下も参照してください。**  
*AWS Glue デベロッパーガイド*の「[GetResourceShares アクション (Python: get\$1resource\$1policies)](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-security.html#aws-glue-api-jobs-security-GetResourcePolicies)」

# 共有 Data Catalog テーブルとデータベースへのアクセスと表示
<a name="viewing-shared-resources"></a>

データレイク管理者とアクセス許可が付与されたプリンシパルの場合、 AWS アカウントと共有されているリソースは、アカウント内のリソースであるかのように Data Catalog に表示されます。コンソールには、リソースを所有するアカウントが表示されます。

アカウントと共有されているリソースは、Lake Formation コンソールを使用することで表示できます。 AWS Resource Access Manager (AWS RAM) コンソールを使用して、 アカウントと共有されているリソースと、名前付きリソースメソッドを使用して他の AWS アカウントと共有したリソースの両方を表示することもできます。

**重要**  
名前付きリソースメソッドを使用して Data Catalog リソースに対するクロスアカウントアクセス許可をアカウントまたは AWS 組織に付与すると、Lake Formation は AWS Resource Access Manager (AWS RAM) サービスを使用してリソースを共有します。アカウントが付与アカウントと同じ AWS 組織にある場合、共有リソースはすぐに使用できます。  
ただし、アカウントが同じ組織にない場合、 はリソース共有を承認または拒否するための招待をアカウント AWS RAM に送信します。次に、共有リソースを使用できるようにするには、アカウントのデータレイク管理者が AWS RAM コンソールまたは CLI を使用して招待を受け入れる必要があります。  
Lake Formation コンソールには、承諾を待っている AWS RAM リソース共有の招待がある場合にアラートが表示されます。 AWS RAM 招待の表示を許可されたユーザーのみがアラートを受け取ります。

**以下も参照してください。**  
[AWS アカウント間でのデータカタログテーブルとデータベースの共有](sharing-catalog-resources.md)
[Lake Formation でのクロスアカウントデータ共有](cross-account-permissions.md)
[共有テーブルの基盤となるデータへのアクセス](cross-account-read-data.md)
「[メタデータのアクセスコントロール](access-control-metadata.md)」(リソースを共有するための名前付きリソース方式と LF-TBAC 方式に関する情報)

**Topics**
+ [からのリソース共有の招待の承諾 AWS RAM](accepting-ram-invite.md)
+ [共有 Data Catalog テーブルとデータベースの表示](viewing-available-shared-resources.md)

# からのリソース共有の招待の承諾 AWS RAM
<a name="accepting-ram-invite"></a>

Data Catalog リソースが AWS アカウントと共有されており、アカウントが共有アカウントと同じ AWS 組織内にない場合、 AWS Resource Access Manager () からのリソース共有の招待を受け入れるまで、共有リソースにアクセスすることはできませんAWS RAM。データレイク管理者として、まず保留中の招待 AWS RAM をクエリしてから、招待を受け入れる必要があります。

 AWS RAM コンソール、API、または AWS Command Line Interface (AWS CLI) を使用して、招待を表示および承諾できます。

**からリソース共有の招待を表示して受け入れるには AWS RAM (コンソール)**

1. リソース共有の招待を表示して承諾するために必要な AWS Identity and Access Management (IAM) アクセス許可があることを確認します。

   データレイク管理者に推奨される IAM ポリシーについては、「[データレイク管理者の許可](permissions-reference.md#persona-dl-admin)」を参照してください。

1. *AWS RAM ユーザーガイド*の「[招待の受け入れと拒否](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared.html#working-with-shared-invitation)」にある手順を実行します。

**( AWS RAM AWS CLI) からリソース共有の招待を表示して受け入れるには**

1. リソース共有の招待を表示して承諾するために必要な AWS Identity and Access Management (IAM) アクセス許可があることを確認します。

   データレイク管理者に推奨される IAM ポリシーについては、「[データレイク管理者の許可](permissions-reference.md#persona-dl-admin)」を参照してください。

1. 以下のコマンドを入力して、保留中のリソース共有招待を表示します。

   ```
   aws ram get-resource-share-invitations
   ```

   出力は以下のようになります。

   ```
   {
       "resourceShareInvitations": [
           {
               "resourceShareInvitationArn": "arn:aws:ram:us-east-1:111122223333:resource-share-invitation/a93aa60a-1bd9-46e8-96db-a4e72eec1d9f",
               "resourceShareName": "111122223333-123456789012-uswuU",
               "resourceShareArn": "arn:aws:ram:us-east-1:111122223333:resource-share/2a4ab5fb-d859-4751-84f7-8760b35fc1fe",
               "senderAccountId": "111122223333",
               "receiverAccountId": "123456789012",
               "invitationTimestamp": 1589576601.79,
               "status": "PENDING"
           }
       ]
   }
   ```

   `PENDING` のステータスに注意してください。

1. `resourceShareInvitationArn` キーの値をクリップボードにコピーします。

1. その値を以下のコマンドに貼り付けて *<invitation-arn>* を置き換え、コマンドを入力します。

   ```
   aws ram accept-resource-share-invitation --resource-share-invitation-arn <invitation-arn>
   ```

   出力は以下のようになります。

   ```
   {
       "resourceShareInvitations": [
           {
               "resourceShareInvitationArn": "arn:aws:ram:us-east-1:111122223333:resource-share-invitation/a93aa60a-1bd9-46e8-96db-a4e72eec1d9f",
               "resourceShareName": "111122223333-123456789012-uswuU",
               "resourceShareArn": "arn:aws:ram:us-east-1:111122223333:resource-share/2a4ab5fb-d859-4751-84f7-8760b35fc1fe",
               "senderAccountId": "111122223333",
               "receiverAccountId": "123456789012",
               "invitationTimestamp": 1589576601.79,
               "status": "ACCEPTED"
           }
       ]
   }
   ```

   `ACCEPTED` のステータスに注意してください。

# 共有 Data Catalog テーブルとデータベースの表示
<a name="viewing-available-shared-resources"></a>

アカウントと共有されているリソースは、Lake Formation コンソール、または AWS CLI を使用することで表示できます。 AWS Resource Access Manager (AWS RAM) コンソールまたは CLI を使用して、アカウントと共有されているリソースと、他の AWS アカウントと共有しているリソースの両方を表示することもできます。

**Lake Formation コンソールを使用して共有リソースを表示する**

1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   データレイク管理者、または共有テーブルに対する許可を付与されたユーザーとしてサインインします。

1.  AWS アカウントと共有されているリソースを表示するには、次のいずれかを実行します。
   + アカウントと共有されたテーブルを表示するには、ナビゲーションペインで **[Tables]** (テーブル) を選択します。
   + アカウントと共有されたデータベースを表示するには、ナビゲーションペインで **[Databases]** (データベース) を選択します。

   コンソールに、アカウント内のデータベースまたはテーブル、およびアカウントと共有されたデータベースまたはテーブルの両方のリストが表示されます。アカウントと共有されたリソースについては、コンソールの **[Owner account ID]** (所有者アカウント ID) 列に所有者の AWS アカウント ID が表示されます (以下のスクリーンショットでは 3 番目の列)。  
![\[[Tables] (テーブル) ページには、テーブルの異なる所有者アカウント ID が表示されます。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/tables-with-shared.png)

1. 他の AWS アカウントまたは組織と共有したリソースを表示するには、ナビゲーションペインで**データアクセス許可**を選択します。

   共有したリソースは、以下の画像にあるように **[Data permissions]** (データの許可) ページにリストされ、**[Principal]** (プリンシパル) 列に外部アカウント番号が表示されます。  
![\[[Data permissions] (データの許可) ページに、アカウントがテーブルに対する許可を外部アカウントに付与したことが示されています。 AWS アカウント ID はプリンシパル列の下にあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/permissions-with-cross.png)

**AWS RAM コンソールを使用して共有リソースを表示するには**

1. を使用して共有リソースを表示するために必要な AWS Identity and Access Management (IAM) アクセス許可があることを確認します AWS RAM。

   少なくとも `ram:ListResources` 許可が必要です。この許可は、AWS マネージドポリシーの `AWSLakeFormationCrossAccountManager` に含まれています。

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/ram/home](https://console.aws.amazon.com/ram/home) で AWS RAM コンソールを開きます。

1. 次のいずれかを行います。
   + ユーザーが共有したリソースを表示するには、ナビゲーションペインの **[Shared by me]** (自分が共有) で **[Shared resources]** (共有リソース) を選択します。
   + ユーザーと共有されているリソースを表示するには、ナビゲーションペインの **[Shared by me]** (自分と共有) で **[Shared resources]** (共有リソース) を選択します。

# リソースリンクの作成
<a name="creating-resource-links"></a>

リソースリンクは、メタデータデータベースとテーブルへのリンクである Data Catalog オブジェクトです。通常は、他の AWS アカウントの共有データベースとテーブルへのリンクです。これにより、すべての AWS リージョンでデータレイク内のデータへのクロスアカウントアクセスが可能になります。

**注記**  
Lake Formation は AWS 、リージョン間でのデータカタログテーブルのクエリをサポートしています。異なる AWS リージョンの共有データベースとテーブルを指すリソースリンクをそれらのリージョンに作成することで、任意のリージョンから Data Catalog データベースとテーブルにアクセスできます。

**Topics**
+ [Lake Formation でのリソースリンクの仕組み](resource-links-about.md)
+ [共有 Data Catalog テーブルへのリソースリンクの作成](create-resource-link-table.md)
+ [共有 Data Catalog データベースへのリソースリンクの作成](create-resource-link-database.md)
+ [AWS Glue API でのリソースリンク処理](resource-links-glue-apis.md)

# Lake Formation でのリソースリンクの仕組み
<a name="resource-links-about"></a>

*リソースリンク*は、ローカルまたは共有のデータベースやテーブルへのリンクである データカタログオブジェクトです。データベースまたはテーブルへのリソースリンクを作成すると、そのデータベース名やテーブル名を使用する場所ならどこでもリソースリンク名を使用することができます。テーブルのリソースリンクは、`glue:GetTables()` によってユーザーが所有するテーブル、またはユーザーと共有されたテーブルとともに返され、Lake Formation コンソールの **[Tables]** (テーブル) ページにエントリとして表示されます。データベースへのリソースリンクも同様に機能します。

データベースまたはテーブルへのリソースリンクを作成すると、以下を実行できるようになります。
+ Data Catalog 内のデータベースまたはテーブルに異なる名前を割り当てる。これは、異なる AWS アカウントが同じ名前のデータベースまたはテーブルを共有する場合、またはアカウント内の複数のデータベースに同じ名前のテーブルがある場合に特に便利です。
+ 任意の AWS リージョンから Data Catalog データベースとテーブルにアクセスするには、別のリージョンのデータベースとテーブルを指すリソースリンクをそれらのリージョンに作成します。ソースデータやメタデータを Glue データカタログにコピーしなくても、これらのリソースリンクを Athena や Amazon EMR で使用してどのリージョンでもクエリを実行し、 AWS Glue ETL Spark ジョブを実行できます。
+  Amazon Athena や Amazon Redshift Spectrum などの統合 AWS サービスを使用して、共有データベースやテーブルにアクセスするクエリを実行します。統合サービスには、アカウントをまたいでデータベースやテーブルに直接アクセスできないものがありますが、アカウントにある他のアカウントのデータベースやテーブルへのリソースリンクにアクセスすることは可能です。

**注記**  
AWS Glue 抽出、変換、ロード (ETL) スクリプトで共有データベースやテーブルを参照するためにリソースリンクを作成する必要はありませんが、複数の AWS アカウントが同じ名前のデータベースやテーブルを共有している場合の曖昧さを回避するために、リソースリンクを作成して使用するか、ETL 操作の呼び出し時にカタログ ID を指定することができます。

以下は、2 つのリソースリンクが表示されている Lake Formation コンソールの **[Tables]** (テーブル) ページの例です。リソースリンクの名前は、常にイタリック体で表示されます。各リソースリンクは、リンクされた共有リソースの名前と所有者と共に表示されます。この例では、 AWS アカウント 1111-2222-3333 のデータレイク管理者が、 テーブル`inventory`と `incidents`テーブルをアカウント 1234-5678-9012 と共有しました。共有後、そのアカウントのユーザーがそれらの共有テーブルへのリソースリンクを作成しました。

![\[[Tables] (テーブル) ページに 2 つのリソースリンクが表示されています。リソースリンク名は [Name] (名前) 列、共有テーブル名は [Shared resource] (共有リソース) 列、テーブルを共有したアカウントは [Shared resource owner] (共有リソース所有者) 列に表示されています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/tables-with-links.png)


以下は、リソースリンクに関する注意点と制限です。
+ リソースリンクでは、共有テーブルの基盤となるデータをクエリするために、Athena および Redshift Spectrum などの統合サービスを有効にすることが必要になります。これらの統合サービスでのクエリは、リソースリンク名に対して作成されます。
+ テーブルが含まれるデータベースの **[Use only IAM access control for new tables in this database]** (このデータベースの新しいテーブルには IAM アクセス制御のみを使用する) 設定がオフになっていることを前提とすると、データベースを表示してそれにアクセスできるのは、リソースリンクを作成したプリンシパルのみになります。アカウント内の他のプリンシパルがリソースリンクにアクセスできるようにするには、それに対する `DESCRIBE` 許可を付与します。他のユーザーがリソースリンクをドロップできるようにするには、それに対する `DROP` 許可を付与します。データレイク管理者は、アカウント内のすべてのリソースリンクにアクセスできます。別のプリンシパルが作成したリソースリンクをドロップするには、まずデータレイク管理者がリソースリンクに対する `DROP` 許可を管理者自身に付与する必要があります。詳細については、「[Lake Formation 許可のリファレンス](lf-permissions-reference.md)」を参照してください。
**重要**  
リソースリンクに対する許可を付与しても、ターゲットの (リンクされた) データベースまたはテーブルに対する許可は付与されません。ターゲットに対する許可は、別途付与する必要があります。
+ リソースリンクを作成するには、Lake Formation `CREATE_TABLE`または アクセス`CREATE_DATABASE`許可と、 `glue:CreateTable`または `glue:CreateDatabase` AWS Identity and Access Management (IAM) アクセス許可が必要です。
+ ローカル (所有) Data Catalog リソースと、 AWS アカウントと共有されているリソースへのリソースリンクを作成できます。
+ リソースリンクを作成するときに、ターゲット共有リソースが存在するかどうか、またはそのリソースに対するクロスアカウント許可があるかどうかを確認するためのチェックは実行されません。これは、リソースリンクと共有リソースを任意の順序で作成できるようにします。
+ リソースリンクを削除しても、リンクされた共有リソースはドロップされません。共有リソースをドロップしても、そのリソースへのリソースリンクは削除されません。
+ リソースリンクチェーンを作成することが可能ですが、API は最初のリソースリンクのみを使用するので、作成する価値はありません。

**以下も参照してください。**  
[データカタログリソースに対するアクセス許可の付与](granting-catalog-permissions.md)

# 共有 Data Catalog テーブルへのリソースリンクの作成
<a name="create-resource-link-table"></a>

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して、任意の AWS リージョンの共有テーブルへのリソースリンクを作成できますAWS CLI。

**共有テーブルへのリソースリンクを作成するには (コンソール)**

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開きます。リソースリンクの保存先になるデータベースに対する Lake Formation `CREATE_TABLE` 許可を持つプリンシパルとしてサインインします。

1. ナビゲーションペインの [データカタログ] で、**[テーブル]** を選択し、**[作成]**、**[リソースリンク]** の順に選択します。

1. **[リソースリンクの作成]** ページで、以下の情報を入力します。  
**[Resource link name] (リソースリンク名)**  
テーブル名と同じルールに従う名前を入力します。名前は、ターゲット共有テーブルと同じものにすることができます。  
**[Database] (データベース)**  
リソースリンクの保存先になるローカル Data Catalog 内のデータベースです。  
**[共有テーブル所有者のリージョン]**  
別のリージョンでリソースリンクを作成する場合は、ターゲット共有テーブルのリージョンを選択します。  
**[Shared table] (共有テーブル)**  
リストから共有テーブルを選択するか、ローカル (所有する) または共有テーブル名を入力します。  
このリストには、アカウントと共有されているすべてのテーブルが含まれています。各テーブルにリストされているデータベースと所有者アカウント ID に注意してください。アカウントと共有されていることが分かっているテーブルが表示されない場合は、以下を確認してください。  
   + データレイク管理者ではない場合は、データレイク管理者からそのテーブルに対する Lake Formation 許可が付与されていることを確認します。
   + データレイク管理者であり、アカウントが付与元のアカウントと同じ AWS 組織にない場合は、テーブルに関する AWS Resource Access Manager (AWS RAM) リソース共有招待を承諾していることを確認します。詳細については、「[からのリソース共有の招待の承諾 AWS RAM](accepting-ram-invite.md)」を参照してください。  
**[Shared table's database] (共有テーブルのデータベース)**  
リストから共有テーブルを選択した場合、このフィールドには外部アカウントにある共有テーブルのデータベースが入力されます。入力されていないときは、ローカルデータベース (ローカルテーブルへのリソースリンクの場合)、または外部アカウントにある共有テーブルのデータベースを入力します。  
**[Shared table owner] (共有テーブル所有者)**  
リストから共有テーブルを選択した場合、このフィールドには共有テーブルの所有者アカウント ID が入力されます。それ以外の場合は、 AWS アカウント ID (ローカルテーブルへのリソースリンク用) またはテーブルを共有した AWS アカウントの ID を入力します。

1. **[Create]** (作成) を選択して、リソースリンクを作成します。

   その後、**[Tables]** (テーブル) ページの **[Name]** (名前) 列でリソースリンク名を確認することができます。

1. (オプション) リンクを表示してリンク先のテーブルにアクセスできることが必要なプリンシパルに対して、リソースリンクへの Lake Formation の `DESCRIBE` 許可を付与します。

   ただし、リソースリンクへのアクセス許可を付与しても、ターゲットの (リンクされた) データベースまたはテーブルへのアクセス許可は付与されません。Athena でテーブル/リソースリンクが表示されるようにするには、ターゲットのデータベースへのアクセス許可を別途付与する必要があります。

**同じリージョン内の共有テーブルへのリソースリンクを作成するには (AWS CLI)**

1. 以下のようなコマンドを入力します。

   ```
   aws glue create-table --database-name myissues --table-input '{"Name":"my_customers","TargetTable":{"CatalogId":"111122223333","DatabaseName":"issues","Name":"customers"}}'
   ```

   このコマンドは、 AWS アカウント 1111-2222-3333 のデータベース `issues` にある共有テーブル `customers` に `my_customers` という名前のリソースリンクを作成します。リソースリンクは、ローカルデータベース `myissues` に保存されます。

1. (オプション) リンクを表示してリンク先のテーブルにアクセスできることが必要なプリンシパルに対して、リソースリンクへの Lake Formation の `DESCRIBE` 許可を付与します。

   リソースリンクへのアクセス許可を付与しても、ターゲットの (リンクされた) データベースまたはテーブルへのアクセス許可は付与されません。Athena でテーブル/リソースリンクが表示されるようにするには、ターゲットのデータベースへのアクセス許可を別途付与する必要があります。

**異なるリージョン内の共有テーブルへのリソースリンクを作成するには (AWS CLI)**

1. 以下のようなコマンドを入力します。

   ```
   aws glue create-table --region eu-west-1 --cli-input-json '{
       "CatalogId": "111122223333",
       "DatabaseName": "ireland_db",
       "TableInput": {
           "Name": "rl_useast1salestb_ireland",
           "TargetTable": {
               "CatalogId": "444455556666",
               "DatabaseName": "useast1_salesdb",
               "Region": "us-east-1",
               "Name":"useast1_salestb"
           }
       }
   }‘
   ```

   このコマンドは、米国東部 (バージニア北部) リージョン`rl_useast1salestb_ireland`の AWS アカウント 444455556666 `useast1_salesdb`のデータベースにある共有テーブル に`useast1_salestb`、 という名前のリソースリンクを作成します。リソースリンクは、ローカルデータベース `ireland_db` に保存されます。

1. リンクを表示してリンク先にアクセスできることが必要なプリンシパルに対して、Lake Formation の `DESCRIBE` 許可を付与します。

   リソースリンクへのアクセス許可を付与しても、ターゲットの (リンクされた) データベースまたはテーブルへのアクセス許可は付与されません。Athena でテーブル/リソースリンクが表示されるようにするには、ターゲットのテーブルへのアクセス許可を別途付与する必要があります。

**以下も参照してください。**  
[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)
[`DESCRIBE`](lf-permissions-reference.md#perm-describe)

# 共有 Data Catalog データベースへのリソースリンクの作成
<a name="create-resource-link-database"></a>

 AWS Lake Formation コンソール、API、または AWS Command Line Interface () を使用して、共有データベースへのリソースリンクを作成できますAWS CLI。

**共有データベースへのリソースリンクを作成する (コンソール)**

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で AWS Lake Formation コンソールを開きます。データレイク管理者またはデータベース作成者としてサインインします。

   データベース作成者は、Lake Formation の `CREATE_DATABASE` 許可を付与されたプリンシパルです。

1. ナビゲーションペインで、**[データベース]** を選択し、**[作成]**、**[リソースリンク]** の順に選択します。

1. **[リソースリンクの作成]** ページで、以下の情報を入力します。  
**[Resource link name] (リソースリンク名)**  
データベース名と同じルールに従う名前を入力します。名前は、ターゲット共有データベースと同じものにすることができます。  
**送信先カタログ**  
データベースリソースリンクの送信先カタログを選択します。  
**[共有データベース所有者のリージョン]**  
別のリージョンでリソースリンクを作成する場合は、ターゲットの共有データベースのリージョンを選択します。  
**[Shared database] (共有データベース)**  
リストからデータベースを選択するか、ローカル (所有する) または共有データベース名を入力します。  
このリストには、アカウントと共有されているすべてのデータベースが含まれています。各データベースにリストされている所有者アカウント ID に注意してください。アカウントと共有されていることが分かっているデータベースが表示されない場合は、以下を確認してください。  
   + データレイク管理者ではない場合は、データレイク管理者からそのデータベースに対する Lake Formation 許可が付与されていることを確認します。
   + データレイク管理者であり、アカウントが付与元のアカウントと同じ AWS 組織にない場合は、データベースに関する AWS Resource Access Manager (AWS RAM) リソース共有招待を承諾していることを確認します。詳細については、「[からのリソース共有の招待の承諾 AWS RAM](accepting-ram-invite.md)」を参照してください。  
**[Shared database owner] (共有データベース所有者)**  
リストから共有データベースを選択した場合、このフィールドには共有データベースの所有者アカウント ID が入力されます。それ以外の場合は、 AWS アカウント ID (ローカルデータベースへのリソースリンク用) またはデータベースを共有した AWS アカウントの ID を入力します。  
**共有データベースのカタログ ID**  
共有データベースのカタログ ID を入力します。別の AWS アカウントから共有されているデータベースへのリソースリンクを作成するときは、このカタログ ID を指定して、どのアカウントのデータカタログにソースデータベースが含まれているかを特定する必要があります。  
ドロップダウンメニューから共有データベースを選択すると、そのデータベースを所有し、共有しているアカウントのカタログ ID が自動的に入力されます。  
![\[[Database details] (データベースの詳細) ダイアログボックスでは [Resource link] (リソースリンク) ラジオボタンが選択されており、[Resource link name] (リソースリンク名)、[Shared database] (共有データベース)、および [Shared database owner ID] (共有データベース所有者 ID) フィールドが入力されています。共有データベース所有者 ID は無効になっています (読み取り専用)。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/create-resource-link-db.png)

1. **[Create]** (作成) を選択して、リソースリンクを作成します。

   その後、**[Database]** (データベース) ページの **[Name]** (名前) 列でリソースリンク名を確認することができます。

1. (オプション) リンクを表示してリンク先のデータベースにアクセスできることが必要な、欧州 (アイルランド) リージョンのプリンシパルに対して、リソースリンクへの Lake Formation の `DESCRIBE` 許可を付与します。

   ただし、リソースリンクへのアクセス許可を付与しても、ターゲットの (リンクされた) データベースまたはテーブルへのアクセス許可は付与されません。Athena でテーブル/リソースリンクが表示されるようにするには、ターゲットのデータベースへのアクセス許可を別途付与する必要があります。

**同じリージョン内の共有データベースへのリソースリンクを作成するには (AWS CLI)**

1. 以下のようなコマンドを入力します。

   ```
   aws glue create-database --database-input '{"Name":"myissues","TargetDatabase":{"CatalogId":"111122223333","DatabaseName":"issues"}}'
   ```

   このコマンドは、 AWS アカウント 1111-2222-3333 にある共有データベース `myissues`に `issues`という名前のリソースリンクを作成します。

1. (オプション) リンクを表示してリンク先のデータベースにアクセスする許可が必要なプリンシパルに、リソースリンクに対する Lake Formation `DESCRIBE` アクセス許可を付与します。

   ただし、リソースリンクへのアクセス許可を付与しても、ターゲットの (リンクされた) データベースまたはテーブルへのアクセス許可は付与されません。Athena でテーブル/リソースリンクが表示されるようにするには、ターゲットのデータベースへのアクセス許可を別途付与する必要があります。

**異なるリージョン内の共有データベースへのリソースリンクを作成するには (AWS CLI)**

1. 以下のようなコマンドを入力します。

   ```
   aws glue create-database --region eu-west-1 --cli-input-json '{
       "CatalogId": "111122223333",
       "DatabaseInput": {
         "Name": "rl_useast1shared_irelanddb",
         "TargetDatabase": {
             "CatalogId": "444455556666",
             "DatabaseName": "useast1shared_db",
             "Region": "us-east-1"
          }
       }
   }'
   ```

   このコマンドは、欧州 (アイルランド) リージョン`rl_useast1shared_irelanddb`の AWS アカウント 111122223333 に という名前のリソースリンクを作成し`useast1shared_db`、共有データベース を作成します。共有データベース は、米国東部 (バージニア北部) リージョンの AWS アカウント 444455556666 にあります。

1. リンクを表示してリンク先にアクセスできることが必要な、欧州 (アイルランド) リージョンのプリンシパルに対して、Lake Formation の `DESCRIBE` 許可を付与します。

**以下も参照してください。**  
[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)
[`DESCRIBE`](lf-permissions-reference.md#perm-describe)

# AWS Glue API でのリソースリンク処理
<a name="resource-links-glue-apis"></a>

以下は、AWS Glue Data Catalog API がデータベースおよびテーブルリソースリンクを処理する方法を説明する表です。すべての `Get*` API オペレーションで、呼び出し側が許可を持つデータベースとテーブルのみが返されます。また、リソースリンクを介してターゲットデータベースまたはテーブルにアクセスする場合、ターゲットとリソースリンクの両方に対する AWS Identity and Access Management (IAM) と Lake Formation の両方のアクセス許可が必要です。リソースリンクに対する必要な Lake Formation 許可は `DESCRIBE` です。詳細については、「[`DESCRIBE`](lf-permissions-reference.md#perm-describe)」を参照してください。


**データベースの API オペレーション**  

| API オペレーション: | リソースリンクの処理 | 
| --- | --- | 
| CreateDatabase | データベースがリソースリンクである場合、指定されたターゲットデータベースへのリソースリンクを作成します。 | 
| UpdateDatabase | 指定されたデータベースがリソースリンクである場合、リンクをたどってターゲットデータベースを更新します。リソースリンクを異なるデータベースにリンクするように変更する必要がある場合は、リソースリンクを削除して、新しいリソースリンクを作成する必要があります。 | 
| DeleteDatabase | リソースリンクを削除します。リンクされた (ターゲット) データベースは削除しません。 | 
| GetDatabase | 呼び出し元がターゲットに対する許可を持っている場合、リンクをたどってターゲットのプロパティを返します。それ以外の場合は、リンクのプロパティを返します。 | 
| GetDatabases | リソースリンクを含めたデータベースのリストを返します。結果セット内のリソースリンクごとに操作がリンクをたどり、リンクターゲットのプロパティを取得します。アカウントと共有されているデータベースを表示するには、ResourceShareType = ALL を指定する必要があります。 | 


**テーブルの API オペレーション**  

| API オペレーション: | リソースリンクの処理 | 
| --- | --- | 
| CreateTable | データベースがリソースリンクである場合、データベースリンクをたどってターゲットデータベース内にテーブルを作成します。テーブルがリソースリンクである場合は、操作が指定されたデータベースでリソースリンクを作成します。データベースリソースリンクを経由したテーブルリソースリンクの作成はサポートされていません。 | 
| UpdateTable | テーブルまたは指定されたデータベースがリソースリンクである場合、ターゲットテーブルを更新します。テーブルとデータベースの両方がリソースリンクである場合は、操作が失敗します。 | 
| DeleteTable | 指定されたデータベースがリソースリンクである場合、リンクをたどってターゲットデータベース内のテーブルまたはテーブルリソースリンクを削除します。テーブルがリソースリンクである場合は、操作が指定されたデータベース内のテーブルリソースリンクを削除します。テーブルリソースリンクを削除しても、ターゲットテーブルは削除されません。 | 
| BatchDeleteTable | DeleteTable と同じです。 | 
| GetTable | 指定されたデータベースがリソースリンクである場合、データベースリンクをたどってターゲットデータベース内からテーブルまたはテーブルリソースリンクを返します。そうでない場合、テーブルがリソースリンクであれば、操作がリンクをたどってターゲットテーブルのプロパティを返します。 | 
| GetTables | 指定されたデータベースがリソースリンクである場合、データベースリンクをたどってターゲットデータベース内からテーブルとテーブルリソースリンクを返します。ターゲットデータベースが別の AWS アカウントの共有データベースである場合、オペレーションはそのデータベースの共有テーブルのみを返します。これは、ターゲットデータベース内のテーブルリソースリンクをたどりません。そうでない場合、指定されたデータベースがローカル (所有する) データベースであれば、操作がローカルデータベース内のすべてのテーブルを返し、各テーブルリソースリンクをたどってターゲットテーブルのプロパティを返します。 | 
| SearchTables | テーブルとテーブルリソースリンクを返します。これは、リンクをたどってターゲットテーブルのプロパティを返しません。アカウントと共有されているテーブルを表示するには、ResourceShareType = ALL を指定する必要があります。 | 
| GetTableVersion | GetTable と同じです。 | 
| GetTableVersions | GetTable と同じです。 | 
| DeleteTableVersion | DeleteTable と同じです。 | 
| BatchDeleteTableVersion | DeleteTable と同じです。 | 


**パーティションの API オペレーション**  

| API オペレーション: | リソースリンクの処理 | 
| --- | --- | 
| CreatePartition | 指定されたデータベースがリソースリンクである場合、データベースリンクをたどって、ターゲットデータベース内に指定されたテーブルにパーティションを作成します。テーブルがリソースリンクである場合は、操作がリソースリンクをたどってターゲットテーブルにパーティションを作成します。テーブルリソースリンクとデータベースリソースリンクの両方を通じたパーティションの作成はサポートされていません。 | 
| BatchCreatePartition | CreatePartition と同じです。 | 
| UpdatePartition | 指定されたデータベースがリソースリンクである場合、データベースリンクをたどって、ターゲットデータベース内にある指定されたテーブルのパーティションを更新します。テーブルがリソースリンクである場合は、操作がリソースリンクをたどってターゲットテーブルのパーティションを更新します。テーブルリソースリンクとデータベースリソースリンクの両方を通じたパーティションの更新はサポートされていません。 | 
| DeletePartition | 指定されたデータベースがリソースリンクである場合、データベースリンクをたどって、ターゲットデータベース内にある指定されたテーブルのパーティションを削除します。テーブルがリソースリンクである場合は、操作がリソースリンクをたどってターゲットテーブルのパーティションを削除します。テーブルリソースリンクとデータベースリソースリンクの両方を通じたパーティションの削除はサポートされていません。 | 
| BatchDeletePartition | DeletePartition と同じです。 | 
| GetPartition | 指定されたデータベースがリソースリンクである場合、データベースリンクをたどって指定されたテーブルからのパーティション情報を返します。そうでない場合、テーブルがリソースリンクであれば、操作がリンクをたどってパーティション情報を返します。テーブルとデータベースの両方がリソースリンクである場合は、空の結果セットが返されます。 | 
| GetPartitions | 指定されたデータベースがリソースリンクである場合、データベースリンクをたどって、指定されたテーブル内のすべてのパーティションのパーティション情報を返します。そうでない場合、テーブルがリソースリンクであれば、操作がリンクをたどってパーティション情報を返します。テーブルとデータベースの両方がリソースリンクである場合は、空の結果セットが返されます。 | 
| BatchGetPartition | GetPartition と同じです。 | 


**ユーザー定義関数の API オペレーション**  

| API オペレーション: | リソースリンク処理 | 
| --- | --- | 
| (すべての API オペレーション) | データベースがリソースリンクである場合は、リソースリンクをたどり、ターゲットデータベースで操作を実行します。 | 

**以下も参照してください。**  
[Lake Formation でのリソースリンクの仕組み](resource-links-about.md)

# クロスリージョンのテーブルアクセス
<a name="data-access-across-region"></a>

Lake Formation は AWS 、リージョン間でのデータカタログテーブルのクエリをサポートしています。Amazon Athena、Amazon EMR、および AWS Glue ETL を使用して他のリージョンからリージョンのデータにアクセスするには、ソースデータベースとテーブルを指す他のリージョンに[リソースリンクを作成します](creating-resource-links.md)。クロスリージョンのテーブルアクセスでは、基になるデータやメタデータをデータカタログ内にコピーしなくても、複数のリージョンをまたいでデータにアクセスできます。

例えば、リージョン A でプロデューサーアカウントのデータベースやテーブルをコンシューマーアカウントと共有できます。コンシューマーアカウントのデータレイク管理者は、リージョン A でリソース共有の招待を受け入れ、共有リソースへのリソースリンクをリージョン B に作成できます。コンシューマーアカウント管理者は、リージョン A でアカウントの IAM プリンシパルに対して、共有リソースへのアクセス許可を付与し、リージョン B のリソースリンクへのアクセス許可を付与できます。このリソースリンクを使用して、コンシューマーアカウントのプリンシパルは、リージョン B から共有データにクエリを実行できます。

 リージョン A の Amazon S3 データソースをプロデューサーアカウントでホストし、データの場所をリージョン B の中央アカウントに登録することもできます。中央アカウントでデータカタログのリソースを作成し、Lake Formation のアクセス許可を設定して、自分のアカウントまたはリージョン B の外部アカウントとデータを共有できます。クロスリージョン機能により、ユーザーはリソースリンクを使用してリージョン C から、これらのデータカタログのテーブルにアクセスできます。

この機能を使用すると、複数のリージョンをまたいで Apache Hive メタストアにあるフェデレーションデータベースにクエリを実行したり、クエリを実行するときにローカルリージョンのテーブルを別のリージョンのテーブルと結合したりできます。

Lake Formation は、クロスリージョンのテーブルアクセスで以下の機能をサポートしています。
+ LF タグベースのアクセス制御
+ きめ細かなアクセス制御のアクセス許可
+ 適切なアクセス許可を使用した共有データベースやテーブルへの書き込みオペレーション 
+ アカウントレベルでのクロスアカウントのデータ共有と IAM プリンシパルレベルでの直接データ共有

管理者以外のユーザーでも、`Create_Database` や `Create_Table` アクセス許可があれば、クロスリージョンのリソースリンクを作成できます。

**注記**  
 Lake Formation のアクセス許可を適用しなくても、任意のリージョンでクロスリージョンのリソースリンクを作成し、データにアクセスできます。Lake Formation に登録されていない Amazon S3 のソースデータの場合、アクセスは Amazon S3 の IAM アクセス許可ポリシーと AWS Glue アクションによって決まります。

制限事項については、「[クロスリージョンのデータアクセスに関する制限](x-region-considerations.md)」を参照してください。

## ワークフロー
<a name="cross-region-workflow"></a>

次の図は、同じ AWS アカウントと外部アカウントから AWS リージョン間でデータにアクセスするためのワークフローを示しています。

### 同じ AWS アカウント内で共有されているテーブルにアクセスするためのワークフロー
<a name="cross-region-workflow-same-account"></a>

 次の図では、データは米国東部 (バージニア北部) リージョンの同じ AWS アカウントのユーザーと共有され、ユーザーは欧州 (アイルランド) リージョンから共有データをクエリします。

![\[Diagram showing data sharing between AWS アカウント across regions with numbered steps.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/cross-region-same-account.png)


データレイク管理者は、以下のアクティビティ (ステップ 1～2) を実行します。

1. データレイク管理者は、Data Catalog データベースとテーブルで AWS アカウントを設定し、Amazon S3 データロケーションを米国東部 (バージニア北部) リージョンの Lake Formation に登録します。

   同じアカウントのプリンシパル (ユーザー) に対してデータカタログのリソース (図内の製品テーブル) への `Select` アクセス許可を付与します。

1. 米国東部 (バージニア北部) リージョンのソーステーブルを指すリソースリンクを欧州 (アイルランド) リージョンに作成します。欧州 (アイルランド) リージョンのリソースリンクへの `DESCRIBE` アクセス許可をプリンシパルに付与します。

1. ユーザーは Athena を使用して欧州 (アイルランド) リージョンからテーブルにクエリを実行します。

### 外部 AWS アカウントと共有されているテーブルにアクセスするためのワークフロー
<a name="cross-region-workflow-x-account"></a>

下の図で、プロデューサーアカウント (アカウント A) は Amazon S3 バケットをホストし、データの場所を登録して、データカタログのテーブルを米国東部 (バージニア北部) リージョンのコンシューマーアカウント (アカウント B) と共有します。コンシューマーアカウント (アカウント B) のユーザーは、欧州 (アイルランド) リージョンからテーブルにクエリを実行します。

![\[Diagram showing data sharing between AWS アカウント across regions using Amazon S3 and Data Catalog.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/cross-region-x-account.png)


1. データレイク管理者は、米国東部 (バージニア北部) リージョンで、データカタログリソースと Lake Formation に登録された Amazon S3 データロケーションを使用して AWS アカウント (プロデューサーアカウント) を設定します。

1.  プロデューサーアカウントのデータレイク管理者は、データカタログのテーブルをコンシューマーアカウントと共有します。

1. コンシューマーアカウントのデータレイク管理者は、米国東部 (バージニア北部) リージョンでデータ共有の招待を受け入れ、同じリージョンからプリンシパルに対して共有テーブルへの `Select` アクセス許可を付与します。

1. コンシューマーアカウントのデータレイク管理者は、米国東部 (バージニア北部) リージョンのターゲット共有テーブルを指すリソースリンクを欧州 (アイルランド) リージョンに作成し、欧州 (アイルランド) リージョンのリソースリンクへの `DESCRIBE` アクセス許可をユーザーに付与します。

1.  ユーザーは Athena を使用して欧州 (アイルランド) リージョンからデータにクエリを実行します。

# クロスリージョンのテーブルアクセスの設定
<a name="setup-cross-region-access"></a>

別のリージョンのデータにアクセスするには、まず Amazon S3 データの場所を登録したリージョンで、データカタログのデータベースとテーブルを設定する必要があります。データカタログのデータベースとテーブルは、自分のアカウントまたは別のアカウントのプリンシパルと共有できます。次に、ユーザーがデータにクエリを実行するリージョンで、ターゲット共有データの場所を指すリソースリンクを作成できるデータレイク管理者を作成する必要があります。

**同じアカウント内の共有データに別のリージョンからクエリを実行するには**

このセクションでは、ターゲット共有テーブルがあるリージョンをリージョン A とし、ユーザーはリージョン B からクエリを実行するものとします。

1. 

**リージョン A (データを作成および共有する場所) でのアカウント設定**

   データレイク管理者は、以下のアクションを実行する必要があります。

   1. Amazon S3 データの場所を登録します。

      詳細については、「[データレイクへの Amazon S3 ロケーションの追加](register-data-lake.md)」を参照してください。

   1.  アカウントでデータベースとテーブルを作成します。管理者以外のユーザーでも、データベースとテーブルを作成するアクセス許可があれば、作成できます。

   1. `Grantable permissions` を使用して、テーブルのデータへのアクセス許可をプリンシパルに付与します。

      詳細については、「[データカタログリソースに対するアクセス許可の付与](granting-catalog-permissions.md)」を参照してください。

1. 

**リージョン B (データにアクセスする場所) でのアカウント設定**

   データレイク管理者は、以下のアクションを実行する必要があります。

   1. リージョン A のターゲット共有テーブルを指すリソースリンクをリージョン B に作成します。**[テーブルを作成]** 画面で、**[共有テーブル所有者のリージョン]** を指定します。  
![\[Create table interface showing options for resource link creation and shared table details.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/cross-region-resource-link.png)

      データベースやテーブルへのリソースリンクの作成手順については、「[リソースリンクの作成](creating-resource-links.md)」を参照してください。

   1. リージョン B のリソースリンクへの `Describe` アクセス許可を IAM プリンシパルに付与します。

      リソースリンクへのアクセス許可の付与の詳細については、「[リソースリンク許可の付与](granting-link-permissions.md)」を参照してください。

      リージョン B の IAM プリンシパルは、Athena を使用してリンク経由でターゲットテーブルにクエリを実行できます。

**別のリージョンのクロスアカウントデータにアクセスするには**

1. 

**プロデューサー/付与者のアカウント設定**

   データレイク管理者は、以下のアクションを実行する必要があります。

   1. リージョン A でプロデューサー/付与者アカウントを設定します。

   1.  Amazon S3 データの場所をリージョン A に登録します。

   1.  データベースとテーブルを作成します。管理者以外のユーザーでも、テーブルを作成するアクセス許可があれば、作成できます。

   1. `Grantable permissions` を使用して、リージョン A のテーブルのデータへのアクセス許可をコンシューマー/被付与者アカウントに付与します。

      詳細については、「[外部アカウントから AWS アカウント または IAM プリンシパル間で Data Catalog テーブルとデータベースを共有する](cross-account-data-share-steps.md)」を参照してください。

1. 

**コンシューマー/被付与者のアカウント設定**

   データレイク管理者は、以下のアクションを実行する必要があります。

   1.  リージョン A の からリソース共有の招待を受け入れ AWS RAM ます。

   1. 共有テーブルへのリソースリンクをリージョン B に作成します。リージョン B は、ユーザーがテーブルにクエリを実行する場所です。

   1. リージョン A で共有テーブルのデータへのアクセス許可を IAM プリンシパルに付与します。
**注記**  
テーブルを共有したのと同じリージョンで、共有したテーブルにアクセス許可を付与する必要があります。

   1. リージョン B でリソースリンクへのアクセス許可をプリンシパルに付与します。

      リージョン B のコンシューマーアカウントのプリンシパルは、Athena を使用してリージョン B から共有テーブルにクエリを実行します。