Athena を IAM Identity Center に接続する - Amazon Athena

Athena を IAM Identity Center に接続する

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

信頼できるトークン発行者の設定

信頼できるトークン発行者の設定」ガイドに従って、信頼できるトークン発行者を設定します。これによって、AWS IAM Identity Center が作成されます。

注記

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

AWS IAM ID プロバイダーのアプリケーションリソースネーム (ARN) をコピーします。詳細については、「Identity providers and federation」(ID プロバイダとフェデレーション) を参照してください。

IAM ロールの設定

IAM アプリケーションロールの設定

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

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

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

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

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/issuer-url" }, "Action": [ "sts:AssumeRoleWithWebIdentity" ], "Condition": { "StringEquals": { "issuer:aud": "identity-provider-audience" } } } ] }
  4. 次のインラインポリシーを追加して、CreateTokenWithIAMListTagsForResource、および AssumeRoleWithWebIdentity のアクセス許可をユーザーに付与します。

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

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

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

IAM アクセスロールの設定

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

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

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

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

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

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/application-role-arn" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] }, { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/issuer-url" }, "Action": [ "sts:AssumeRole" ] } ] }
  4. 次の[インラインポリシー]を追加して、ドライバーワークフローへのアクセスを許可します。

    { "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": "*" } ] }
  5. アクセスロールの ARN をコピーします。

AWS IAM Identity Center カスタマーアプリケーションを設定する

カスタマーアプリケーションを設定するには、「信頼できる ID の伝播用のカスタマーマネージド OAuth 2.0 アプリケーションを設定する」の手順に従い、Athena に関する以下の考慮事項も参考にしてください。

  • [タグ] に、以下のキーと値のペアを追加します。

    • キーAthenaDriverOidcAppArn

    • IAM アクセスロールの設定中にコピーした AccessRoleARN

  • アプリケーション認証情報を指定するときに、IAM アプリケーションロールの設定中にコピーした AWS IAM アプリケーションロールの ARN を追加します。

  • [リクエストを受信できるアプリケーション] には、AWS-Lake-Formation-AWS-Glue-Data-Catalog-<account-id> を選択します。

  • [適用するアクセススコープ] には、lakeformation:query を選択します。

ワークグループの関連付けを設定する

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

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

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

    1. キーAthenaDriverOidcAppArn

    2. [値] – AWS IAM Identity Center アプリケーションの ARN。

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

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

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

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

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

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

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

注記

戦略的タグ付けにより、接続文字列の設定を簡素化しました。管理者が Athena ワークグループと AWS IAM Identity Center カスタマーマネージドアプリケーションの両方に適切にタグ付けすることで、ユーザーは AccessRoleArnCustomerIdcApplicationArn を指定する必要がなくなります。プラグインは、アプリケーションロールを使用して必要なタグを見つけ、ワークフローに対応する ARN 値を取得することで、これを自動的に処理します。

管理者は、必要に応じてアプリケーションロールのアクセス許可を調整することで、引き続きユーザーに接続文字列で AccessRoleArn または CustomerIdcApplicationArn を指定してもらうように設定できます。

信頼できる ID の伝播を有効にした Athena ドライバーを使用してクエリを実行する

使用する最新バージョンのドライバーをダウンロードします。JDBC のインストールに関する詳細については、「JDBC 3.x ドライバーの使用を開始する」を参照してください。サポートされているプラットフォームに基づいて ODBC ドライバーをインストールするよう選択できます。詳細については、「ODBC 2.x ドライバーの使用を開始する」を参照してください。使用するドライバーに基づいて、以下に記載されているパラメータを指定します。

注記

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

DBeaver で Athena ドライバーと信頼できる ID の伝播を使用する

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

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

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

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

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

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

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

    2. [クラス名]com.amazon.athena.jdbc.AthenaDriver

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

  7. [データベースに接続] を選択し、「Athena JDBC の信頼できる ID の伝播」を検索します。これにより、JDBC URL に移動します。詳細については、「ドライバーの設定」を参照してください。

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

    1. [Workgroup] – クエリを実行するワークグループ。ワークグループの詳細については、「WorkGroup」を参照してください。

    2. [Region] – クエリが実行される AWS リージョン。リージョンのリストについては、「Amazon Athena エンドポイントとクォータ」を参照してください。

    3. [OutputLocation] – クエリ結果を保存する Amazon S3 内の場所。出力場所の詳細については、「ResultConfiguration」を参照してください。

    4. [CredentialsProvider]JWT_TIP と入力します。

    5. [ApplicationRoleArn] – を有効にするロールの ARNAssumeRoleWithWebIdentity。ARN ロールの詳細については、「AWS Security Token Service API リファレンス」の「AssumeRole」を参照してください。

    6. [WorkgroupArn] – クエリを実行するワークグループの ARN。これは、[Workgroup] フィールドで指定されているのと同じワークグループである必要があります。ワークグループの詳細については、「WorkGroup」を参照してください。

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

    8. [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>;
  9. [OK] を選択してウィンドウを閉じます。DBeaver はこのステップの後にメタデータのロードを開始します。カタログ、データベース、テーブルが入力され始めます。

    注記

    トークンに JTI クレームが存在している場合、[OK] を選択する前に [接続のテスト] を選択すると、トークン交換で同じ JTI が再利用されるのを防ぐことができます。詳細については、「信頼できるトークン発行者の前提条件と考慮事項」を参照してください。これを処理するために、JDBC はインメモリキャッシュを実装します。そのライフサイクルはメインドライバーインスタンスに依存します。ODBC の場合、一時的な認証情報をキャッシュして再利用し、セッションライフサイクル中に使用されるウェブ ID トークンの数を減らすことができるファイルキャッシュがオプションで存在します。

  10. [SQL クエリエディタ]を開き、クエリの実行を開始します。ユーザーの伝播された ID を確認するには、「Cloudtrail ログ」を参照してください。