使用啟用 IAM Identity Center 的 Athena 工作群組 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用啟用 IAM Identity Center 的 Athena 工作群組

的受信任身分傳播功能 AWS IAM Identity Center 可讓您的員工身分識別跨 AWS 分析服務使用。使用受信任的身分傳播,您不必執行服務特定身分提供者組態或 IAM 角色設定。

使用 IAM Identity Center,您可管理員工身分 (也稱為員工使用者) 的登入安全性。IAM 身分中心提供了一個位置,您可以在其中建立或連接員工使用者,並集中管理其所有 AWS 帳戶和應用程式的存取權限。您可使用多帳戶許可,將對 AWS 帳戶的存取權指派給這些使用者。您可使用應用程式指派功能,來指派使用者對啟用 IAM Identity Center 的應用程式、雲端應用程式和客戶安全性聲明標記語言 (SAML 2.0) 應用程式的存取權。如需詳細資訊,請參閱《AWS IAM Identity Center 使用者指南》中的跨應用程式的受信任身分傳播

目前,憑藉受信任身分傳播的 Athena SQL 支援,您可使用與 Amazon EMR Studio 相同的身分,以及 EMR Studio 中的 Athena SQL 介面。若要將 IAM Identity Center 身分與 EMR Studio 中的 Athena SQL 搭配使用,您必須建立啟用 IAM Identity Center 的工作群組。然後,您可使用 IAM Identity Center 主控台或 API,將 IAM Identity Center 使用者或群組指派給啟用 IAM Identity Center 的 Athena 工作群組。從使用受信任身分傳播的 Athena 工作群組查詢,必須從啟用了 IAM Identity Center 的 EMR Studio 中的 Athena SQL 介面執行。

考量與限制

當您在 Amazon Athena 使用受信任的 Identity Center 時,請考慮下列幾點:

  • 建立工作群組之後,無法變更工作群組的身分驗證方法。

    • 無法修改現有的 Athena SQL 工作群組來支援啟用了 IAM Identity Center 的工作群組。

    • 無法修改啟用了 IAM Identity Center 的工作群組,來支援資源層級 IAM 許可或以 Identity Center 為基礎的 IAM 政策。

  • 若要存取啟用受信任身分傳播的工作群組,IAM 身分中心使用者必須指派給 Athena GetWorkGroupAPI 動作回應所傳回的工作群組。IdentityCenterApplicationArn

  • Amazon S3 Access Grants 必須設定為使用受信任的身分傳播身分。如需詳細資訊,請參閱《Amazon S3 使用者指南》中的 S3 Access Grants 和公司目錄身分

  • 啟用 IAM Identity Center 的 Athena 工作群組需要將 Lake Formation 設定為使用 IAM Identity Center 身分。如需組態資訊,請參閱《AWS Lake Formation 開發人員指南》中的整合 IAM Identity Center

  • 依預設,在使用受信任身分傳播的工作群組中,查詢會在 30 分鐘後逾時。您可請求增加查詢逾時,但在受信任身分傳播工作群組中,可執行的查詢上限為一小時。

  • 在受信任身分傳播工作群組中,使用者或群組權利變更可能需要最多一小時才會生效。

  • 使用受信任身分傳播的 Athena 工作群組中的查詢,無法直接從 Athena 主控台執行。必須從啟用了 IAM Identity Center 的 EMR Studio 中的 Athena 介面執行。如需有關在 EMR Studio 中使用 Athena 的詳細資訊,請參閱《Amazon EMR 管理指南》中的在 EMR Studio 中使用 Amazon Athena SQL 編輯器

  • 受信任身分傳播與下列 Athena 功能不相容。

    • aws:CalledVia 內容索引鍵。

    • Athena for Spark 工作群組。

    • 對 Athena API 的聯合存取。

    • 使用 Lake Formation 以及 Athena JDBC 和 ODBC 驅動程式對 Athena 進行聯合存取。

  • 您只能在下列情況下搭配 Athena 使用受信任的身分傳播 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 – 南美洲 (聖保羅)

若管理員 IAM 使用者在 Athena 主控台中建立啟用了 IAM Identity Center 的工作群組,必須附加下列政策。

  • AmazonAthenaFullAccess 受管政策。如需詳細資訊,請參閱 AWS 受管理的策略: AmazonAthenaFullAccess

  • 下列內嵌政策允許 IAM 和 IAM Identity Center 的以下動作:

    { "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 Identity Center 的 Athena 工作群組

下列程序顯示與建立啟用 IAM Identity Center 的 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 Identity Center

  7. 針對 IAM Identity Center 存取的服務角色,選擇現有的服務角色,或建立新的服務角色。

    Athena 需要許可,才能代表您存取 IAM Identity Center。Athena 需要服務角色,才能執行此操作。服務角色是您管理的 IAM 角色,可授權 AWS 服務代表您存取其他 AWS 服務。如需詳細資訊,請參閱《IAM 使用者指南》中的建立角色以將權限委派給 AWS 服務

  8. 展開查詢結果組態,然後針對查詢結果的位置輸入或選擇 Amazon S3 路徑。

  9. (選用) 選擇加密查詢結果

  10. (選用) 選擇建立以使用者身分為基礎的 S3 字首

    當您建立啟用 IAM Identity Center 的工作群組時,預設會選取啟用 S3 Access Grants 選項。您可使用 Amazon S3 Access Grants,來控制對 Amazon S3 中 Athena 查詢結果位置 (字首) 的存取權。如需有關 Amazon S3 Access Grants 的詳細資訊,請參閱使用 Amazon S3 Access Grants 管理存取權

    在使用 IAM Identity Center 身分驗證的 Athena 工作群組中,您可建立由 Amazon S3 Access Grants 管控的以身分為基礎的查詢結果位置。藉助這些以使用者身分為基礎的 Amazon S3 字首,Athena 工作群組中的使用者可將查詢結果與相同工作群組中的其他使用者隔離。

    啟用使用者字首選項時,Athena 會將使用者 ID 做為 Amazon S3 路徑字首附加至工作群組的查詢結果輸出位置 (例如 s3://DOC-EXAMPLE-BUCKET/${user_id})。若要使用此功能,您必須將 Access Grants 設定為僅允許使用者存取具有 user_id 字首的位置。如需限制對 Athena 查詢結果存取權的 Amazon S3 存取授權位置角色政策範例,請參閱角色政策範例

    注意

    選取使用者身分 S3 字首選項,會自動啟用工作群組的「覆寫用戶端設定」選項,如下一個步驟所述。「覆寫用戶端設定」選項是使用者身分字首功能的必要條件。

  11. 展開設定,然後確認選取覆寫用戶端設定

    如果選取覆寫用戶端設定,則會在工作群組層級,強制工作群組中所有用戶端執行工作群組設定。如需詳細資訊,請參閱 工作群組設定覆寫用戶端設定

  12. (選用) 如 建立工作群組 中所述,進行需要的任何其他組態設定。

  13. 選擇建立工作群組

  14. 使用 Athena 主控台的「工作群組」區段,將您的 IAM 身分中心目錄中的使用者或群組指派給已啟用 IAM 身分中心的 Athena 工作群組。

下列範例顯示將角色附加至 Amazon S3 存取授與位置的政策,該位置限制對 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" }