版本控制 IAM 政策 - AWS Identity and Access Management

版本控制 IAM 政策

當您變更 IAM 客戶受管政策,且當 AWS 變更 AWS 受管政策時,變更的政策不會覆寫現有的政策。IAM 反而會建立新版本的受管政策。IAM 最多可以儲存五個版本的客戶受管政策。IAM 不支援內嵌政策版本控制。

下圖說明客戶受管政策的版本控制。在此範例中,版本 1-4 會進行儲存。您最多可以儲存五個受管政策版本到 IAM。當您編輯建立第六個儲存版本的政策時,您可以選擇任一不再儲存的舊版本。您可以隨時恢復到其他四個儲存版本中的任何一個。


      變更受管政策時會變成新版本的政策

政策版本與 Version 政策元素不同。Version 政策元素是在政策內使用,並定義政策語言的版本。若要進一步了解 Version 政策元素,請參閱 IAM JSON 政策元素:Version

您可以使用版本來追蹤受管政策的變更。例如,您可以變更受管政策,然後發現該變更有各種意外影響。在這種情況下,您可以復原至舊版的受管政策,做法是將舊版本設定為預設版本。

以下各節說明如何使用受管政策的版本控制。

用於設定預設政策版本的許可

設定預設政策版本所需的許可,對應於任務的 AWS API 操作。您可以使用 CreatePolicyVersionSetDefaultPolicyVersion API 操作來設定政策的預設版本。若要讓某人設定現有政策的預設政策版本,您可以允許存取 iam:CreatePolicyVersion 動作或 iam:SetDefaultPolicyVersion 動作。這個 iam:CreatePolicyVersion 動作可讓他們建立新版本的政策,並設定該版本為預設值。這個 iam:SetDefaultPolicyVersion 動作可讓他們將任何現有的政策版本設定為預設值。

重要

拒絕使用者政策中的 iam:SetDefaultPolicyVersion 動作不會阻止使用者建立新的政策版本,並設定為預設值。

您可以使用以下政策來拒絕使用者存取變更現有客戶的受管政策:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": "arn:aws:iam::*:policy/POLICY-NAME" } ] }

設定客戶受管政策的預設版本

其中一個受管政策版本是設定為預設版本。政策的預設版本是生效版本,也就是受管政策所連接的所有主體實體的 (使用者、使用者群組和角色) 的生效版本。

當您建立客戶受管政策,政策從單一版本 (識別為 v1) 開始。對於只有單一版本的受管政策,該版本會自動設定為預設值。對於具有多個版本的客戶受管政策,您可以選擇將哪個版本設定為預設值。對於 AWS 受管政策,預設版本由 AWS 設定。下圖說明了此概念。


        具單一版本的受管政策,其為預設版本


        客戶受管政策使用三種版本,其中版本 v2 是預設版本。

您可以設定預設的客戶受管政策版本,以套用該版本到政策連接的每個 IAM 身分 (使用者、使用者群組和角色)。您不能設定 AWS 受管政策或內嵌政策的預設版本。

設定客戶受管政策的預設版本 (主控台)

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇 Policies (政策)。

  3. 在政策清單中,選擇要設定預設版本的政策的政策名稱。您可以使用搜尋方塊來篩選政策清單。

  4. 選擇 Policy versions (政策版本) 標籤。選取要設定為預設版本的版本旁的核取方塊,然後選擇 Set as default (設定為預設)

若要了解如何從 AWS Command Line Interface或 AWS API 設定客戶受管政策的預設版本,請參閱編輯客戶受管政策 (AWS CLI)

使用版本復原變更

您可以設定客戶受管政策的預設版本來復原您的變更。例如,考量以下情境:

您建立客戶受管政策,讓使用者能夠使用 AWS Management Console 管理特定 Amazon S3 儲存貯體。建立後,您的客戶受管政策只有一個版本 (識別為 v1),所以該版本會自動設定為預設值。該政策按預期運作。

之後,您更新政策來新增許可,以管理第二個 Amazon S3 儲存貯體。IAM 建立新版本的政策 (識別為 v2),其中包含您的變更。您設定版本 v2 為預設值,不久後您的使用者報告他們沒有獲得使用 Amazon S3 主控台的許可。在這種情況下,您可以復原到版本 v1 的政策,就是您所知按預期運作的版本。為了這樣做,您設定版本 v1 為預設版本。您的使用者現在可以使用 Amazon S3 主控台來管理原始儲存貯體。

之後,在您判斷出政策的版本 v2 錯誤後,您再次更新政策來新增許可,以管理第二個 Amazon S3 儲存貯體。IAM 建立另一個新版本的政策,識別為 v3。您設定版本 v3 為預設值,而此版本按預期運作。此時,您刪除政策的版本 v2。

版本限制

受管政策至多可有 5 個版本。如果您需要從 AWS Command Line Interface或 AWS API 變更五個版本以上的受管政策,必須先刪除一或多個現有版本。如果您使用 AWS Management Console,在編輯政策之前,您不需要刪除版本。當您儲存第六個版本,會出現一個對話方塊,提示您刪除一或多個非預設的政策版本。您可以檢視每個版本的 JSON 政策文件,以協助您做決定。如需此對話方塊的詳細資訊,請參閱編輯 IAM 政策

您可以刪除任何想要的受管政策的版本,除了預設版本以外。當您刪除某個版本,剩餘版本的版本識別碼不會變更。因此,版本識別碼可能不會序列化。例如,若刪除受管政策的版本 v2 和 v4,並新增兩個新版本,剩餘的版本識別碼可能為 v1、v3、v5、v6 和 v7。