将 Athena 连接到 IAM Identity Center
以下章节介绍了将 Athena 连接到 IAM Identity Center 的过程。
设置可信令牌发布者
按照设置可信令牌发布者指南来设置可信令牌发布者。此操作将创建 AWS IAM Identity Center。
注意
对于提供者类型,选择 OpenID Connect。对于提供者 URL,请输入您身份提供者的发布者 URL。对于受众,请指定身份提供者为您的应用程序发布的客户端 ID。
复制 AWS IAM 身份提供者的应用程序资源名称(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 主体,添加在 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" ] } ] }
-
-
添加以下内联策略以授予对驱动程序工作流程的访问权限:
{ "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 客户应用程序
要配置客户应用程序,请按照 Set up customer managed OAuth 2.0 applications for trusted identity propagation 中的步骤,并注意以下 Athena 事项。
-
对于标签,添加以下键值对:
-
键:AthenaDriverOidcAppArn
-
值:在 IAM 访问角色设置期间复制的 AccessroLearn。
-
-
指定应用程序凭证时,添加您在 IAM 应用程序角色设置期间复制的 AWS 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 值来自动处理此问题。
管理员仍然可以根据需要调整应用程序角色权限,让用户在连接字符串中提供 AccessRoleArn
或 CustomerIdcApplicationArn
。
使用启用了可信身份传播功能的 Athena 驱动程序运行查询
下载要使用的驱动程序的最新版。有关 JDBC 安装的更多信息,请参阅开始使用 JDBC 3.x 驱动程序。您可以选择基于支持的平台安装 ODBC 驱动程序。有关更多信息,请参阅 开始使用 ODBC 2.x 驱动程序。根据您要使用的驱动程序,提供以下文章中列出的参数:
注意
只有 JDBC 3.6.0 及更高版和 ODBC 2.0.5.0 及更高版,才支持将可信身份传播与驱动程序结合使用。
将 Athena 驱动程序和可信身份传播与 DBeaver 结合使用
-
从 Athena 下载带有依赖关系的最新 JDBC jar。有关更多信息,请参阅 Athena JDBC 3.x 驱动程序。
-
在计算机上打开 DBeaver 应用程序。
-
导航到屏幕顶部的数据库菜单,然后选择驱动程序管理器。
-
选择新建,然后选择库。
-
添加最新的驱动程序并选择查找类。此时系统会给你一个类似
com.amazon.athena.jdbc.AthenaDriver
的文件路径。 -
打开设置选项卡,并填写以下字段
-
驱动程序名称:Athena JDBC 可信身份传播
-
类名称:
com.amazon.athena.jdbc.AthenaDriver
-
选择不进行身份验证选项。
-
-
选择连接到数据库,然后找到 Athena JDBC 可信身份传播。这会将您导向至 JDBC URL。有关更多信息,请参阅 配置驱动程序。
-
提供以下详细信息
-
Workgroup:您要在其中运行查询的工作组。有关工作组的信息,请参阅 WorkGroup。
-
Region:将在其中运行查询的 AWS 区域。有关区域列表,请参阅 Amazon Athena endpoints and quotas。
-
OutputLocation:用于存储查询结果的 Amazon S3 位置。有关输出位置的信息,请参阅 ResultConfiguration。
-
CredentialsProvider:输入
JWT_TIP
。 -
ApplicationRoleArn:用于启用
AssumeRoleWithWebIdentity
的角色 ARN。有关 ARN 角色的更多信息,请参阅 AWS Security Token Service API Reference 中的 AssumeRole。 -
WorkgroupArn:将在其中运行查询的工作组 ARN。它必须与 Workgroup 字段中提供的工作组一致。有关工作组的信息,请参阅 WorkGroup。
-
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 被重复用于令牌交换。有关更多信息,请参阅 Prerequisites and considerations for trusted token issuers。为了处理这个问题,JDBC 实现了内存缓存,内存缓存的生命周期取决于主驱动程序实例。对于 ODBC,可以选择使用文件缓存,此功能允许缓存和重复使用临时凭证,以减少会话生命周期中使用的 Web 身份令牌数量。
-
打开 SQL 查询编辑器并开始运行查询。要验证用户的传播身份,请参阅 Cloudtrail logs。