禁用临时安全凭证的权限
临时安全凭证在过期之前一直有效,并且无法撤消。但是,由于每次使用凭证发出 Amazon 请求时都会评估权限,因此,即使凭证已经签发,您仍可通过更改凭证的权限来实现撤消凭证的效果。如果您删除了临时安全凭证的所有权限,则使用这些凭证的后续 Amazon 请求都将失败。以下章节将讲解更改或撤消分配给临时安全凭证的权限的机制。
在更新现有策略权限时或在向用户或资源应用新策略时,可能需要几分钟时间,策略更新才能生效。
拒绝访问临时安全凭证的创建者
要更改或删除分配给临时安全凭证的权限,您可更改或删除与这些凭证创建者关联的权限。凭证的创建者由用于获取该凭证的 Amazon STS API 决定。以下章节将讲解更改或删除与此创建者关联的权限的机制。
拒绝访问由 AssumeRole、AssumeRoleWithSAML 或 AssumeRoleWithWebIdentity 创建的证书
要更改或删除为调用 AssumeRole
、AssumeRoleWithSAML
或 AssumeRoleWithWebIdentity
API 操作而获取的临时安全凭证分配的权限,请编辑或删除为所代入角色定义权限的角色权限策略。通过代入角色获得的临时安全凭证所拥有的权限绝不会多于所代入角色的权限策略中定义的权限,且每次使用临时安全凭证发出 Amazon 请求时都会评估分配给其的权限。在编辑或删除角色的权限策略时,所做的更改影响与该角色关联的所有 临时安全凭证(包括在更改该角色的权限策略之前颁发的凭证)的权限。通过执行撤消 IAM 角色临时安全凭证中的步骤可以立即撤消对会话的所有权限。
有关编辑角色权限策略的更多信息,请参阅修改角色。
拒绝访问由 GetFederationToken 或 GetSessionToken 创建的证书
要更改或删除分配给通过调用 GetFederationToken
或 GetSessionToken
API 操作获得的临时安全凭证的权限,可编辑或删除其凭证用于调用 GetFederationToken
或 GetSessionToken
的 IAM 用户的关联策略。通过调用 GetFederationToken
或 GetSessionToken
获得的临时安全凭证所拥有的权限绝不会多于其凭证用于获取这些权限的 IAM 用户的权限。此外,每次使用临时安全凭证发出 Amazon 请求时都会评估分配给该凭证的权限。请务必注意,编辑或删除 IAM 用户的权限时,所做出的更改会影响该 IAM 用户及由该用户创建的所有临时安全凭证。
您无法更改 Amazon Web Services 账户根用户的权限。同样,以根用户身份登录时,您无法更改调用 GetFederationToken
或 GetSessionToken
创建的临时安全凭证的权限。因此,我们建议您不要以根用户身份调用 GetFederationToken
或 GetSessionToken
。
有关如何更改或删除其凭证用于调用 GetFederationToken
或 GetSessionToken
的 IAM 用户的关联策略,请参阅 管理 IAM policy。
根据名称拒绝访问临时安全证书
您可以拒绝访问临时安全凭证而不影响创建该凭证的 IAM 用户或角色的权限。方法是:在基于资源的策略的 Principal
元素中指定临时安全凭证的 Amazon Resource Name (ARN)。(只有一部分 Amazon 服务支持基于资源的策略。)
拒绝访问联合身份用户
例如,假设您有一个名为 token-app
的 IAM 用户,且其凭证用于调用 GetFederationToken
。GetFederationToken
API 调用使得临时安全凭证关联至名为 Bob 的联合身份用户 (该联合身份用户的名称来自该 API 调用的 Name
参数)。要拒绝联合身份用户 Bob 访问名为 EXAMPLE-BUCKET 的 S3 存储桶,您可将以下示例存储桶策略附加到 EXAMPLE-BUCKET。请务必注意,这只影响该联合身份用户的 Amazon S3 权限,授予该联合身份用户的所有其他权限均保持不变。
{ "Version": "2012-10-17", "Statement": { "Principal": {"AWS": "arn:aws:sts::
account-id
:federated-user/Bob"}, "Effect": "Deny", "Action": "s3:*", "Resource": "arn:aws:s3:::EXAMPLE-BUCKET" } }
您可在该存储桶策略的 GetFederationToken
元素中指定拥有 Principal
调用凭证的 IAM 用户的 ARN,而非指定该联合身份用户。在此示例中,上述策略的 Principal
元素如下所示:
"Principal": {"AWS": "arn:aws:iam::account-id
:user/token-app"}
请务必注意,在该策略中指定 IAM 用户 token-app
的 ARN 会导致对由 token-app
创建的所有联合身份用户(而不仅仅是名为 Bob 的联合身份用户)的访问遭拒。
拒绝访问担任角色的用户
也可指定通过担任角色创建的临时安全凭证的 ARN。区别在于在基于资源的策略的 Principal
元素中使用的语法。例如,某用户担任名为 Accounting-Role
的角色并指定 RoleSessionName
为 Mary
(RoleSessionName
是 AssumeRole
API 调用的一个参数)。要拒绝访问由该 API 调用产生的临时安全凭证,基于资源的策略的 Principal
元素如下所示:
"Principal": {"AWS": "arn:aws:sts::account-id
:assumed-role/Accounting-Role/Mary"}
此外,您还可以在基于资源的策略的 Principal
元素中指定该 IAM 角色的 ARN。在这种情况下,策略将导致拒绝对与名为 Accounting-Role
的角色关联的所有临时安全凭证的访问。
"Principal": {"AWS": "arn:aws:iam::account-id
:role/Accounting-Role"}
拒绝访问在特定时间之前签发的临时安全凭证
可以只拒绝对在特定时间和日期前创建的临时安全凭证的访问。方法是:在某策略的 aws:TokenIssueTime
元素的 Condition
键中指定值。以下策略显示了一个示例。您可将类似以下示例的策略关联至创建该临时安全凭证的 IAM 用户。仅当 aws:TokenIssueTime
的值早于指定的日期和时间时,该策略才会拒绝所有权限。aws:TokenIssueTime
的值对应于临时安全凭证的确切创建时间。aws:TokenIssueTime
值仅存在于使用临时安全凭证签署的 Amazon 请求的上下文中,因此,该策略中的 Deny
语句不会影响使用该 IAM 用户的长期凭证签署的请求。
以下策略还可以附加到角色。在这种情况下,该策略只会影响由该角色在指定日期和时间之前创建的临时安全凭证。如果凭证是该角色在指定日期和时间之后创建的,则该策略中的 Condition
元素将评估为 false,因此,Deny
语句将不起作用。
例 根据签发时间拒绝临时凭证所有权限的示例策略
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": {"DateLessThan": {"aws:TokenIssueTime": "2014-05-07T23:47:00Z"}} } }
以这种方式调用会话的有效用户必须获得临时凭证,新会话才能继续工作。请注意,在凭证过期前,Amazon CLI 会缓存凭证。要强制 CLI 删除并刷新已失效的缓存证书,请运行以下命令之一:
Linux、MacOS 或 Unix
$
rm -r ~/.aws/cli/cache
Windows
C:\>
del /s /q %UserProfile%\.aws\cli\cache