本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Athena 連線至 IAM Identity Center
下一節列出將 Athena 連線至 IAM Identity Center 的程序。
設定受信任權杖發行者
遵循設定信任權杖發行者指南來設定信任權杖發行者。這會建立 AWS IAM Identity Center。
注意
針對提供者類型,選擇 OpenID Connect。針對提供者 URL,輸入身分提供者的發行者 URL。針對對象,指定您應用程式身分提供者發出的用戶端 ID。
複製 IAM Identity Provider 的應用程式資源名稱 AWS (ARN)。如需相關資訊,請參閱《身分提供者和聯合》。
設定 IAM 角色
設定 IAM 應用程式角色
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在左側導覽中,選擇角色,然後選擇建立角色。
-
針對信任的實體類型,選擇自訂信任政策,如下所示:
-
針對聯合身分主體,新增您在受信任權杖發行者設定期間複製之 AWS IAM 身分提供者的 ARN。
-
針對政策條件,從外部聯合身分提供者新增對象。
{ "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" } } } ] }
-
-
新增下列內嵌政策,以授予使用者 CreateTokenWithIAM、ListTagsForResource 和 AssumeRoleWithWebIdentity 許可的存取權。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:ListTags*", "sso:ListTags*" ], "Resource": "*" } ] }注意
CreateTokenWithIam許可會在客戶受管的 IAM Identity Center 應用程式中提供。 -
複製應用程式角色的 ARN。
設定 IAM 存取角色
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在左側導覽上,選擇角色,然後選擇建立角色。
-
針對信任的實體類型,選擇自訂信任政策,如下所示:
-
針對聯合身分主體,新增在受信任權杖發行者設定期間複製的 AWS IAM Identity Center ARN。
-
針對AWS 主體,新增在 AWS IAM 應用程式角色設定期間複製的 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" ] } ] }
-
-
新增下列內嵌政策,以授予驅動程式工作流程的存取權:
{ "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": "*" } ] } -
複製存取角色的 ARN。
設定 AWS IAM Identity Center 客戶應用程式
若要設定客戶應用程式,請遵循設定客戶受管 OAuth 2.0 應用程式以取得受信任身分傳播中的步驟,並考量 Athena 的下列考量。
-
對於標籤,新增下列鍵/值對:
-
金鑰 – AthenaDriverOidcAppArn
-
值 – 在 IAM 存取角色設定期間複製的 AccessRoleARN。
-
-
指定應用程式登入資料時,請新增您在 AWS IAM 應用程式角色設定期間複製的 IAM 應用程式角色 ARN。
-
針對可接收請求的應用程式,選擇 AWS-Lake-Formation-AWS-Glue-Data-Catalog-<account-id>。
-
針對要套用的存取範圍,選擇 lakeformation:query。
設定工作群組關聯
-
在 Athena 主控台導覽窗格中,選擇 Workgroups (工作群組)。
-
從清單中選擇工作群組,然後開啟標籤索引標籤。
-
選擇管理標籤,然後輸入以下內容:
-
索引鍵:
AthenaDriverOidcAppArn -
值 – 應用程式 AWS IAM Identity Center ARN。
-
-
選擇儲存。
一旦管理員完成一次性設定,他們可以將基本連線詳細資訊分發給使用者。使用者需要這五個必要參數才能執行 SQL 工作負載:
-
ApplicationRoleARN – 應用程式角色的 ARN
-
JwtWebIdentityToken – 用於身分驗證的 JWT 字符
-
WorkgroupARN – Athena 工作群組的 ARN
-
JwtRoleSessionName – JWT 角色的工作階段名稱
-
CredentialsProvider – 登入資料提供者組態
注意
我們已透過策略標記簡化連線字串組態。透過正確標記 Athena 工作群組和 AWS IAM Identity Center 客戶受管應用程式,管理員無需使用者提供 AccessRoleArn和 CustomerIdcApplicationArn。外掛程式會使用應用程式角色來尋找必要的標籤,並擷取其工作流程對應的 ARN 值,以自動處理此問題。
管理員仍然可以視需要調整應用程式角色許可,讓使用者在連線字串CustomerIdcApplicationArn中提供 AccessRoleArn或 。
使用啟用信任身分傳播的 Athena 驅動程式執行查詢
下載您要使用的最新版本驅動程式。如需 JDBC 安裝的詳細資訊,請參閱 JDBC 3.x 驅動程式入門。您可以選擇根據支援的平台安裝 ODBC 驅動程式。如需詳細資訊,請參閱ODBC 2.x 驅動程式入門。根據您要使用的驅動程式,提供 中列出的參數:
注意
具有驅動程式的信任身分傳播只有在 JDBC 的 3.6.0 版和 ODBC 的 2.0.5.0 版之後才能使用。
搭配 DBeaver 使用 Athena 驅動程式和信任的身分傳播
-
從 Athena 下載具有相依性的最新 JDBC jar。如需詳細資訊,請參閱Athena JDBC 3.x 驅動程式。
-
在電腦上開啟 DBeaver 應用程式。
-
導覽至畫面頂端的資料庫選單,然後選擇 Driver Manager。
-
選擇新增,然後選擇程式庫。
-
新增最新的驅動程式,然後選擇尋找類別。這將為您提供類似 的檔案路徑
com.amazon.athena.jdbc.AthenaDriver。 -
開啟設定索引標籤並提供下列欄位
-
驅動程式名稱 – Athena JDBC 受信任身分傳播
-
類別名稱 –
com.amazon.athena.jdbc.AthenaDriver -
選取選項 無身分驗證。
-
-
選擇連線至資料庫並尋找 Athena JDBC 信任的身分傳播。這將帶您前往 JDBC URL。如需詳細資訊,請參閱設定驅動程式。
-
提供下列詳細資訊
-
工作群組 – 您要在其中執行查詢的工作群組。如需有關工作群組的資訊,請參閱工作群組。
-
區域 – 將執行查詢 AWS 區域 的 。如需區域清單,請參閱 Amazon Athena 端點和配額。
-
OutputLocation – Amazon S3 中您要存放查詢結果的位置。如需有關輸出位置的資訊,請參閱 ResultConfiguration。
-
CredentialsProvider – 輸入
JWT_TIP。 -
ApplicationRoleArn – 要啟用 之角色的 ARN
AssumeRoleWithWebIdentity。如需 ARN 角色的詳細資訊,請參閱 AWS Security Token Service API 參考中的 AssumeRole。 -
WorkgroupArn – 將執行查詢之工作群組的 ARN。它必須與工作群組欄位 中提供的工作群組相同。如需有關工作群組的資訊,請參閱工作群組。
-
JwtRoleSessionName – 當您使用 JWT 登入資料進行身分驗證時的工作階段名稱。它可以是您選擇的任何名稱。
-
JwtWebIdentityToken – 從外部聯合身分提供者取得的 JWT 字符。此字符用於向 Athena 進行身分驗證。
jdbc:athena://Workgroup=<value>;Region=<region>;OutputLocation=<location>;CredentialsProvider=JWT_TIP;ApplicationRoleArn=<arn>;WorkgroupArn=<arn>;JwtRoleSessionName=JDBC_TIP_SESSION;JwtWebIdentityToken=<token>;
-
-
選擇確定並關閉視窗。在此步驟之後,DBeaver 會開始載入中繼資料,您應該會開始看到您的目錄、資料庫和資料表被填入。
注意
如果字符中存在 JTI 宣告,且您在選擇確定之前選擇測試連線,則可防止重複使用相同的 JTI 進行字符交換。如需詳細資訊,請參閱信任權杖發行者的先決條件和考量事項。為了處理此問題,JDBC 實作記憶體內快取,其生命週期取決於主要驅動程式執行個體。對於 ODBC,檔案快取是選擇性存在的,可快取和重複使用臨時憑證,以減少工作階段生命週期期間使用的 Web 身分字符數量。
-
開啟 SQL 查詢編輯器並開始執行您的查詢。請參閱 Cloudtrail 日誌以驗證使用者的傳播身分。