禁用临时安全凭证的权限 - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

禁用临时安全凭证的权限

临时安全凭证在过期之前一直有效。这些凭证在指定的时间段内有效,即 900 秒(15 分钟)到最长 129600 秒(36 小时)之间。默认会话持续时间为 43200 秒(12 小时)。您可以撤消这些凭证,但还须更改角色的权限,以阻止他人通过已泄露的凭证进行恶意账户活动。每次使用临时安全凭证发出 Amazon 请求时,系统都会评估分配给该凭证的权限。从凭证中删除所有权限后,使用这些权限的 Amazon 请求会失败。

可能需要几分钟时间,策略更新才能生效。撤消角色的临时安全凭证,以强制担任该角色的所有用户重新进行身份验证并请求新的凭证。

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

重要

对于 IAM Identity Center 中的用户,请参阅《Amazon IAM Identity Center User Guide》中的 Disable user access。您也可以在 IAM Identity Center 控制台中删除对云应用程序或自定义 SAML 2.0 应用程序的用户访问权限

拒绝访问与角色关联的所有会话

如果担心他人通过以下方式进行可疑访问,可使用此方法:

  • 使用跨账户存取权限的其他账户主体

  • 有权访问账户中 Amazon 资源的外部用户身份

  • 已在移动或 Web 应用程序中使用 Web 身份提供者进行身份验证的用户

此过程拒绝向有权担任角色的所有用户授予权限。

要更改或删除为调用 AssumeRoleAssumeRoleWithSAMLAssumeRoleWithWebIdentityGetFederationTokenGetSessionToken 而获取的临时安全凭证分配的权限,请编辑或删除为角色定义权限的权限策略。

重要

如果存在允许主体访问的基于资源的策略,您还必须为该资源添加显式拒绝。有关详细信息,请参阅使用基于资源的策略拒绝会话用户

  1. 登录到 Amazon Web Services Management Console 并打开 IAM 控制台。

  2. 在导航窗格中,选择要编辑的角色名称。您可以使用搜索框来筛选列表。

  3. 选择相关策略。

  4. 选择 Permissions 选项卡。

  5. 选择 JSON 选项卡并更新策略以拒绝所有资源和操作。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "*", "Resource": "*" } ] }
  6. 审核页面上,检查策略摘要,然后选择保存更改进行保存。

更新策略时,所做的更改会影响与该角色关联的所有临时安全凭证的权限,包括在更改该角色的权限策略之前颁发的凭证。更新策略后,您可以撤消角色的临时安全凭证,以立即撤消对该角色的已颁发凭证的所有权限。

拒绝访问特定会话

当您使用拒绝所有的策略更新 IdP 可担任的角色或完全删除该角色时,所有有权访问该角色的用户都会中断。您可以根据 Principal 元素拒绝访问,而不会影响与角色关联的所有其他会话的权限。

可以使用条件上下文键基于资源的策略拒绝执行 Principal 的权限。

提示

您可以使用 Amazon CloudTrail 日志查找联合用户的 ARN。有关更多信息,请参阅 How to Easily Identify Your Federated Users by Using Amazon CloudTrail

使用条件上下文键拒绝用户会话

如果您想要拒绝访问特定临时安全凭证会话,而不影响创建该凭证的 IAM 用户或角色的权限,可以使用条件上下文键。

有关条件上下文键的更多信息,请参阅 Amazon 全局条件上下文密钥

注意

如果存在允许主体访问的基于资源的策略,则在完成这些步骤后,您还必须在基于资源的策略中添加一个显式拒绝语句。

更新策略后,您可以撤消角色的临时安全凭证,以立即撤消所有已颁发的凭证。

aws:PrincipalArn

您可以使用条件上下文键 aws:PrincipalArn 来拒绝访问特定的主体 ARN。为此,您可以在策略的 Condition 元素中指定与临时安全凭证关联的 IAM 用户、角色或联合用户的唯一标识符(ID)。

  1. 在 IAM 控制台的导航窗格中,选择要编辑的角色名称。您可以使用搜索框来筛选列表。

  2. 选择相关策略。

  3. 选择 Permissions 选项卡。

  4. 选择 JSON 选项卡并为主体 ARN 添加拒绝语句,如以下示例所示:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "ArnEquals": { "aws:PrincipalArn": [ "arn:aws:iam::222222222222:role/ROLENAME", "arn:aws:iam::222222222222:user/USERNAME", "arn:aws:sts::222222222222:federated-user/USERNAME" ] } } } ] }
  5. 审核页面上,检查策略摘要,然后选择保存更改进行保存。

aws:userid

您可以使用条件上下文键 aws:userid 来拒绝访问与 IAM 用户或角色关联的所有或特定临时安全凭证会话。为此,您可以在策略的 Condition 元素中指定与临时安全凭证关联的 IAM 用户、角色或联合用户的唯一标识符(ID)。

以下策略显示了如何使用条件上下文键 aws:userid 拒绝访问临时安全凭证会话的示例。

  • AIDAXUSER1 表示IAM 用户的唯一标识符。将 IAM 用户的唯一标识符指定为上下文键 aws:userid 的值将拒绝与 IAM 用户关联的所有会话。

  • AROAXROLE1 表示 IAM 角色的唯一标识符。将 IAM 角色的唯一标识符指定为上下文键 aws:userid 的值将拒绝与该角色关联的所有会话。

  • AROAXROLE2 表示担任角色的会话的唯一标识符。在担任角色的唯一标识符的 caller-specified-role-session-name 部分中,如果使用 StringLike 条件运算符,则可指定角色会话名称或通配符。如果您指定角色会话名称,则将拒绝已命名的角色会话,而不会影响已创建凭证的角色的权限。如果您为角色会话名称指定通配符,则将拒绝与该角色关联的所有会话。

  • account-id:<federated-user-caller-specified-name> 表示联合用户会话的唯一标识符。联合用户由调用 GetFederationToken API 的 IAM 用户创建。如果您为联合用户指定唯一标识符,则将拒绝已命名的联合用户会话,而不会影响已创建凭证的角色的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "StringLike": { "aws:userId": [ "AIDAXUSER1", "AROAXROLE1", "AROAXROLE2:<caller-specified-role-session-name>", "account-id:<federated-user-caller-specified-name>" ] } } } ] }

有关主体键值的具体示例,请参阅 主体键值。有关 IAM 唯一标识符的信息,请参阅 唯一标识符

使用基于资源的策略拒绝会话用户

如果任何基于资源的策略还包含主体 ARN,那么,您还必须根据基于资源的策略的 Principal 元素中特定用户的 principalId 或 sourceIdentity 值撤消访问权限。如果您仅更新角色的权限策略,则用户仍然可以执行基于资源的策略中允许的操作。

  1. 请参阅 使用 IAM 的Amazon服务 以查看该服务是否支持基于资源的策略。

  2. 登录到 Amazon Web Services Management Console,然后打开服务控制台。每项服务在控制台中用于附加策略的位置都各不相同。

  3. 编辑策略语句以指定凭证的识别信息:

    1. Principal 中,输入要拒绝的凭证的 ARN。

    2. Effect 中,输入“Deny.”

    3. Action 中,输入服务命名空间和要拒绝的操作名称。要拒绝所有操作,请使用通配符(*)。例如:“s3:*.”

    4. Resource 中,输入目标资源的 ARN。例如:“arn:aws:s3:::EXAMPLE-BUCKET.”

    { "Version": "2012-10-17", "Statement": { "Principal": [ "arn:aws:iam::222222222222:role/ROLENAME", "arn:aws:iam::222222222222:user/USERNAME", "arn:aws:sts::222222222222:federated-user/USERNAME" ], "Effect": "Deny", "Action": "s3:*", "Resource": "arn:aws:s3:::EXAMPLE-BUCKET" } }
  4. 保存您的工作。