

# IAM アイデンティティセンターが有効な Athena ワークグループを使用する
<a name="workgroups-identity-center"></a>

[信頼された ID の伝播](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overview.html)は、接続された AWS のサービス の管理者がサービスデータへのアクセスを許可および監査するために使用できる AWS IAM アイデンティティセンター 機能です。このデータへのアクセスは、グループの関連付けなどのユーザー属性に基づいています。信頼された ID の伝播を設定するには、接続された AWS のサービス の管理者と IAM アイデンティティセンターの管理者とのコラボレーションが必要です。詳細については、「[Prerequisites and considerations](https://docs.aws.amazon.com//singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html)」を参照してください。

[IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)を使用すると、ワークフォースユーザーとも呼ばれるワークフォース ID のサインインセキュリティを管理できます。IAM アイデンティティセンターでは、ワークフォースユーザーを作成または接続し、すべての AWS アカウントとアプリケーションにまたがるアクセスを一元管理できます。マルチアカウントのアクセス許可を使用して、これらのユーザーに AWS アカウント へのアクセス許可を割り当てることができます。アプリケーションの割り当てを使用して、IAM アイデンティティセンターが有効なアプリケーション、クラウドアプリケーション、カスタマーセキュリティアサーションマークアップ言語 (SAML 2.0) アプリケーションへのアクセス許可をユーザーに割り当てることができます。詳細については、「AWS IAM アイデンティティセンター ユーザーガイド」の「[Trusted identity propagation across applications](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation.html)」を参照してください。

信頼できる ID の伝達のための Athena SQL サポートは、EMR Studio と SageMaker Unified Studio の両方で利用できます。各プラットフォームは、Athena で TIP を使用するための特定のインターフェイスを提供します。

IAM Identity Center ID を使用して EMR Studio で Athena SQL を使用する場合、2 つのワークグループオプションがあります。
+ **通常のワークグループ** – ユーザー/グループの割り当ては必要ありません。
+ **IAM Identity Center が有効なワークグループ** – IAM Identity Center コンソールまたは API からユーザー/グループを割り当てる必要があります。

どちらのオプションでも、IAM Identity Center が有効になっている EMR Studio の Athena SQL インターフェイスを使用してクエリを実行できます。

## 考慮事項と制限事項
<a name="workgroups-identity-center-considerations-and-limitations"></a>

Amazon Athena で信頼できる ID の伝播を使用する際は、以下の点を考慮してください。
+ ワークグループの認証方法は、ワークグループの作成後に変更することはできません。
  + 既存の Athena SQL ワークグループは、IAM アイデンティティセンターが有効なワークグループをサポートするように変更することはできません。既存の Athena SQL ワークグループは、ID をダウンストリームサービスに伝達できます。
  + IAM アイデンティティセンターが有効なワークグループは、リソースレベルの IAM アクセス許可、またはアイデンティティベースの IAM ポリシーをサポートするように変更することはできません。
+ 信頼できる ID の伝播が有効になっているワークグループにアクセスするには、Athena [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html) API アクションの応答によって返される `IdentityCenterApplicationArn` に IAM アイデンティティセンターのユーザーを割り当てる必要があります。
+ Amazon S3 Access Grants は、信頼できる ID の伝播の ID を使用するように設定する必要があります。詳細については、「*Amazon S3 ユーザーガイド*」の「[S3 Access Grants and corporate directory identities](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html)」を参照してください。
+ IAM アイデンティティセンターが有効な Athena ワークグループには、IAM アイデンティティセンターの ID を使用するように Lake Formation を設定する必要があります。設定情報については、「*AWS Lake Formation デベロッパーガイドガイド*」の「[Integrating IAM Identity Center](https://docs.aws.amazon.com/lake-formation/latest/dg/identity-center-integration.html)」を参照してください。
+ デフォルトでは、IAM Identity Center が有効なワークグループでは、クエリは 30 分後にタイムアウトします。クエリのタイムアウトの延長をリクエストすることはできますが、信頼できる ID の伝播ワークグループでクエリを実行できる最大時間は 1 時間です。
+ 信頼できる ID の伝播ワークグループにおけるユーザーまたはグループの使用許可の変更は、反映されるまでに最大 1 時間かかる場合があります。
+ 信頼できる ID の伝播を使用する Athena ワークグループのクエリは、Athena コンソールから直接実行することはできません。これらは、IAM アイデンティティセンターが有効な EMR Studio の Athena インターフェイスから実行する必要があります。EMR Studio での Athena の使用についての詳細は、「*Amazon EMR 管理ガイド*」の「[Use the Amazon Athena SQL editor in EMR Studio](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-athena.html)」を参照してください。
+ 信頼できる ID 伝達は、次の Athena 機能との互換性がありません。
  + IAM Identity Center が有効なワークグループの `aws:CalledVia` コンテキストキー。
  + Athena for Spark ワークグループ
  + Athena API へのフェデレーションアクセス
  + Lake Formation と Athena JDBC および ODBC ドライバーを使用した Athena へのフェデレーションアクセス
+ Athena で信頼できる ID の伝播を使用できるのは、以下の AWS リージョン のみです。
  + `us-east-2` — 米国東部 (オハイオ)
  + `us-east-1` — 米国東部 (バージニア北部)
  + `us-west-1` — 米国西部 (北カリフォルニア)
  + `us-west-2` — 米国西部 (オレゴン)
  + `af-south-1` – アフリカ (ケープタウン)
  + `ap-east-1` – アジアパシフィック (香港)
  + `ap-southeast-3` – アジアパシフィック (ジャカルタ)
  + `ap-south-1` – アジアパシフィック (ムンバイ)
  + `ap-northeast-3` – アジアパシフィック (大阪)
  + `ap-northeast-2` – アジアパシフィック (ソウル)
  + `ap-southeast-1` – アジアパシフィック (シンガポール)
  + `ap-southeast-2` – アジアパシフィック (シドニー)
  + `ap-northeast-1` – アジアパシフィック (東京)
  + `ca-central-1` — カナダ (中部)
  + `eu-central-1` – 欧州 (フランクフルト)
  + `eu-central-2` – 欧州 (チューリッヒ)
  + `eu-west-1` – 欧州 (アイルランド)
  + `eu-west-2` – 欧州 (ロンドン)
  + `eu-south-1` – 欧州 (ミラノ)
  + `eu-west-3` – 欧州 (パリ)
  + `eu-north-1` – 欧州 (ストックホルム)
  + `me-south-1` – 中東 (バーレーン)
  + `sa-east-1` – 南米 (サンパウロ)

## 必要なアクセス許可
<a name="workgroups-identity-center-required-permissions"></a>

Athena コンソールで IAM アイデンティティセンターが有効なワークグループを作成する管理者の IAM ユーザーには、次のポリシーがアタッチされている必要があります。
+ `AmazonAthenaFullAccess` マネージドポリシー。詳細については、「[AWS 管理ポリシー: AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy)」を参照してください。
+ IAM と IAM アイデンティティセンターのアクションを許可する以下のインラインポリシー

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

****  

  ```
  { "Version":"2012-10-17",		 	 	  "Statement": [ { "Action": [ "iam:createRole",
      "iam:CreatePolicy", "iam:AttachRolePolicy", "iam:ListRoles", "identitystore:ListUsers",
      "identitystore:ListGroups", "identitystore:CreateUser", "identitystore:CreateGroup",
      "sso:ListInstances", "sso:CreateInstance", "sso:DeleteInstance", "sso:ListTrustedTokenIssuers",
      "sso:DescribeTrustedTokenIssuer", "sso:ListApplicationAssignments",
      "sso:DescribeRegisteredRegions", "sso:GetManagedApplicationInstance",
      "sso:GetSharedSsoConfiguration", "sso:PutApplicationAssignmentConfiguration",
      "sso:CreateApplication", "sso:DeleteApplication", "sso:PutApplicationGrant",
      "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationAccessScope",
      "sso:ListDirectoryAssociations", "sso:CreateApplicationAssignment",
      "sso:DeleteApplicationAssignment", "organizations:ListDelegatedAdministrators",
      "organizations:DescribeAccount", "organizations:DescribeOrganization",
      "organizations:CreateOrganization", "sso-directory:SearchUsers", "sso-directory:SearchGroups",
      "sso-directory:CreateUser" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [
      "iam:PassRole" ], "Effect": "Allow", "Resource": [
          "arn:aws:iam::{{111122223333}}:role/service-role/AWSAthenaSQLRole-*"
      ] } ] }
  ```

------

## IAM アイデンティティセンターが有効な Athena ワークグループの作成
<a name="workgroups-identity-center-creating-an-identity-center-enabled-athena-workgroup"></a>

以下の手順は、IAM アイデンティティセンターが有効な Athena ワークグループの作成に関連するステップとオプションを示しています。Athena ワークグループで使用できるその他の設定オプションの説明については、「[ワークグループの作成](creating-workgroups.md)」を参照してください。

**Athena コンソールで SSO が有効なワークグループを作成するには**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home) で Athena コンソールを開きます。

1. Athena コンソールのナビゲーションペインで、**[Workgroups]** (ワークグループ) をクリックします。

1. **[Workgroups]** (ワークグループ) ページで、**[Create workgroup]** (ワークグループを作成する) をクリックします。

1. **[ワークグループを作成]** ページの **[ワークグループ名]** に、ワークグループの名前を入力します。

1. **[分析エンジン]** には、**[Athena SQL]** のデフォルトを使用してください。

1. **[認証]** には、**[IAM アイデンティティセンター]** を選択します。

1. **[IAM アイデンティティセンターのアクセス用のサービスロール]** で、既存のサービスロールを選択するか、新しいサービスロールを作成します。

   Athena には、ユーザーに代わって IAM アイデンティティセンターにアクセスするための許可が必要です。Athena がこれを行うにはサービスロールが必要です。サービスロールはお客様が管理する IAM ロールであり、AWS のサービスがお客様に代わって AWS の他のサービスにアクセスすることを許可します。フェデレーションカタログをクエリしたり UDF を実行したりするには、対応する Lambda アクセス許可でサービスロールを更新します。詳細については、「*IAM ユーザーガイド*」の「[AWS のサービスにアクセス許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)」を参照してください。

1. **[クエリ結果の設定]** を展開し、**[クエリ結果の場所]** に Amazon S3 パスを入力または選択します。

1. (オプション) **[クエリ結果の暗号化]** を選択します。デフォルトでは、SSE-S3 がサポートされています。クエリ結果の場所で SSE-KMS と CSE-KMS を使用するには、Amazon S3 Access Grants から **IAM Identity Center のサービスロール**に許可を付与します。詳細については、「[サンプルロールポリシー](#workgroups-identity-center-access-grant-location-sample-role-policy)」を参照してください。

1. (オプション) **[ユーザー ID ベースの S3 プレフィックスを作成する]** を選択します。

   IAM アイデンティティセンターが有効なワークグループを作成すると、**[S3 Access Grants を有効にする]** オプションがデフォルトで選択されます。Amazon S3 Access Grants を使用して、Amazon S3 の Athena クエリ結果の場所 (プレフィックス) へのアクセスを制御することができます。Amazon S3 Access Grants の詳細については、「[Managing access with Amazon S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html)」を参照してください。

   IAM アイデンティティセンター認証を使用する Athena ワークグループでは、Amazon S3 Access Grants によって管理される ID ベースのクエリ結果の場所の作成を有効にすることができます。これらのユーザー ID ベースの Amazon S3 プレフィックスにより、Athena ワークグループのユーザーは、クエリ結果を同じワークグループ内の他のユーザーから分離しておくことができます。

   ユーザープレフィックスオプションを有効にすると、Athena はユーザー ID を Amazon S3 パスプレフィックスとしてワークグループのクエリ結果の出力場所 (例: `s3://amzn-s3-demo-bucket/${{{user_id}}}`) に追加します。この機能を使用するには、`user_id` プレフィックスが付いた場所へのユーザーアクセス許可のみを許可するように Access Grants を設定する必要があります。Athena クエリ結果へのアクセスを制限する Amazon S3 Access Grants ロケーションのサンプルロールポリシーについては、「[サンプルロールポリシー](#workgroups-identity-center-access-grant-location-sample-role-policy)」を参照してください。
**注記**  
ユーザ ID S3 プレフィックスオプションを選択すると、次のステップで説明されているように、ワークグループのクライアント側設定の上書きオプションが自動的に有効になります。ユーザ ID プレフィックス機能には、クライアント側設定の上書きオプションが必要です。

1. **[設定]** を展開し、**[クライアント側の設定を上書き]** が選択されていることを確認します。

   **[クライアント側の設定の上書き]** を選択した場合、ワークグループ内のすべてのクライアントに対して、ワークグループ設定がワークグループレベルで適用されます。詳細については、「[[Override client-side settings (クライアント側設定の上書き)]](workgroups-settings-override.md)」を参照してください。

1. (オプション) [ワークグループの作成](creating-workgroups.md) の説明に従って、必要なその他の構成設定を行います。

1. **[Create workgroup]** (ワークグループの作成) を選択します。

1. Athena コンソールの **[ワークグループ]** セクションを使用して、IAM Identity Center ディレクトリからのユーザーまたはグループを IAM Identity Center が有効化された Athena ワークグループに割り当てます。

## サンプルロールポリシー
<a name="workgroups-identity-center-access-grant-location-sample-role-policy"></a>

次のサンプルは、Amazon S3 Access Grant ロケーションにアタッチされるロールのポリシーを示すもので、Athena クエリ結果へのアクセスを制限します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:*"
            ],
            "Condition": {
                "ArnNotEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:access-grants/default"
                },
                "StringNotEquals": {
                    "aws:ResourceAccount": "{{111122223333}}"
                }
            },
            "Effect": "Deny",
            "Resource": "*",
            "Sid": "ExplicitDenyS3"
        },
        {
            "Action": [
                "kms:*"
            ],
            "Effect": "Deny",
            "NotResource": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{${keyid}}}",
            "Sid": "ExplictDenyKMS"
        },
        {
            "Action": [
                "s3:ListMultipartUploadParts",
                "s3:GetObject"
            ],
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:access-grants/default"
                },
                "StringEquals": {
                    "aws:ResourceAccount": "{{111122223333}}"
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{{ATHENA-QUERY-RESULT-LOCATION}}/{{${identitystore:UserId}}}/*",
            "Sid": "ObjectLevelReadPermissions"
        },
        {
            "Action": [
                "s3:PutObject",
                "s3:AbortMultipartUpload"
            ],
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:access-grants/default"
                },
                "StringEquals": {
                "aws:ResourceAccount": "{{111122223333}}"
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{{ATHENA-QUERY-RESULT-LOCATION}}/{{${identitystore:UserId}}}/*",
            "Sid": "ObjectLevelWritePermissions"
        },
        {
            "Action": "s3:ListBucket",
            "Condition": {
                "ArnEquals": {
                    "s3:AccessGrantsInstanceArn": "arn:aws:s3:{{us-east-1}}:{{111122223333}}:access-grants/default"
                },
                "StringEquals": {
                    "aws:ResourceAccount": "{{111122223333}}"
                },
                "StringLikeIfExists": {
                    "s3:prefix": [
                        "{{${identitystore:UserId}}}",
                        "{{${identitystore:UserId}}}/*"
                    ]
                }
            },
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::{{ATHENA-QUERY-RESULT-LOCATION}}",
            "Sid": "BucketLevelReadPermissions"
        },
        {
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{${keyid}}}",
            "Sid": "KMSPermissions"
        }
    ]
}
```

------