IAM 和 Amazon STS 条件上下文密钥
您可以在 JSON 策略中使用 Condition
元素来测试所有 Amazon 请求的请求上下文中所包含键的值。这些键提供有关请求本身或请求所引用资源的信息。在允许用户请求的操作之前,您可以检查这些键是否具有指定值。这样,您就可以精细控制 JSON 策略语句何时与传入的请求匹配或不匹配。有关如何在 JSON 策略中使用 Condition
元素的信息,请参阅IAM JSON 策略元素:Condition。
本主题介绍了由 IAM 服务定义和提供的键(带 iam:
前缀)以及由 Amazon Security Token Service (Amazon STS) 服务定义和提供的键(带 sts:
前缀)。其他几个 Amazon 服务也提供与该服务定义的操作和资源相关的服务特定键。有关更多信息,请参阅 Amazon 服务的操作、资源和条件键。支持条件键的服务的文档通常包含附加信息。例如,有关可在 Amazon S3 资源的策略中使用的密钥信息,请参阅 Amazon Simple Storage Service 用户指南中的 Amazon S3 策略密钥。
IAM 的可用键
可以在控制对 IAM 资源的访问的策略中使用以下条件键:
- iam:AssociatedResourceArn
-
与 ARN 运算符结合使用。
指定此角色在目标服务上关联的资源的 ARN。资源通常属于主体将角色传递到的服务。有时,资源可能属于第三个服务。例如,您可以将角色传递给他们在 Amazon EC2 实例上使用的 Amazon EC2 Auto Scaling。在这种情况下,条件将匹配 Amazon EC2 实例的 ARN。
此条件键仅适用于策略中的 PassRole 操作。无法使用它来限制任何其他操作。
在策略中使用此条件键可允许实体传递角色,但前提是角色与指定资源相关联。您可以使用通配符 (*) 允许对特定类型的资源执行操作,而无需限制区域或资源 ID。例如,您可以允许 IAM 用户或角色将任何角色传递给 Amazon EC2 服务,以便用于
us-east-1
或us-west-1
区域中的实例。不允许将 IAM 用户或角色传递给其他服务。此外,它不允许 Amazon EC2 将角色用于其他区域中的实例。{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": {"iam:PassedToService": "ec2.amazonaws.com"}, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws:ec2:us-east-1:111122223333:instance/*", "arn:aws:ec2:us-west-1:111122223333:instance/*" ] } } }
注意 支持 iam:PassedToService 的 Amazon 服务也支持此条件键。
- iam:AWSServiceName
-
与字符串运算符结合使用。
指定此角色将附加到的 Amazon 服务。
在此示例中,如果服务名称为 access-analyzer.amazonaws.com,您将允许实体创建与服务关联的角色。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "access-analyzer.amazonaws.com" } } }] }
- iam:OrganizationsPolicyId
-
与字符串运算符结合使用。
检查具有指定 Amazon Organizations ID 的策略是否与请求中使用的策略匹配。要查看使用此条件键的示例 IAM policy,请参阅。IAM:查看 Organizations 策略的上次访问的服务信息
- iam:PassedToService
-
与字符串运算符结合使用。
指定可将角色传递到的服务的服务主体。此条件键仅适用于策略中的 PassRole 操作。无法使用它来限制任何其他操作。
在策略中使用此条件键时,请使用服务主体指定服务。服务主体是可在策略的
Principal
元素中指定的服务的名称。常见格式为:SERVICE_NAME_URL.amazonaws.com
。您可以使用
iam:PassedToService
限制您的用户,使其只能将角色传递到特定服务。例如,用户可能会创建一个服务角色,该角色信任 CloudWatch 代表用户将日志数据写入到 Amazon S3 存储桶。之后,用户必须将一个权限策略和一个信任策略附加到新的服务角色。在此情况下,信任策略必须指定cloudwatch.amazonaws.com
元素中的Principal
。要查看允许用户将角色传递给 CloudWatch 的策略,请参阅 IAM:将 IAM 角色传递给特定 Amazon 服务。通过使用此条件键,您可以确保用户仅为您指定的服务创建服务角色。例如,如果具有之前的策略的用户尝试为 Amazon EC2 创建服务角色,操作将失败。失败的原因是因为用户无权将角色传递到 Amazon EC2。
有时,您会将角色传递给一个服务,随后将角色传递给另一个服务。
iam:PassedToService
仅包含担任角色的最终服务,而不包括传递角色的中间服务。注意 某些服务不支持该条件键,例如 Amazon CodeBuild 和 Amazon CodeCommit。
- iam:PermissionsBoundary
-
与字符串运算符结合使用。
检查指定的策略附加为 IAM 主体资源上的权限边界。有关更多信息,请参阅 IAM 实体的权限边界
- iam:PolicyARN
-
与 ARN 运算符结合使用。
检查涉及托管策略的请求中的托管策略的 Amazon Resource Name (ARN)。有关更多信息,请参阅控制对策略的访问。
- iam:ResourceTag/
key-name
-
与字符串运算符结合使用。
检查附加到身份资源(用户或角色)的标签是否与指定的键名称和键值匹配。
注意 IAM 和 Amazon STS 同时支持
iam:ResourceTag
IAM 条件键和aws:ResourceTag
全局条件键。您可采用键值对的形式向 IAM 资源添加自定义属性。有关 IAM 资源的标签的更多信息,请参阅 标记 IAM 资源。您可以使用
ResourceTag
控制对 Amazon 资源(包括 IAM 资源)的访问。但是,由于 IAM 不支持组的标签,因此您不能使用标签来控制对组的访问。此示例说明如何创建基于身份的策略以允许删除具有
status=terminated
标签的用户。要使用此策略,请将示例策略中的斜体占位符文本
替换为您自己的信息。然后,按照创建策略或编辑策略中的说明操作。{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:DeleteUser", "Resource": "*", "Condition": {"StringEquals": {"iam:ResourceTag/
status
": "terminated
"}} }] }
Amazon Web 联合身份验证的可用键
您可以使用 Web 联合身份验证为通过身份提供程序 (IdP) 进行身份验证的用户提供临时安全凭证。此类提供商的示例包括 Login with Amazon、Amazon Cognito、Google 或 Facebook。在此情况下,当使用临时安全凭证发出请求时,将会有额外条件键可用。您可以使用这些键编写策略,将联合身份用户的访问权限限制为与特定提供商、应用程序或用户关联的资源。这些键通常在角色的信任策略中使用。
- amr
-
与字符串运算符结合使用。
示例:
cognito-identity.amazonaws.com:amr
如果您正在使用 Amazon Cognito 进行 Web 联合身份验证,则
cognito-identity.amazonaws.com:amr
键(身份验证方法引用)包含有关该用户的登录信息。该键有多个值,这意味着您要在使用条件集合运算符的策略中对它进行测试。该键可包含以下值:-
如果用户未经过身份验证,则该键仅包含
unauthenticated
。 -
如果该用户已经过身份验证,则该键包含值
authenticated
以及在调用中使用的登录提供商的名称 (graph.facebook.com
、accounts.google.com
或www.amazon.com
)。
例如,某 Amazon Cognito 角色信任策略中的以下条件测试用户是否未经过身份验证:
"Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-2:
identity-pool-id
" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } -
- aud
-
与字符串运算符结合使用。
使用
aud
条件键可验证 Google 客户端 ID 或 Amazon Cognito 身份池 ID 是否与您在策略中指定的 ID 匹配。对于同一身份提供程序,可以将aud
键与sub
键结合使用。示例:
-
accounts.google.com:aud
-
cognito-identity.amazonaws.com:aud
accounts.google.com:aud
条件键与以下 Google ID 令牌字段匹配。-
应用程序的 OAuth 2.0 Google 客户端 ID 的
aud
(如果未设置azp
字段)。如果设置了azp
字段,则aud
字段将与 accounts.google.com:oaud 条件键匹配。 -
azp
(如果设置了azp
字段)。对于 Web 应用程序和 Android 应用程序具有不同的 OAuth 2.0 Google 客户端 ID 但共享相同的 Google API 项目的混合应用程序,可能会出现这种情况。
有关 Google
aud
和azp
字段的更多信息,请参阅 Google Identity Platform OpenID Connect指南。 在使用
accounts.google.com:aud
条件键编写策略时,您必须了解该应用程序是否为设置azp
字段的混合应用程序。azp
字段未设置以下示例策略适用于未设置
azp
字段的非混合应用程序。在此情况下,Google ID 令牌aud
字段值将与accounts.google.com:aud
和accounts.google.com:oaud
条件键值匹配。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "aud-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }
azp
字段已设置以下示例策略适用于设置
azp
字段的混合应用程序。在此情况下,Google ID 令牌aud
字段值仅与accounts.google.com:oaud
条件键值匹配。azp
字段值与accounts.google.com:aud
条件键值匹配。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "azp-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }
-
- id
-
与字符串运算符结合使用。
示例:
-
graph.facebook.com:app_id
-
graph.facebook.com:id
-
www.amazon.com:app_id
-
www.amazon.com:user_id
使用这些键可验证应用程序(或站点)ID 或用户 ID 是否与您在策略中指定的 ID 匹配。这适用于 Facebook 或 Login with Amazon。对于同一身份提供程序,可以将
app_id
键与id
键结合使用。 -
- oaud
-
与字符串运算符结合使用。
示例:
accounts.google.com:oaud
如果您使用 Google 进行 Web 联合身份验证,则此键将指定该 ID 令牌用于的 Google 受众 (
aud
)。它必须是应用程序的 OAuth 2.0 客户端 ID 之一。 - sub
-
与字符串运算符结合使用。
示例:
-
accounts.google.com:sub
-
cognito-identity.amazonaws.com:sub
使用这些键可验证用户 ID 是否与您在策略中指定的 ID 匹配。对于同一身份提供程序,可以将
sub
键与aud
键结合使用。 -
- 有关 Web 联合身份验证的更多信息
-
有关 Web 联合身份验证的更多信息,请参阅以下内容:
-
Amazon Mobile SDK for Android 开发人员指南中的 Amazon Cognito 概述
-
Amazon Mobile SDK for iOS 开发人员指南中的 Amazon Cognito 概述
-
基于 SAML 的 Amazon STS 联合身份验证的可用键
如果您通过 Amazon Security Token Service (Amazon STS) 使用基于 SAML 的联合,则可以在策略中包含更多条件键。
SAML 角色信任策略
在角色的信任策略中,您可以包括以下键,以帮助您确定发起人是否有权担任角色。除了 saml:doc
,所有值均源自 SAML 断言。在创建或编辑带条件的策略时,可在 IAM 控制台可视化编辑器中使用列表中的所有项目。标有 []
的项目可以 具有指定类型列表中的值。
- saml:aud
-
与字符串运算符结合使用。
SAML 断言提交到的终端节点 URL。此键的值来自断言中的
SAML Recipient
字段,而不是Audience
字段。 - saml:commonName[]
-
与字符串运算符结合使用。
这是
commonName
属性。 - saml:cn[]
-
与字符串运算符结合使用。
这是
eduOrg
属性。 - saml:doc
-
与字符串运算符结合使用。
这代表担任角色所用的主体。格式为
account-ID
/provider-friendly-name
,例如123456789012/SAMLProviderName
。账户 ID 值指拥有 SAML 提供商的账户。 - saml:edupersonaffiliation[]
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonassurance[]
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonentitlement[]
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonnickname[]
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonorgdn
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonorgunitdn[]
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonprimaryaffiliation
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonprimaryorgunitdn
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonprincipalname
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersonscopedaffiliation[]
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:edupersontargetedid[]
-
与字符串运算符结合使用。
这是
eduPerson
属性。 - saml:eduorghomepageuri[]
-
与字符串运算符结合使用。
这是
eduOrg
属性。 - saml:eduorgidentityauthnpolicyuri[]
-
与字符串运算符结合使用。
这是
eduOrg
属性。 - saml:eduorglegalname[]
-
与字符串运算符结合使用。
这是
eduOrg
属性。 - saml:eduorgsuperioruri[]
-
与字符串运算符结合使用。
这是
eduOrg
属性。 - saml:eduorgwhitepagesuri[]
-
与字符串运算符结合使用。
这是
eduOrg
属性。 - saml:givenName[]
-
与字符串运算符结合使用。
这是
givenName
属性。 - saml:iss
-
与字符串运算符结合使用。
发布者,以 URN 表示。
- saml:mail[]
-
与字符串运算符结合使用。
这是
mail
属性。 - saml:name[]
-
与字符串运算符结合使用。
这是
name
属性。 - saml:namequalifier
-
与字符串运算符结合使用。
基于 SAML 提供商的友好名称的哈希值。该值是以下值按顺序的连接,以“/”字符分隔:
-
Issuer
响应值 (saml:iss
) -
AWS
账户 ID -
IAM 中 SAML 提供商的友好名称(ARN 的最后一部分)
账户 ID 与 SAML 提供商的易记名称的串联可作为键
saml:doc
供 IAM policy 使用。有关更多信息,请参阅唯一标识基于 SAML 的联合中的用户。 -
- saml:organizationStatus[]
-
与字符串运算符结合使用。
这是
organizationStatus
属性。 - saml:primaryGroupSID[]
-
与字符串运算符结合使用。
这是
primaryGroupSID
属性。 - saml:sub
-
与字符串运算符结合使用。
这是该陈述的主题,其中包含唯一标识组织中某个用户的值 (例如
_cbb88bf52c2510eabe00c1642d4643f41430fe25e3
)。 - saml:sub_type
-
与字符串运算符结合使用。
此键的值可以是
persistent
、transient
或由 SAML 断言中使用的Format
和Subject
元素的完整NameID
URI 构成。persistent
值表示在不同会话之间用户的saml:sub
值是相同的。如果值为transient
,则用户在每个会话中拥有不同的saml:sub
值。有关NameID
元素的Format
属性的信息,请参阅为身份验证响应配置 SAML 断言。 - saml:surname[]
-
与字符串运算符结合使用。
这是
surnameuid
属性。 - saml:uid[]
-
与字符串运算符结合使用。
这是
uid
属性。 - saml:x500UniqueIdentifier[]
-
与字符串运算符结合使用。
这是
x500UniqueIdentifier
属性。
有关 eduPerson
和 eduOrg
属性的一般信息,请参阅 REFEDS Wiki 网站eduPerson
属性的列表,请参阅 eduPerson 对象类规范 (201602)
列表类型的条件键可以包含多个值。要在策略中创建条件以获取列表值,可以使用集合运算符(ForAllValues
、ForAnyValue
)。例如,要支持从属关系为“教员”或“职员”(而非“学生”)的用户,可以使用下面这样的条件:
"Condition": { "ForAllValues:StringLike": { "saml:edupersonaffiliation":[ "faculty", "staff"] } }
SAML 角色权限策略
在定义允许用户在 Amazon 中访问的内容的 SAML 联合角色权限策略中,您可以包含以下键:
- saml:namequalifier
-
与字符串运算符结合使用。
这包含代表
saml:doc
和saml:iss
值组合的一个哈希值。它用作命名空间限定词;saml:namequalifier
和saml:sub
组合可唯一标识用户。 - saml:sub
-
与字符串运算符结合使用。
这是该陈述的主题,其中包含唯一标识组织中某个用户的值 (例如
_cbb88bf52c2510eabe00c1642d4643f41430fe25e3
)。 - saml:sub_type
-
与字符串运算符结合使用。
此键的值可以是
persistent
、transient
或由 SAML 断言中使用的Format
和Subject
元素的完整NameID
URI 构成。persistent
值表示在不同会话之间用户的saml:sub
值是相同的。如果值为transient
,则用户在每个会话中拥有不同的saml:sub
值。有关NameID
元素的Format
属性的信息,请参阅为身份验证响应配置 SAML 断言。
有关使用这些密钥的更多信息,请参阅关于基于 SAML 2.0 的联合身份验证。
Amazon STS 的可用键
您可以对使用 Amazon Security Token Service (Amazon STS) 操作担任的角色使用 IAM 角色信任策略中的以下条件键。
- sts:AWSServiceName
-
与字符串运算符结合使用。
使用此键指定可以在其中使用持有者令牌的服务。在策略中使用此条件键时,请使用服务主体指定服务。服务主体是可在策略的
Principal
元素中指定的服务的名称。例如,codeartifact.amazonaws.com
是 Amazon CodeArtifact 服务主体。某些 Amazon 服务需要您有权获取 Amazon STS 服务持有者令牌,然后您才能以编程方式访问它们的资源。例如,Amazon CodeArtifact 要求主体使用持有者令牌来执行某些操作。
aws codeartifact get-authorization-token
命令返回一个持有者令牌。然后,您可以使用持有者令牌来执行 Amazon CodeArtifact 操作。有关持有者令牌的更多信息,请参阅 使用持有者令牌。Availability(可用性)- 此键存在于获取持有者令牌的请求中。您不能直接调用 Amazon STS 以获取持有者令牌。当您在其他服务中执行某些操作时,服务代表您请求持有者令牌。
您可以使用此条件键以允许主体获取用于特定服务的持有人令牌。
- sts:DurationSeconds
-
与数字运算符结合使用。
使用此键指定主体在获取 Amazon STS 持有者令牌时可以使用的持续时间(以秒为单位)。
某些 Amazon 服务需要您有权获取 Amazon STS 服务持有者令牌,然后您才能以编程方式访问它们的资源。例如,Amazon CodeArtifact 要求主体使用持有者令牌来执行某些操作。
aws codeartifact get-authorization-token
命令返回一个持有者令牌。然后,您可以使用持有者令牌来执行 Amazon CodeArtifact 操作。有关持有者令牌的更多信息,请参阅 使用持有者令牌。Availability(可用性)- 此键存在于获取持有者令牌的请求中。您不能直接调用 Amazon STS 以获取持有者令牌。当您在其他服务中执行某些操作时,服务代表您请求持有者令牌。此键不适用于 Amazon STS assume-role 操作。
- sts:ExternalId
-
与字符串运算符结合使用。
使用此键可要求主体在代入 IAM 角色时提供特定标识符。
可用性 - 如果主体在使用 Amazon CLI 或 Amazon API 代入角色时提供外部 ID,则请求中存在此键。
在其他账户中担任角色时可能需要的唯一标识符。如果角色所属的账户的管理员为您提供了外部 ID,请在
ExternalId
参数中提供该值。该值可以是任意字符串,如密码或账号。外部 ID 的主要功能是解决并防止混淆代理人问题。有关外部 ID 和混淆代理人问题的更多信息,请参阅如何在向第三方授予对 Amazon 资源的访问权时使用外部 ID。ExternalId
值的长度必须最少为 2 个字符,最多为 1224 个字符。该值必须是字母数字,没有空格。它还可以包含以下符号:加号 (+)、等号 (=)、逗号 (,)、句点 (.)、@ 符号、冒号 (:)、正斜杠 (/) 和连字符 (-)。 - sts:RoleSessionName
-
与字符串运算符结合使用。
使用此键可将主体在代入角色时指定的会话名称与策略中指定的值进行比较。
可用性 - 当主体使用 Amazon Web Services Management Console 管理控制台、assume-role CLI 命令或 Amazon STS
AssumeRole
API 操作代入角色时,则请求中存在此键。您可以在角色信任策略中使用此键,以要求您的用户在代入角色时提供特定的会话名称。例如,您可以要求 IAM 用户指定自己的用户名作为其会话名称。在 IAM 用户代入角色后,活动将与匹配用户名的会话名称一起显示在 Amazon CloudTrail 日志中。这样,当不同的主体使用角色时,管理员可以更轻松地区分角色会话。
以下角色信任策略要求账户
111122223333
中的 IAM 用户在代入角色时提供其 IAM 用户名作为会话名称。使用条件键中的aws:username
条件变量来强制执行此要求。此策略允许 IAM 用户代入策略附加到的角色。此策略禁止任何使用临时凭证的人员代入角色,因为username
变量仅适用于 IAM 用户。重要 您可以使用任何可用的单值条件密钥作为变量。您不能使用多值条件键作为变量。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyRequireUsernameForSessionName", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Condition": { "StringLike": {"sts:RoleSessionName": "${aws:username}"} } } ] }
当管理员查看操作的 Amazon CloudTrail 日志时,他们可以将会话名称与其账户中的用户名进行比较。在以下示例中,名为
matjac
的用户使用名为MateoRole
的角色执行操作。之后,管理员会联系具有名为matjac
用户的 Mateo Jackson。"assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:
matjac
", "arn": "arn:aws:sts::111122223333:assumed-role/MateoRole
/matjac
" }如果您允许使用角色进行跨账户访问,则一个账户中的用户可以代入另一个账户中的角色。CloudTrail 中列出的代入角色的 ARN 包括角色所在的账户。它不包括已代入角色的用户的账户。用户仅在账户中是唯一的。因此,我们建议您使用此方法以仅在 CloudTrail 日志中查看您管理的账户中的用户所代入的角色。您的用户可以在多个账户中使用相同的用户名。
- sts:SourceIdentity
-
与字符串运算符结合使用。
使用此键可将主体在代入角色时指定的源身份与策略中指定的值进行比较。
可用性 — 如果主体提供源身份,同时担任使用任何 Amazon STS 担任角色 CLI 命令或 Amazon STS
AssumeRole
API 操作时,此密钥将会出现在请求中。您可以在角色信任策略中使用此键,以要求您的用户在代入角色时设置特定的源身份。例如,您可以要求您的工作人员或联合身份为源身份指定值。您可以将身份提供程序 (IdP) 配置为使用与用户关联的属性之一(例如用户名或电子邮件)作为源身份。然后,IdP 会将源身份作为其发送的断言或声明中的一个属性传递给 Amazon。源身份属性的值标识担任角色的用户或应用程序。
在用户担任角色后,活动将在使用已设置源身份值的 Amazon CloudTrail 日志中出现。这使管理员能够更轻松地确定什么角色在 Amazon 中执行了操作。您必须授予
sts:SetSourceIdentity
操作相应权限以允许身份设置源身份。与 sts:RoleSessionName 不同,在设置源身份后,无法更改该值。它将存在于源身份对角色执行的所有操作的请求上下文中。当您使用会话凭证担任另一个角色时,该值将保留到后续角色会话中。从一个角色代入另一个角色的过程称为角色链。
您可以使用 aws:SourceIdentity 全局条件键根据后续请求中源身份的值进一步控制对 Amazon 资源的访问权限。
以下角色信任策略允许 IAM 用户
AdminUser
在账户中担任角色111122223333
。它还会向AdminUser
授予权限来设置源身份,只要源身份设置为DiegoRamirez
即可。{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdminUserAssumeRole", "Effect": "Allow", "Principal": {"AWS": " arn:aws:iam::111122223333:user/AdminUser"}, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": {"sts:SourceIdentity": "DiegoRamirez"} } } ] }
要了解有关使用源身份信息的更多信息,请参阅 监控和控制使用所担任角色执行的操作。
- sts:TransitiveTagKeys
-
与字符串运算符结合使用。
使用此键将请求中的可传递会话标签键,与在策略中指定的键进行比较。
Availability(可用性)- 使用临时安全凭证发出请求时,请求中存在此密钥。这些凭证包括使用任何 assume-role 操作或
GetFederationToken
操作创建的凭证。当您使用临时安全凭证发出请求时,请求上下文包含
aws:PrincipalTag
上下文密钥。此键包括会话标签、可传递会话标签和角色标签的列表。可传递会话标签是当您使用会话凭证代入另一个角色时,持续传递到所有后续会话中的标记。从一个角色代入另一个角色的过程称为角色链。您可以在策略中使用此条件键,以便要求在代入角色或联合身份用户身份时,要求将特定会话标签设置为可传递标签。