IAM アイデンティティセンターが有効な Athena ワークグループを使用する - Amazon Athena

IAM アイデンティティセンターが有効な Athena ワークグループを使用する

AWS IAM Identity Center の信頼できる ID の伝達機能により、従業員の ID を AWS 分析サービス全体で使用できるようになります。信頼できる ID の伝達により、サービス固有の ID プロバイダー設定や IAM ロールのセットアップを行う必要がなくなります。

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

現在、Athena SQL は信頼できる ID の伝達をサポートしているため、Amazon EMR Studio と EMR Studio の Athena SQL インターフェイスで同じ ID を使用できます。EMR Studio の Athena SQL で IAM アイデンティティセンター ID を使用するには、Athena で IAM アイデンティティセンターが有効なワークグループを作成する必要があります。その後、IAM アイデンティティセンターのコンソールまたは API を使用して IAM アイデンティティセンターのユーザーまたはグループを IAM アイデンティティセンターが有効なワークグループに割り当てることができます。信頼できる ID 伝達を使用する Athena ワークグループからのクエリは、IAM アイデンティティセンターが有効な EMR Studio の Athena SQL インターフェイスから実行する必要があります。

考慮事項と制限事項

Amazon Athena で信頼できる ID 伝達を使用する際は、以下の点を考慮してください。

  • ワークグループの認証方法は、ワークグループの作成後に変更することはできません。

    • 既存の Athena SQL ワークグループは、IAM アイデンティティセンターが有効なワークグループをサポートするように変更することはできません。

    • IAM アイデンティティセンターが有効なワークグループは、リソースレベルの IAM アクセス許可、またはアイデンティティベースの IAM ポリシーをサポートするように変更することはできません。

  • 信頼できる ID 伝達が有効になっているワークグループにアクセスするには、Athena GetWorkGroup API アクションの応答によって返される IdentityCenterApplicationArn に IAM アイデンティティセンターのユーザーを割り当てる必要があります。

  • Amazon S3 Access Grants は、信頼できる ID 伝達アイデンティティを使用するように設定する必要があります。詳細については、「Amazon S3 ユーザーガイド」の「S3 Access Grants and corporate directory identities」を参照してください。

  • IAM アイデンティティセンターが有効な Athena ワークグループには、IAM アイデンティティセンターの ID を使用するように Lake Formation を設定する必要があります。設定情報については、「AWS Lake Formation デベロッパーガイドガイド」の「Integrating IAM Identity Center」を参照してください。

  • 信頼できる ID 伝達を使用するワークグループでは、デフォルトでクエリは 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」を参照してください。

  • 信頼できる ID 伝達は、以下の Athena 機能との互換性がありません。

    • 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-west-1 – 欧州 (アイルランド)

    • eu-west-2 – 欧州 (ロンドン)

    • eu-south-1 – 欧州 (ミラノ)

    • eu-west-3 – 欧州 (パリ)

    • eu-north-1 – 欧州 (ストックホルム)

    • me-south-1 – 中東 (バーレーン)

    • sa-east-1 – 南米 (サンパウロ)

Athena コンソールで IAM アイデンティティセンターが有効なワークグループを作成する管理者の IAM ユーザーには、次のポリシーがアタッチされている必要があります。

  • AmazonAthenaFullAccess マネージドポリシー。詳細については、「AWS 管理ポリシー: AmazonAthenaFullAccess」を参照してください。

  • IAM と IAM アイデンティティセンターのアクションを許可する以下のインラインポリシー

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "iam:createRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "iam:ListRoles", "iam:PassRole", "identitystore:ListUsers", "identitystore:ListGroups", "identitystore:CreateUser", "identitystore:CreateGroup", "sso:ListInstances", "sso:CreateInstance", "sso:DeleteInstance", "sso:DescribeUser", "sso:DescribeGroup", "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": [ "*" ] } ] }

IAM アイデンティティセンターが有効な Athena ワークグループの作成

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

Athena コンソールで SSO が有効なワークグループを作成するには
  1. https://console.aws.amazon.com/athena/ で Athena コンソールを開きます。

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

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

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

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

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

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

    Athena には、ユーザーに代わって IAM アイデンティティセンターにアクセスするための権限が必要です。Athena がこれを行うにはサービスロールが必要です。サービスロールはお客様が管理する IAM ロールであり、AWS のサービスがお客様に代わって AWS の他のサービスにアクセスすることを許可します。詳細については、『IAM ユーザーガイド』の「AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

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

  9. (オプション) [クエリ結果の暗号化] を選択します。

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

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

    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 ロケーションのサンプルロールポリシーについては、「サンプルロールポリシー」を参照してください。

    注記

    ユーザ ID S3 プレフィックスオプションを選択すると、次のステップで説明されているように、ワークグループのクライアント側設定の上書きオプションが自動的に有効になります。ユーザ ID プレフィックス機能には、クライアント側設定の上書きオプションが必要です。

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

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

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

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

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

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

{ "Statement": [{ "Action": ["s3:*"], "Condition": { "ArnNotEquals": { "s3:AccessGrantsInstanceArn": "arn:aws:s3:${region}:${account}:access-grants/default" }, "StringNotEquals": { "aws:ResourceAccount": "${account}" } }, "Effect": "Deny", "Resource": "*", "Sid": "ExplicitDenyS3" }, { "Action": ["kms:*"], "Effect": "Deny", "NotResource": "arn:aws:kms:${region}:${account}:key/${keyid}", "Sid": "ExplictDenyKMS" }, { "Action": ["s3:ListMultipartUploadParts", "s3:GetObject"], "Condition": { "ArnEquals": { "s3:AccessGrantsInstanceArn": "arn:aws:s3:${region}:${account}:access-grants/default" }, "StringEquals": { "aws:ResourceAccount": "${account}" } }, "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:${region}:${account}:access-grants/default" }, "StringEquals": { "aws:ResourceAccount": "${account}" } }, "Effect": "Allow", "Resource": "arn:aws:s3:::ATHENA-QUERY-RESULT-LOCATION/${identitystore:UserId}/*", "Sid": "ObjectLevelWritePermissions" }, { "Action": "s3:ListBucket", "Condition": { "ArnEquals": { "s3:AccessGrantsInstanceArn": "arn:aws:s3:${region}:${account}:access-grants/default" }, "StringEquals": { "aws:ResourceAccount": "${account}" }, "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:${region}:${account}:key/${keyid}", "Sid": "KMSPermissions" }], "Version": "2012-10-17" }