

# 撤销 IAM 角色临时安全凭证
<a name="id_roles_use_revoke-sessions"></a>

**警告**  
如果您执行此页面上的步骤，则通过担任角色创建的具有当前会话的所有用户对所有 AWS 操作和资源的访问将被拒绝。这会导致用户丢失未保存的工作。

在允许用户访问具有较长的会话持续时间（例如 12 小时）的 AWS 管理控制台 时，用户的临时凭证不会很快过期。如果用户无意中向未授权第三方公开其凭证，则第三方在会话的持续时间内将具有访问权限。不过，如果需要，可以撤销对某个特定时间点之前发布的角色凭证的所有权限。指定时间之前发布的该角色的所有临时凭证将变得无效。这将强制所有用户重新进行身份验证并请求新的凭证。

 

**注意**  
您无法撤销*[服务相关角色](id_roles.md#iam-term-service-linked-role)*对会话的权限。

在使用本主题中的过程撤消角色的权限时，AWS 会向角色附加新的内联策略来拒绝对所有操作的所有权限。它包括仅当用户在撤销权限时的某个时间点*之前* 代入角色的情况下应用限制的情况。如果用户在您撤销权限*之后* 代入角色，则拒绝策略不适用于该用户。

有关拒绝访问的更多信息，请参阅 [禁用临时安全凭证的权限](id_credentials_temp_control-access_disable-perms.md)。

**重要**  
此拒绝策略适用于指定角色的所有用户，而不只是适用于具有持续时间更长的控制台会话的用户。

## 从角色撤消会话权限所需的最低权限
<a name="revoke-session-permissions"></a>

要从角色成功撤消会话权限，您必须具有该角色的 `PutRolePolicy` 权限。这允许您将 `AWSRevokeOlderSessions` 内联策略附加到该角色。

## 撤消会话权限
<a name="revoke-session"></a>

您可以撤消某个角色的会话权限，以拒绝代入该角色的任何用户的所有权限。

**注意**  
您不能编辑 IAM 中根据 IAM Identity Center 权限集创建的角色。您必须在 IAM Identity Center 中撤消用户的活动权限集会话。有关更多信息，请参阅《*IAM Identity Center 用户指南*》中的[撤消由权限集创建的活动 IAM 角色会话](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions)。

**立即拒绝对角色凭证的任何当前用户的所有权限**

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**角色**，然后选择要撤消其权限的角色的名称（而不是复选框）。

1. 在所选角色的 **Summary** 页面上，选择 **Revoke sessions** 选项卡。

1. 在 **Revoke sessions** 选项卡上，选择 **Revoke active sessions**。

1. AWS 要求您确认此操作。选择**我确认我正在撤消此角色的所有活动会话。**复选框，然后在对话框中选择**撤消活动会话**。

   然后 IAM 会将名为 `AWSRevokeOlderSessions` 的策略附加到角色。选择**撤消活动会话**后，此策略将拒绝在过去已经以及未来大约 30 秒钟将会代入该角色的用户的所有访问权限。此未来时间选项考虑了策略的传播延迟，以便处理在更新后的策略在给定区域生效之前获得或续订的新会话。任何在您选择“撤消活动会话”之后超过大约 30 秒代入角色的用户均不受影响。要了解为什么更改并非始终立即可见，请参阅 [我所做的更改可能不会立即可见](troubleshoot.md#troubleshoot_general_eventual-consistency)。

**注意**  
如果您稍后再次选择**撤消活动会话**，则将刷新策略中的日期和时间戳，并将再次拒绝在新的指定时间之前代入角色的任何用户的所有访问权限。

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

**Linux、macOS 或 Unix**

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

**Windows**

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

## 在指定时间之前撤消会话权限
<a name="revoke-session-policy"></a>

 您也可以使用 AWS CLI 或 SDK 在策略的 Condition 元素中指定 `aws:TokenIssueTime` 键的值，随时撤消会话权限。

当 `aws:TokenIssueTime` 的值早于指定的日期和时间时，该策略会拒绝所有权限。`aws:TokenIssueTime` 的值对应于临时安全凭证的确切创建时间。`aws:TokenIssueTime` 值仅存在于使用临时安全凭证签署的 AWS 请求的上下文中，因此，该策略中的 Deny 语句不会影响使用该 IAM 用户的长期凭证签署的请求。

该策略还可以附加到角色。在这种情况下，该策略只会影响由该角色在指定日期和时间之前创建的临时安全凭证。

------
#### [ JSON ]

****  

```
{
  "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
```