AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

禁用临时安全凭证的权限

临时安全凭证在过期之前一直有效,并且无法撤销。但是,由于每次使用证书发出 AWS 请求时都会评估权限,因此,即使证书已经签发,您仍可通过更改证书的权限来实现撤消证书的效果。如果您删除了临时安全凭证的所有权限,则使用这些凭证的后续 AWS 请求都将失败。以下章节将讲解更改或撤消分配给临时安全凭证的权限的机制。

注意

在更新现有策略权限时或在向用户或资源应用新策略时,可能需要几分钟时间,策略更新才能生效。

拒绝访问临时安全凭证的创建者

要更改或删除分配给临时安全凭证的权限,您可更改或删除与这些凭证创建者关联的权限。证书的创建者由用于获取该证书的 AWS STS API 决定。以下章节将讲解更改或删除与此创建者关联的权限的机制。

拒绝访问由 AssumeRole、AssumeRoleWithSAML 或 AssumeRoleWithWebIdentity 创建的证书

要更改或删除为调用 AssumeRoleAssumeRoleWithSAMLAssumeRoleWithWebIdentity API 而获取的临时安全凭证分配的权限,请编辑或删除为担任的角色定义权限的角色权限策略。通过代入角色获得的临时安全凭证所拥有的权限绝不会多于所代入角色的访问策略中定义的权限,且每次使用临时安全凭证发出 AWS 请求时都会评估分配给其的权限。在编辑或删除角色的权限策略时,所做的更改影响与该角色关联的所有 临时安全凭证 (包括在更改该角色的访问策略之前颁发的凭证) 的权限。通过执行撤销 IAM 角色临时安全凭证中的步骤可以立即撤消对会话的所有权限。

有关编辑角色权限策略的更多信息,请参阅修改角色

拒绝访问由 GetFederationToken 或 GetSessionToken 创建的证书

要更改或删除分配给通过调用 GetFederationTokenGetSessionToken API 获得的临时安全凭证的权限,可编辑或删除其凭证用于调用 GetFederationTokenGetSessionToken 的 IAM 用户的关联策略。通过调用 GetFederationTokenGetSessionToken 获得的临时安全凭证所拥有的权限绝不会多于其凭证用于获取这些权限的 IAM 用户的权限。此外,每次使用临时安全凭证发出 AWS 请求时都会评估分配给该凭证的权限。请务必注意,编辑或删除 IAM 用户的权限时,所做出的更改会影响该 IAM 用户及由该用户创建的所有临时安全凭证。

重要

您无法更改 AWS 账户根用户的权限。同样,以根用户身份登录时,您无法更改调用 GetFederationTokenGetSessionToken 创建的临时安全凭证的权限。因此,我们建议您不要以根用户身份调用 GetFederationTokenGetSessionToken

有关如何更改或删除其凭证用于调用 GetFederationTokenGetSessionToken 的 IAM 用户的关联策略,请参阅管理 IAM 策略

根据名称拒绝访问临时安全凭证

您可以拒绝访问临时安全凭证而不影响创建该证书的 IAM 用户或角色的权限。方法是:在基于资源的策略的 Principal 元素中指定临时安全凭证的 Amazon 资源名称 (ARN)。(只有一部分 AWS 服务支持基于资源的策略。)

拒绝访问联合身份用户

例如,假设您有一个名为 token-app 的 IAM 用户,且其凭证用于调用 GetFederationTokenGetFederationToken API 调用使得临时安全凭证关联至名为 Bob 的联合身份用户 (该联合身份用户的名称来自该 API 调用的 Name 参数)。要拒绝联合身份用户 Bob 访问名为 EXAMPLE-BUCKET 的 S3 存储桶,您可将以下示例存储桶策略附加到 EXAMPLE-BUCKET。请务必注意,这只影响该联合身份用户的 Amazon S3 权限,授予该联合身份用户的所有其他权限均保持不变。

{ "Version": "2012-10-17", "Statement": { "Principal": {"AWS": "arn:aws-cn:sts::ACCOUNT-ID-WITHOUT-HYPHENS:federated-user/Bob"}, "Effect": "Deny", "Action": "s3:*", "Resource": "arn:aws-cn:s3:::EXAMPLE-BUCKET" } }

您可在该存储桶策略的 Principal 元素中指定拥有 GetFederationToken 调用证书的 IAM 用户的 ARN,而非指定该联合身份用户。在此示例中,上述策略的 Principal 元素如下所示:

"Principal": {"AWS": "arn:aws-cn:iam::ACCOUNT-ID-WITHOUT-HYPHENS:user/token-app"}

请务必注意,在该策略中指定 IAM 用户 token-app 的 ARN 会导致对由 token-app 创建的所有联合身份用户 (而不仅仅是名为 Bob 的联合身份用户) 的访问遭拒。

拒绝访问担任角色的用户

也可指定通过担任角色创建的临时安全凭证的 ARN。区别在于在基于资源的策略的 Principal 元素中使用的语法。例如,某用户担任名为 Accounting-Role 的角色并指定 RoleSessionNameMary (RoleSessionNameAssumeRole API 调用的一个参数)。要拒绝访问由该 API 调用产生的临时安全凭证,基于资源的策略的 Principal 元素如下所示:

"Principal": {"AWS": "arn:aws-cn:sts::ACCOUNT-ID-WITHOUT-HYPHENS:assumed-role/Accounting-Role/Mary"}

此外,您还可以在基于资源的策略的 Principal 元素中指定该 IAM 角色的 ARN。在此示例中,该策略将导致对与名为 Accounting-Role 的角色关联的所有 临时安全凭证的访问遭拒。

"Principal": {"AWS": "arn:aws-cn:iam::ACCOUNT-ID-WITHOUT-HYPHENS:role/Accounting-Role"}

拒绝访问在特定时间之前签发的临时安全凭证

可以只拒绝对在特定时间和日期前创建的临时安全凭证的访问。方法是:在某策略的 Condition 元素的 aws:TokenIssueTime 键中指定值。以下策略显示了一个示例。您可将类似以下示例的策略关联至创建该临时安全凭证的 IAM 用户。仅当 aws:TokenIssueTime 的值早于指定的日期和时间时,该策略才会拒绝所有权限。aws:TokenIssueTime 的值对应于临时安全凭证的确切创建时间。aws:TokenIssueTime 值仅存在于使用临时安全凭证签署的 AWS 请求的上下文中,因此,该策略中的 Deny 语句不会影响使用该 IAM 用户的长期凭证签署的请求。

以下策略还可以附加到角色。在这种情况下,该策略只会影响由该角色在指定日期和时间之前创建的临时安全凭证。如果凭证是该角色在指定日期和时间之后创建的,则该策略中的 Condition 元素将评估为 false,因此,Deny 语句将不起作用。

例 根据签发时间拒绝临时凭证所有权限的策略

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": {"DateLessThan": {"aws:TokenIssueTime": "2014-05-07T23:47:00Z"}} } }

以这种方式调用会话的有效用户必须获得临时凭证,新会话才能继续工作。请注意,在证书过期前,AWS CLI 会缓存证书。要强制 CLI 删除并刷新已失效的缓存证书,请运行以下命令之一:

Linux、MacOS 或 Unix

$ rm -r ~/.aws/cli/cache

Windows

C:\> del /s /q %UserProfile%\.aws\cli\cache