AWS Identity and Access Management
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

IAM 策略版本控制

在对 IAM 客户托管策略进行更改时,以及 AWS 对 AWS 托管策略进行更改时,更改的策略不会覆盖现有的策略。而是由 IAM 创建新的托管策略版本。IAM 最多可以存储五个版本的客户托管策略。IAM 不支持内联策略版本控制。

下图说明了客户托管策略版本控制。

 对托管策略进行的更改成为新的策略版本

策略版本与 Version 策略元素不同。Version 策略元素用在策略之中,用于定义策略语言的版本。要了解有关 Version 策略元素的更多信息,请参阅IAM JSON 策略元素: Version

您可以使用不同版本跟踪对托管策略的更改。例如,您对托管策略进行更改,然后发现更改有意外效果。在这种情况下,通过将以前版本设置为默认 版本,可以回滚到以前版本的托管策略。

下面几节说明如何对托管策略进行版本控制。

设置客户托管策略的默认版本

托管策略的一个版本会设置为默认 版本。策略的默认版本是有效版本,即,它是对托管策略附加到的所有委托人实体 (用户、组和角色) 都生效的版本。

创建客户托管策略时,策略从标识为 v1 的单个版本开始。对于只有单个版本的托管策略,该版本会自动设置为默认版本。对于有多个版本的客户托管策略,由您选择要设置为默认版本的版本。对于 AWS 托管策略,默认版本由 AWS 设置。下面的示意图对此概念进行说明。

 有单个版本 (默认版本) 的托管策略
 有三个版本的客户托管策略,其中版本 v2 是默认版本。

您可以设置客户托管策略的默认版本,以将该版本应用于该策略附加到的每个委托人实体 (用户、组和角色)。您无法为 AWS 托管策略或内联策略设置默认版本。

设置客户托管策略的默认版本 (控制台)

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Policies

  3. 在策略列表中,选择要设置其默认版本的策略的名称。您可以使用 Filter 菜单和搜索框来筛选策略列表。

  4. 选择 Policy versions 选项卡。选中要设置为默认版本的版本旁的复选框,然后选择 Set as default

要了解如何从 AWS Command Line Interface或 AWS API 中设置客户托管策略的默认版本,请参阅编辑 IAM 策略 (AWS CLI 或 AWS API)

使用不同版本回滚更改

您可以设置客户托管策略的默认版本以回滚您的更改。例如,考虑以下情形:

您创建一个客户托管策略,该策略允许用户使用 AWS 管理控制台管理特定 Amazon S3 存储桶。创建时,您的客户托管策略只有一个版本 (标识为 v1),因此该版本自动设置为默认版本。该策略可正常工作。

后来,您更新该策略,添加对第二个 Amazon S3 存储桶的管理权限。IAM 创建新的策略版本 (标识为 v2),该版本包含您的更改。您将版本 v2 设置为默认版本,不久之后,您的用户报告,他们缺少使用 Amazon S3 控制台的权限。在此情况下,您可以回滚到策略版本 v1,您知道该版本可正常工作。为此,您可以将版本 v1 设置为默认版本。您的用户现在可以使用 Amazon S3 控制台来管理原始存储桶。

后来,在确定策略版本 v2 中的错误之后,您再次更新策略,添加对第二个 Amazon S3 存储桶的管理权限。IAM 创建另一个新策略版本 (标识为 v3)。您将版本 v3 设置为默认版本,此版本可正常工作。此时,您删除策略版本 v2。

版本限制

一个托管策略最多可以有五个版本。如果需要从 AWS Command Line Interface 或 AWS API 中在五个版本之外更改托管策略,必须先删除一个或多个现有的版本。如果使用的是 AWS 管理控制台,则您在编辑策略之前不必删除版本。当您保存第六个版本时,会出现一个对话框,提示您删除策略的一个或多个非默认版本。您可以查看每个版本的 JSON 策略文档,以方便做出决定。有关该对话框的详细信息,请参阅编辑 IAM 策略

您可以根据需要删除任何托管策略版本 (默认版本除外)。删除某个版本时,其余版本的版本标识符不会更改。因此,版本标识符可能是不连续的。例如,如果您删除托管策略版本 v2 和 v4,然后添加两个新版本,则其余版本标识符可能是 v1、v3、v5、v6 和 v7。