

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

信頼できる ID の伝播では、データのアクセス許可管理を一元化し、サービス境界をまたいで IdP ID に基づいてリクエストを承認したいと考えている組織に適した新しい認証オプションを提供します。IAM Identity Center を使用すると、ユーザーとグループを管理し、AWS Lake Formation を使用してこれらの IdP ID のカタログリソースに対するきめ細かなアクセスコントロール許可を定義するように既存の IdP を設定できます。Athena は、データをクエリして IdP ID によるデータアクセスを監査する際に ID の伝播をサポートしているため、組織が規制要件とコンプライアンス要件を満たすのに役立ちます。

IAM Identity Center を通じて、シングルサインオン機能を備えた Java Database Connectivity (JDBC) または Open Database Connectivity (ODBC) ドライバーを使用して Athena に接続できるようになりました。PowerBI、Tableau、DBeaver などのツールから Athena にアクセスすると、ID とアクセス許可が IAM Identity Center を介して Athena に自動的に伝播されます。つまり、個別の認証ステップや認証情報管理を必要とせずに、データのクエリ時に個々のデータアクセス許可が直接適用されます。

管理者にとって、この機能は IAM Identity Center と Lake Formation を通じてアクセスコントロールを一元化し、サポートされているあらゆる分析ツールが Athena に接続する際に一貫したアクセス許可を適用できます。開始するには、組織で ID ソースとして IAM Identity Center を設定していて、ユーザーに適したデータアクセス許可を設定していることを確認します。

**Topics**
+ [主な定義](#using-trusted-identity-propagation-key-definitions)
+ [考慮事項](#using-trusted-identity-propagation-considerations)
+ [前提条件](#using-trusted-identity-propagation-prerequisites)
+ [Athena を IAM Identity Center に接続する](using-trusted-identity-propagation-setup.md)
+ [AWS CloudFormation を使用してリソースを設定およびデプロイする](using-trusted-identity-propagation-cloudformation.md)

## 主な定義
<a name="using-trusted-identity-propagation-key-definitions"></a>

1. **[アプリケーションロール]** – トークンの交換、ワークグループとカスタマーマネージド AWS IAM Identity Center アプリケーション ARN の取得を行うロール。

1. **[アクセスロール]** – ID 拡張認証情報を使用してカスタマーワークフローを実行するために Athena ドライバーで使用するロール。つまり、このロールはダウンストリームサービスにアクセスするために必要です。

1. **[カスタマーマネージドアプリケーション]** – AWS IAM Identity Center アプリケーション。詳細については、「[カスタマーマネージドアプリケーション](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps.html)」を参照してください。

## 考慮事項
<a name="using-trusted-identity-propagation-considerations"></a>

1. この機能は、信頼できる ID の伝播で Athena が一般提供されているリージョンでのみ使用できます。提供状況の詳細については、「[考慮事項と誓約事項](https://docs.aws.amazon.com/athena/latest/ug/workgroups-identity-center.html)」を参照してください。

1. JDBC ドライバーと ODBC ドライバーは、IAM 対応ワークグループによる信頼できる ID 伝播をサポートします。

1. JDBC と ODBC の両方をスタンドアロンドライバーとして使用するか、またはこの認証プラグインを使用して信頼できる ID の伝播に対応した任意の BI ツールまたは SQL ツールと一緒に使用できます。

## 前提条件
<a name="using-trusted-identity-propagation-prerequisites"></a>

1. AWS IAM Identity Center インスタンスが有効になっている必要があります。詳細については、「[IAM Identity Center とは](https://docs.aws.amazon.com/singlesignon/latest/userguide/identity-center-instances.html)」を参照してください。

1. 動作する外部 ID プロバイダーが必要であり、ユーザーまたはグループが AWS IAM Identity Center に存在する必要があります。ユーザーやグループを自動または手動で、あるいは SCIM を使用してプロビジョニングすることができます。詳細については、「[SCIM を使用して外部 ID プロバイダーを IAM Identity Center にプロビジョニングする](https://docs.aws.amazon.com/singlesignon/latest/userguide/provision-automatically.html)」を参照してください。

1. カタログ、データベース、およびテーブルに対する Lake Formation アクセス許可をユーザーまたはグループに付与する必要があります。詳細については、「[Athena を使用して Lake Formation に登録されたデータをクエリする](https://docs.aws.amazon.com/athena/latest/ug/security-athena-lake-formation.html)」を参照してください。

1. JDBC または ODBC ドライバーを使用して Athena クエリを実行するには、動作する BI ツールまたは SQL クライアントが必要です。

# 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\$1write**、**s3:access\$1grants:read\$1write** を選択します。

## ワークグループの関連付けを設定する
<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)」を参照してください。

# AWS CloudFormation を使用してリソースを設定およびデプロイする
<a name="using-trusted-identity-propagation-cloudformation"></a>

次の手順で、CloudFormation テンプレートを使用してリソースを設定およびデプロイし、Athena ドライバーで信頼できる ID の伝播の使用を開始できます。

1. CloudFormation テンプレートをダウンロードして、ワークグループと IAM Identity Center のアプリケーションタグとともに、IAM Identity Center のカスタマーマネージドアプリケーションとアクセスロールを設定します。この[CloudFormation テンプレートリンク](https://downloads.athena.us-east-1.amazonaws.com/drivers/CFNTemplate/AthenaDriversTrustedIdentityPropagationCFNTemplate.yaml)からダウンロードできます。

1. 次のように `create-stack` AWS CLI コマンドを実行して、設定されたリソースをプロビジョニングする CloudFormation スタックをデプロイします。

   ```
   aws cloudformation create-stack \
       --stack-name my-stack \
       --template-url URL_of_the_file_that_contains_the_template_body \
       --parameters file://params.json
   ```

1. リソースプロビジョニングのステータスを表示するには、CloudFormation コンソールに移動します。クラスターの作成が完了したら、Identity Center コンソールで新しい IAM Identity Center アプリケーションを表示します。IAM ロールは IAM コンソールで確認できます。

   タグは、ワークグループと IAM Identity Center アプリケーションに関連付けられます。

1. 作成したロールとアプリケーションを使用して、Athena ドライバーをすぐに使用できます。JDBC ドライバーを使用するには、「[JDBC 認証プラグイン接続パラメータ](jdbc-v3-driver-jwt-tip-credentials.md)」を参照してください。ODBC ドライバーを使用するには、「[ODBC 認証プラグイン接続パラメータ](odbc-v2-driver-jwt-tip.md)」を参照してください。