

# Athena を IAM Identity Center に接続する
<a name="using-trusted-identity-propagation-setup"></a>

次のセクションでは、Athena を IAM Identity Center に接続するプロセスを示します。

## 信頼できるトークン発行者の設定
<a name="using-trusted-identity-propagation-step1"></a>

「[信頼できるトークン発行者の設定](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html)」ガイドに従って、信頼できるトークン発行者を設定します。これによって、AWS IAM アイデンティティセンター が作成されます。

**注記**  
**[プロバイダータイプ]** で、**[OpenID Connect]** を選択します。**[プロバイダー URL]** には、ID プロバイダーの発行者 URL を入力します。**[対象者]** には、アプリに対して ID プロバイダーから発行されたクライアント ID を指定します。  
 

AWS IAM ID プロバイダーのアプリケーションリソースネーム (ARN) をコピーします。詳細については、「[Identity providers and federation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)」(ID プロバイダとフェデレーション) を参照してください。

## IAM ロールの設定
<a name="using-trusted-identity-propagation-step2"></a>

### IAM アプリケーションロールの設定
<a name="using-trusted-identity-propagation-step2-application-role"></a>

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

1. 左側のナビゲーションで **[ロール]** を選択し、続いて **[ロールの作成]** を選択します。

1. **[信頼できるエンティティタイプ]** で、**[カスタム信頼ポリシー]** を選択して次のようにします。

   1. **[フェデレーションプリンシパル]**には、信頼できるトークン発行者の設定中にコピーした AWS IAM ID プロバイダーの ARN を追加します。

   1. ポリシー条件には、外部のフェデレーション ID プロバイダーの対象者を追加します。

1. 次のインラインポリシーを追加して、[CreateTokenWithIAM](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateTokenWithIAM.html)、[ListTagsForResource](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListTagsForResource.html)、および [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) のアクセス許可をユーザーに付与します。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:ListTags*",
                   "sso:ListTags*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**注記**  
`CreateTokenWithIam` アクセス許可は、カスタマーマネージド IAM Identity Center アプリケーションで付与されます。

1. アプリケーションロールの ARN をコピーします。

### IAM アクセスロールの設定
<a name="using-trusted-identity-propagation-step2-access-role"></a>

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

1. 左側のナビゲーションで **[ロール]** を選択し、続いて **[ロールの作成]** を選択します。

1. **[信頼できるエンティティタイプ]** で、**[カスタム信頼ポリシー]** を選択して次のようにします。

   1. **[フェデレーションプリンシパル]**には、信頼できるトークン発行者の設定中にコピーした AWS IAM Identity Center の ARN を追加します。

   1. **[AWS プリンシパル]**には、IAM アプリケーションロールの設定中にコピーした AWS IAM アプリケーションロールの ARN を追加します。

1. 次の**[インラインポリシー]**を追加して、ドライバーワークフローへのアクセスを許可します。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:StartQueryExecution",
                   "athena:GetQueryExecution",
                   "athena:GetQueryResults",
                   "athena:ListWorkGroups",
                   "athena:ListDataCatalogs",
                   "athena:ListDatabases",
                   "athena:ListTableMetadata"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject",
                   "s3:PutObject"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:CreateTable",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:UpdateTable",
                   "glue:DeleteTable",
                   "glue:BatchDeleteTable",
                   "glue:GetTableVersion",
                   "glue:GetTableVersions",
                   "glue:DeleteTableVersion",
                   "glue:BatchDeleteTableVersion",
                   "glue:CreatePartition",
                   "glue:BatchCreatePartition",
                   "glue:GetPartition",
                   "glue:GetPartitions",
                   "glue:BatchGetPartition",
                   "glue:UpdatePartition",
                   "glue:DeletePartition",
                   "glue:BatchDeletePartition"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "lakeformation:GetDataAccess"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. アクセスロールの ARN をコピーします。

## AWS IAM アイデンティティセンター カスタマーマネージドアプリケーションを設定する
<a name="using-trusted-identity-propagation-step3"></a>

カスタマーマネージドアプリケーションを設定するには、「[信頼できる ID 伝播用のカスタマーマネージド OAuth 2.0 アプリケーションを設定する](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.html)」の手順に従い、Athena に関する以下の考慮事項も参考にしてください。
+ **[タグ]** に、以下のキーと値のペアを追加します。
  + **キー** – **AthenaDriverOidcAppArn**
  + **値** – *IAM アクセスロールの設定中にコピーした *AccessRoleARN**。
+ [アプリケーション認証情報を指定する](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2.html#customermanagedapps-trusted-identity-propagation-set-up-your-own-app-OAuth2-specify-application-credentials)ときに、IAM アプリケーションロールの設定中にコピーした AWS IAM アプリケーションロールの ARN を追加します。
+ **[リクエストを受信できるアプリケーション]** には、**AWS-Lake-Formation-AWS-Glue-Data-Catalog-<account-id>** を選択します。
+ **[アクセススコープを適用する]** ために、IAM 対応ワークグループの場合は **lakeformation:query**、アイデンティティセンター対応ワークグループの場合は **lakeformation:query**、**athena:workgroup:read\_write**、**s3:access\_grants:read\_write** を選択します。

## ワークグループの関連付けを設定する
<a name="using-trusted-identity-propagation-step4"></a>

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

1. リストからワークグループを選択し、**[タグ]** タブを開きます。

1. **[タグの管理]** を選択し、次のように入力します。

   1. **キー** – `AthenaDriverOidcAppArn`

   1. **[値]** – AWS IAM アイデンティティセンター アプリケーションの ARN。

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

管理者は 1 回限りの設定を完了すると、必要な接続の詳細をユーザーに配布できます。SQL ワークロードを実行するには、次の 5 つの必須パラメータが必要です。

1. **[ApplicationRoleARN]** – アプリケーションロールの ARN

1. **[JwtWebIdentityToken]** – ID 検証用の JWT トークン

1. **[WorkgroupARN]** – Athena ワークグループの ARN

1. **[JwtRoleSessionName]** – JWT ロールのセッション名

1. **[CredentialsProvider]** – 認証情報プロバイダーの設定

**注記**  
戦略的タグ付けにより、接続文字列の設定を簡素化しました。管理者が Athena ワークグループと AWS IAM アイデンティティセンター カスタマーマネージドアプリケーションの両方に適切にタグ付けすることで、ユーザーは `AccessRoleArn`と `CustomerIdcApplicationArn` を指定する必要がなくなります。プラグインは、アプリケーションロールを使用して必要なタグを見つけ、ワークフローに対応する ARN 値を取得することで、これを自動的に処理します。  
管理者は、必要に応じてアプリケーションロールのアクセス許可を調整することで、引き続きユーザーに接続文字列で `AccessRoleArn` または `CustomerIdcApplicationArn` を指定してもらうように設定できます。

## 信頼できる ID の伝播を有効にした Athena ドライバーを使用してクエリを実行する
<a name="using-trusted-identity-propagation-step5"></a>

使用する最新バージョンのドライバーをダウンロードします。JDBC のインストールに関する詳細については、「[JDBC 3.x ドライバーの使用を開始する](jdbc-v3-driver-getting-started.md)」を参照してください。サポートされているプラットフォームに基づいて ODBC ドライバーをインストールするよう選択できます。詳細については、「[ODBC 2.x ドライバーの使用を開始する](odbc-v2-driver-getting-started.md)」を参照してください。使用するドライバーに基づいて、以下に記載されているパラメータを指定します。
+ [JDBC 認証プラグイン接続パラメータ](jdbc-v3-driver-jwt-tip-credentials.md)
+ [ODBC 認証プラグイン接続パラメータ](odbc-v2-driver-jwt-tip.md)

**注記**  
ドライバーでの信頼できる ID の伝播は、JDBC バージョン 3.6.0 以降および ODBC バージョン 2.0.5.0 以降でのみ使用できます。

## DBeaver で Athena ドライバーと信頼できる ID の伝播を使用する
<a name="using-trusted-identity-propagation-step6"></a>

1. Athena から依存関係を持つ最新の JDBC jar をダウンロードします。詳細については、「[Athena JDBC 3.x ドライバー](jdbc-v3-driver.md)」を参照してください。

1. コンピュータで DBeaver アプリケーションを開きます。

1. 画面上部の **[データベース]** メニューに移動し、**[ドライバーマネージャー]** を選択します。

1. **[新規]** を選択し、次に **[ライブラリ]** を選択します。

1. 最新のドライバーを追加し、**[クラスの検索]** を選択します。これにより、`com.amazon.athena.jdbc.AthenaDriver` のようなファイルパスが提供されます。

1. **[設定]** タブを開き、次のフィールドを指定します。

   1. **[ドライバー名]** – Athena JDBC の信頼できる ID の伝播

   1. **[クラス名]** – `com.amazon.athena.jdbc.AthenaDriver`

   1. **[認証なし]** オプションを選択します。

1. **[データベースに接続]** を選択し、「Athena JDBC の信頼できる ID の伝播」を検索します。これにより、JDBC URL に移動します。詳細については、「[ドライバーの設定](jdbc-v3-driver-getting-started.md#jdbc-v3-driver-configuring-the-driver)」を参照してください。

1. 次の詳細情報を入力します。

   1. **[Workgroup]** – クエリを実行するワークグループ。ワークグループの詳細については、「[WorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroup.html)」を参照してください。

   1. **[Region]** – クエリが実行される AWS リージョン。リージョンのリストについては、「[Amazon Athena エンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/athena.html)」を参照してください。

   1. **[OutputLocation]** – クエリ結果を保存する Amazon S3 内の場所。出力場所の詳細については、「[ResultConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html)」を参照してください。

   1. **[CredentialsProvider]** – `JWT_TIP` と入力します。

   1. **[ApplicationRoleArn]** – を有効にするロールの ARN`AssumeRoleWithWebIdentity`。ARN ロールの詳細については、「AWS Security Token Service API リファレンス」の「[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)」を参照してください。

   1. **[WorkgroupArn]** – クエリを実行するワークグループの ARN。これは、**[Workgroup]** フィールドで指定されているのと同じワークグループである必要があります。ワークグループの詳細については、「[WorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroup.html)」を参照してください。

   1. **[JwtRoleSessionName]** – JWT 認証情報を認証に使用するときのセッションの名前。任意の名前を指定できます。

   1. **[JwtWebIdentityToken]** – 外部のフェデレーション ID プロバイダーから取得した JWT トークン。このトークンは Athena での認証に使用されます。

      ```
      jdbc:athena://Workgroup={{<value>}};Region={{<region>}};OutputLocation={{<location>}};CredentialsProvider=JWT_TIP;ApplicationRoleArn={{<arn>}};WorkgroupArn={{<arn>}};JwtRoleSessionName=JDBC_TIP_SESSION;JwtWebIdentityToken={{<token>}};
      ```

1. **[OK]** を選択してウィンドウを閉じます。DBeaver はこのステップの後にメタデータのロードを開始します。カタログ、データベース、テーブルが入力され始めます。
**注記**  
トークンに JTI クレームが存在している場合、**[OK]** を選択する前に **[接続のテスト]** を選択すると、トークン交換で同じ JTI が再利用されるのを防ぐことができます。詳細については、「[信頼できるトークン発行者の前提条件と考慮事項](https://docs.aws.amazon.com/singlesignon/latest/userguide/using-apps-with-trusted-token-issuer.html#trusted-token-issuer-prerequisites)」を参照してください。これを処理するために、JDBC はインメモリキャッシュを実装します。そのライフサイクルはメインドライバーインスタンスに依存します。ODBC の場合、一時的な認証情報をキャッシュして再利用し、セッションライフサイクル中に使用されるウェブ ID トークンの数を減らすことができる[ファイルキャッシュ](odbc-v2-driver-jwt-tip.md#odbc-v2-driver-jwt-tip-file-cache)がオプションで存在します。

1. **[SQL クエリエディタ]**を開き、クエリの実行を開始します。ユーザーの伝播された ID を確認するには、「[Cloudtrail ログ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)」を参照してください。