View a markdown version of this page

Identity-enhanced IAM 角色会话 - AWS IAM Identity Center

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Identity-enhanced IAM 角色会话

AWS Security Token Service(STS) 使应用程序能够获得身份增强型 IAM 角色会话。 Identity-enhanced 角色会话增加了身份上下文,该上下文在其调用时携带用户标识符。 AWS 服务 AWS 服务 可以在 IAM 身份中心中查找用户的群组成员资格和属性,并使用它们来授权用户访问资源。

AWS 应用程序通过向 AWS STS AssumeRole API 操作发出请求并在请求的ProvidedContexts参数中传递带有用户标识符 (userId) 的上下文断言来获得身份增强型角色会话。AssumeRole该上下文断言是从响应 CreateTokenWithIAM SSO OIDC 请求而收到的 idToken 声明中获取的。当 AWS 应用程序使用身份增强型角色会话访问资源时,会 CloudTrail 记录userId、启动会话和所采取的操作。有关更多信息,请参阅 Identity-enhanced IAM 角色会话日志

身份增强型 IAM 角色会话的类型

AWS STS 可以创建两种不同类型的身份增强型 IAM 角色会话,具体取决于向请求提供的上下文断言。AssumeRole已从 IAM Identity Center 获取身份令牌的应用程序,可向 IAM 角色会话添加 sts:identity_context(推荐)或 sts:audit_context(为向后兼容提供支持)。身份增强型 IAM 角色会话只能采用这些上下文断言中的一个,不能同时采用两者。

Identity-enhanced 使用 sts: identity_context 创建的 IAM 角色会话

当身份增强型角色会话包含 sts:identity_context 时,被调用的 AWS 服务 会决定资源授权是基于角色会话中代表的用户,还是基于角色。支持基于用户的授权的 AWS 服务 ,可为应用程序管理员提供向用户或用户所属组分配访问权限的控制。

AWS 服务 不支持基于用户的授权的用户忽略。sts:identity_context CloudTrail 记录 IAM 身份中心用户的 userID 以及该角色采取的所有操作。有关更多信息,请参阅 Identity-enhanced IAM 角色会话日志

要从中获取这种类型的身份增强角色会话 AWS STS,应用程序使用AssumeRole请求参数在请求中提供该sts:identity_context字段的ProvidedContexts值。使用 arn:aws:iam::aws:contextProvider/IdentityCenter 作为 ProviderArn 的值。

有关授权行为方式的更多信息,请参阅接收 AWS 服务文档。

Identity-enhanced 使用 sts: audit_context 创建的 IAM 角色会话

过去sts:audit_context,用于启用 AWS 服务 记录用户身份,而无需使用它来做出授权决定。 AWS 服务 现在能够使用单一上下文 sts:identity_context-来实现这一目标并做出授权决策。我们建议在所有新的可信身份传播部署中使用 sts:identity_context

Identity-enhanced IAM 角色会话日志

向 AWS 服务 使用身份增强型 IAM 角色会话发出请求时,用户的 IAM 身份中心userId将登录到元素 CloudTrail 中OnBehalfOf。事件的记录方式 CloudTrail 因情况而异 AWS 服务。并非所有 AWS 服务 都会记录 onBehalfOf 元素。

以下是如何登录向 AWS 服务 使用身份增强角色会话发出的请求的示例。 CloudTrail

"userIdentity": { "type": "AssumedRole", "principalId": "AROAEXAMPLE:MyRole", "arn": "arn:aws:sts::111111111111:assumed-role/MyRole/MySession", "accountId": "111111111111", "accessKeyId": "ASIAEXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROAEXAMPLE", "arn": "arn:aws:iam::111111111111:role/MyRole", "accountId": "111111111111", "userName": "MyRole" }, "attributes": { "creationDate": "2023-12-12T13:55:22Z", "mfaAuthenticated": "false" } }, "onBehalfOf": { "userId": "11111111-1111-1111-1111-1111111111", "identityStoreArn": "arn:aws:identitystore::111111111111:identitystore/d-111111111" } }