本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 TIP 插件进行访问 Amazon Web Services 服务
可信身份传播 (TIP) 是一项功能 Amazon IAM Identity Center ,它使的 Amazon Web Services 服务 管理员能够根据用户属性(例如群组关联)授予权限。通过可信身份传播,可以向 IAM 角色添加身份上下文,以识别请求访问 Amazon 资源的用户。此上下文会传播到其他 Amazon Web Services 服务上下文。
身份上下文包含在他们收到访问请求时 Amazon Web Services 服务 用于做出授权决策的信息。这些信息包括识别请求者(例如,IAM 身份中心用户)、请求访问权限的元数据(例如 Amazon Redshift)和访问范围(例如,只读权限)的元数据。 Amazon Web Services 服务 接收方 Amazon Web Services 服务 使用此上下文以及分配给用户的任何权限来授权访问其资源。有关更多信息,请参阅《 Amazon IAM Identity Center 用户指南》中的 “可信身份传播概述”。
使用 TIP 插件的先决条件
要使该插件正常运行,需要以下资源:
-
您必须使用 适用于 Java 的 Amazon SDK 或 适用于 JavaScript 的 Amazon SDK。
-
确认您使用的服务支持可信身份传播。
请参阅《Amazon IAM Identity Center 用户指南》中与 IAM Identity Center 集成的Amazon 托管应用程序的 “通过 IAM 身份中心启用可信身份传播” 一栏。
-
启用 IAM 身份中心和可信身份传播。
请参阅《Amazon IAM Identity Center 用户指南》中的 TIP 先决条件和注意事项。
-
你必须有一个 Identity-Center-integrated应用程序。
参见《Amazon IAM Identity Center 用户指南》中的托Amazon 管应用程序或客户托管的应用程序。
-
您必须设置可信令牌发行者 (TTI) 并将您的服务连接到 IAM 身份中心。
请参阅《Amazon IAM Identity Center 用户指南》中的可信令牌发行者的先决条件和设置可信令牌发行者的任务。
在代码中使用 TIP 插件
-
创建可信身份传播插件的实例。
-
创建用于与您的交互的服务客户端实例, Amazon Web Services 服务 并通过添加可信身份传播插件来自定义服务客户端。
TIP 插件采用以下输入参数:
-
webTokenProvider:客户为从其外部身份提供商处获取 OpenID 令牌而实现的函数。 -
accessRoleArn:插件将扮演的 IAM 角色 ARN,其中包含用户的身份上下文,以获取身份增强证书。 -
applicationArn:客户端或应用程序的唯一标识符字符串。此值是已配置 OAuth 授权的应用程序 ARN。 -
ssoOidcClient:(可选)具有客户定义配置的 SSO OIDC 客户端,例如SsoOidcClient适用于 Java 或 for client-sso-oidc的 JavaScript客户端。如果未提供,则applicationRoleArn将实例化并使用使用的 OIDC 客户端。 -
stsClient:(可选)具有 Amazon STS 客户定义配置的客户端,用于假设accessRoleArn用户的身份上下文。如果未提供,则applicationRoleArn将实例化并使用正在使用的 Amazon STS 客户端。 -
applicationRoleArn:(可选)要使用的 IAM 角色 ARN,AssumeRoleWithWebIdentity以便可以引导 OIDC 和 Amazon STS 客户端。-
如果未提供,则必须同时提供
ssoOidcClient和stsClient参数。 -
如果提供,则该值
applicationRoleArn不能与accessRoleArn参数相同。applicationRoleArn用于构建 stsClient,它用于假设 AccessRole。如果两者都使用相同的角色applicationRoleaccessRole,则意味着使用角色来扮演自己(自我角色假设),这是不鼓励的。 Amazon有关更多详细信息,请参阅公告。
-
ssoOidcClientstsClient、和applicationRoleArn参数的注意事项
配置 TIP 插件时,请根据您提供的参数考虑以下权限要求:
-
如果您提供
ssoOidcClient并且stsClient:-
上的凭据
ssoOidcClient应oauth:CreateTokenWithIAM有权致电身份中心以获取身份中心特定的用户上下文。 -
上的凭证
stsClient应具有sts:AssumeRole,sts:SetContext权限应为accessRole。accessRole还需要在证书开启的情况下配置信任关系stsClient。
-
-
如果您提供
applicationRoleArn:-
applicationRole应该对oauth:CreateTokenWithIAM所需资源(IdC 实例accessRole)拥有sts:AssumeRole和sts:SetContext权限,因为它将用于构建 OIDC 和 STS 客户端。 -
applicationRole应该与用于生成的身份提供者建立信任关系webToken,因为webToken将用于通过插件的AssumeRoleWithWebIdentity调用来假设 ApplicationRole。
-
ApplicationRole 配置示例:
网络令牌提供商的信任政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/IDENTITY_PROVIDER_URL" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "IDENTITY_PROVIDER_URL:aud": "CLIENT_ID_TO_BE_TRUSTED" } } } ] }
权限政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:SetContext" ], "Resource": [ "accessRoleArn" ] }, { "Effect": "Allow", "Action": [ "sso-oauth:CreateTokenWithIAM" ], "Resource": [ "*" ] } ] }
使用 TIP 的代码示例
以下示例显示了如何使用 适用于 Java 的 Amazon SDK 或在代码中实现 TIP 插件 适用于 JavaScript 的 Amazon SDK。