使用 IAM 政策模擬器測試 IAM 政策 - AWS Identity and Access Management

使用 IAM 政策模擬器測試 IAM 政策

如需有關如何以及為什麼要使用 IAM 政策的詳細資訊,請參閱 IAM 中的政策和許可

您可前往 https://policysim.aws.amazon.com/ 存取 IAM 政策模擬器主控台

使用 IAM 政策模擬器,您可以測試和疑難排解身分型政策、IAM 許可界限、Organizations 服務控制政策 (SCP),以及資源型政策。以下是您可以使用政策模擬器執行的一些常見作業:

  • 測試連接到您 AWS 帳戶中 IAM 使用者、使用者群組或角色的政策。如果將多個政策連接到使用者、使用者群組或角色,則可以測試所有政策,或選擇個別政策來測試。您可以測試特定資源選擇的政策所允許或拒絕的動作。

  • 測試和疑難排解許可界限對 IAM 實體的效果。注意:您一次只能模擬一個許可界限。

  • 測試政策連接至 AWS 資源,例如 Amazon S3 儲存貯體、Amazon SQS 佇列、Amazon SNS 主題或 Amazon S3 Glacier 保存庫。

  • 如果您的 AWS 帳戶是 AWS Organizations 的組織成員,則可以測試服務控制政策 (SCP) 對 IAM 政策和資源政策的影響。

  • 透過輸入或將其複製到模擬器中來測試尚未連接到使用者、使用者群組或角色的新政策。這些只用於模擬,不會儲存。注意:您無法將以資源為基礎的政策輸入或複製到模擬器中。若要在模擬器中使用資源型政策,您必須將資源併入模擬中。您還必須選取核取方塊,以將該資源的政策併入模擬中。

  • 使用選取的服務、動作和資源來測試政策。例如,您可以測試以確保您的政策可讓實體在特定儲存貯體上執行 Amazon S3 服務中的 ListAllMyBucketsCreateBucketDeleteBucket 動作。

  • 透過提供內容索引鍵來模擬真實世界,這些內容索引鍵包含在測試政策中的 Condition 元素,例如 IP 地址或日期。

  • 識別政策中的特定陳述式導致允許或拒絕存取特定資源或動作。

IAM 政策模擬器的運作方式

模擬器會評估您選擇的政策並確定您指定的每個動作的有效許可。模擬器使用與 AWS 服務的實際請求期間所使用相同的政策評估引擎。但模擬器與即時 AWS 環境有以下幾點不同:

  • 模擬器不會發出實際的 AWS 服務請求,因此您可以安全地測試可能會對即時 AWS 環境造成不必要變更的請求。

  • 由於模擬器不會模擬執行中所選動作,因此無法向模擬請求報告任何回應。所請求的動作無論是被允許或是拒絕,只會傳回的唯一結果。

  • 如果您在模擬器內編輯政策,這些變更只會影響模擬器。您的 AWS 帳戶中的對應政策保持不變。

  • 您無法測試具有全域條件索引鍵的 AWS Organizations 服務控制政策 (SCP)。

使用 IAM 政策模擬器所需的許可

您可以使用政策模擬器主控台或政策模擬器 API 來測試政策。根據預設,主控台使用者可以透過在模擬器中輸入或複製這些政策來測試尚未連接到使用者、使用者群組或角色的政策。這些政策僅用於模擬,不會揭露敏感資訊。API 使用者必須具有測試未連接政策的許可。您可以允許主控台或 API 使用者測試連接到 AWS 帳戶中 IAM 使用者、使用者群組或角色的政策。若要執行此動作,您必須提供擷取這些政策的許可。為了測試以資源為基礎的政策,使用者必須有擷取資源政策的許可。

有關允許使用者模擬政策的主控台和 API 政策的範例,請參閱範例政策:AWS Identity and Access Management (IAM)

使用政策模擬器主控台所需的許可

您可以允許使用者測試連接到 AWS 帳戶中 IAM 使用者、使用者群組或角色的政策。若要執行此動作,您必須為使用者提供擷取這些政策的許可。為了測試以資源為基礎的政策,使用者必須有擷取資源政策的許可。

若要查看允許將政策模擬器主控台用於連接至使用者、使用者群組或角色的政策的範例政策,請參閱 IAM:存取政策模擬器主控台

若要查看僅允許具有特定路徑的使用者使用政策模擬器主控台的範例政策,請參閱 IAM:根據使用者路徑存取政策模擬器主控台

若要建立一個政策,只允許一個類型的實體使用政策模擬器主控台,請使用下列程序。

若要允許主控台使用者模擬使用者的政策

在您的政策中包含以下動作:

  • iam:GetGroupPolicy

  • iam:GetPolicy

  • iam:GetPolicyVersion

  • iam:GetUser

  • iam:GetUserPolicy

  • iam:ListAttachedUserPolicies

  • iam:ListGroupsForUser

  • iam:ListGroupPolicies

  • iam:ListUserPolicies

  • iam:ListUsers

若要允許主控台使用者模擬使用者群組的政策

在您的政策中包含以下動作:

  • iam:GetGroup

  • iam:GetGroupPolicy

  • iam:GetPolicy

  • iam:GetPolicyVersion

  • iam:ListAttachedGroupPolicies

  • iam:ListGroupPolicies

  • iam:ListGroups

若要允許主控台使用者模擬角色的政策

在您的政策中包含以下動作:

  • iam:GetPolicy

  • iam:GetPolicyVersion

  • iam:GetRole

  • iam:GetRolePolicy

  • iam:ListAttachedRolePolicies

  • iam:ListRolePolicies

  • iam:ListRoles

若要測試以資源為基礎的政策,使用者必須有擷取資源政策的許可。

若要允許主控台使用者在 Amazon S3 儲存貯體中測試以資源為基礎的政策

在您的政策中包含以下動作:

  • s3:GetBucketPolicy

例如,以下政策使用這些動作,以允許主控台使用者在特定 Amazon S3 儲存貯體中模擬以資源為基礎的政策。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketPolicy", "Resource":"arn:aws:s3:::bucket-name/*" } ] }

使用政策模擬器 API 所需的許可

政策模擬器 API 操作 GetContextKeyForCustomPolicySimulateCustomPolicy 可允許您測試尚未連接至使用者、使用者群組或角色的政策。若要測試這類政策,您可以將政策當作字串傳遞至 API。這些政策僅用於模擬,不會揭露敏感資訊。您也可以使用 API,來測試連接到 AWS 帳戶中 IAM 使用者、使用者群組或角色的政策。若要這麼做,您必須為使用者提供呼叫 GetContextKeyForPrincipalPolicySimulatePrincipalPolicy 的許可。

若要檢視允許針對目前 AWS 帳戶中的連接和未連接政策使用政策模擬器 API 的範例政策,請參閱IAM:存取政策模擬器 API

若要建立一個政策,只允許一個類型的政策使用政策模擬器 API,請使用下列程序。

若要允許 API 使用者去模擬直接以字串傳遞給 API 的政策

在您的政策中包含以下動作:

  • iam:GetContextKeysForCustomPolicy

  • iam:SimulateCustomPolicy

若要允許 API 使用者模擬連接到 IAM 使用者、使用者群組、角色、或資源的政策

在您的政策中包含以下動作:

  • iam:GetContextKeysForPrincipalPolicy

  • iam:SimulatePrincipalPolicy

例如,要授予名為 Bob 的使用者模擬指派給名為 Alice 的使用者的政策的許可,請授予 Bob 存取以下資源的許可:arn:aws:iam::777788889999:user/alice

若要查看僅允許具有特定路徑的使用者使用政策模擬器 API 的範例政策,請參閱 IAM:根據使用者路徑存取政策模擬器 API

使用 IAM 政策模擬器 (主控台)

根據預設,使用者可以透過在政策模擬器主控台中輸入或複製這些政策來測試尚未連接到使用者、使用者群組或角色的政策。這些政策僅用於模擬,不會揭露敏感資訊。

測試未連接至使用者、使用者群組或角色的政策 (主控台)

  1. 請前往 https://policysim.aws.amazon.com/ 開啟 IAM 政策模擬器主控台。

  2. 在頁面頂端的 Mode: (模式:) 選單中,選擇 New Policy (新政策)。

  3. Policy Sandbox (政策沙盒) 中,選擇 Create New Policy (建立新的政策)

  4. 將政策輸入或複製到模擬器,接著使用模擬器,如以下步驟所述。

在您擁有使用 IAM 政策模擬主控台的許可之後,您可以使用模擬器來測試 IAM 使用者、使用者群組、角色或資源政策。

測試連接至使用者、使用者群組或角色的政策 (主控台)

  1. 請前往 https://policysim.aws.amazon.com/ 開啟 IAM 政策模擬器主控台。

    注意

    若要以 IAM 使用者的身分登入政策模擬器,請使用唯一的登入 URL 來登入 AWS Management Console。然後前往 https://policysim.aws.amazon.com/。如需有關以 IAM 使用者身分登入的詳細資訊,請參閱 IAM 使用者如何登入 AWS

    模擬器以 Existing Policies (現有政策) 模式開啟,並在 Users, Groups, and Roles (使用者、群組和角色) 下列出您帳戶中的 IAM 使用者。

  2. 選擇適合您的任務的選項:

    若要測試這個: 執行此作業:
    連接至使用者的政策 Users, Groups, and Roles (使用者、群組和角色) 清單中選擇 Users (使用者)。然後選擇使用者。
    連接至使用者群組的政策 Users, Groups, and Roles (使用者、群組和角色) 清單中選擇 Groups (群組)。然後選擇使用者群組。
    連接至角色的政策 Users, Groups, and Roles (使用者、群組和角色) 清單中選擇 Roles (角色)。然後選擇角色。
    連接至資源的政策 請參閱 步驟 9
    使用者、使用者群組或角色的自訂政策 選擇 Create new policy (建立新政策)。在新的 Policies (政策) 窗格中,輸入或貼上政策,然後選擇 Apply (套用)
    Tip

    若要測試連接到使用者群組的政策,可以直接從 IAM 主控台啟動 IAM 政策模擬器:在導覽窗格中選擇 User groups (使用者群組)。選擇您想要測試政策的群組的名稱,然後選擇 Permissions (許可) 標籤。選擇 Simulate (模擬)。

    若要測試連接到使用者的客戶受管政策:在導覽窗格中,選擇 Users (使用者)。選擇要測試政策的使用者的名稱。然後選擇 Permissions (許可) 標籤並展開您想要測試的政策。在最右側,選擇 Simulate policy (模擬政策)IAM Policy Simulator (IAM 政策模擬器) 將在新視窗中開啟,並在 Policies (政策) 窗格中顯示選取的政策。

  3. (選用) 如果您的帳戶是 AWS Organizations 中組織的成員,則請勾選 AWS Organizations SCPs 旁的核取方塊,以在您的模擬評估中包含 SCP。SCP 是一種 JSON 政策,負責指定組織或組織單位 (OU) 的最大許可。SCP 會限制成員帳戶中實體的許可。如果 SCP 封鎖服務或動作,則該帳戶中的任何實體都不能存取該服務或執行該動作。即使管理員透過 IAM 或資源政策明確授予對該服務或動作的許可,也是如此。

    如果您的帳戶不是組織的成員,則不會出現核取方塊。

  4. (選用) 您可以測試設定為許可界限的政策,適用於 IAM 實體 (使用者或角色),但不適用於使用者群組。如果目前針對實體設定了許可界限政策,則它會出現在 Policies (政策) 窗格中。您只能針對一個實體設定一個許可界限。若要測試不同的許可界限,您可以建立自訂許可界限。若要執行此操作,請選擇 Create New Policy (建立新政策)。新的 Policies (政策) 窗格隨即開啟。在選單中,選擇 Custom IAM Permissions Boundary Policy (自訂 IAM 許可界限政策)。輸入新政策的名稱,然後在下方空格中輸入或複製政策。選擇 Apply (套用) 以儲存政策。接下來,選擇 Back (上一步) 返回原始 Policies (政策) 窗格。然後,選取您要用於模擬之許可邊界旁邊的核取方塊。

  5. (選用) 您只能測試連接至使用者、使用者群組或角色的政策子集。若要這樣做,請在 Policies (政策) 窗格中清除您要排除之每個政策旁邊的核取方塊。

  6. Policy Simulator (政策模擬器) 中,選擇 Select service (選取服務),然後選擇該服務來測試。然後選擇 Select actions (選取動作) 並選取一或多個動作來測試。雖然選單一次只顯示一項服務的可用選項,但您選取的所有服務和動作都會出現在 Action Settings and Results (動作設定和結果) 中。

  7. (選用) 如果您在 步驟 2步驟 5 中選擇的任何政策包含帶有 AWS全域條件索引鍵的條件,則為這些索引鍵提供值。您可以透過展開 Global Settings (全域設定) 部分並為其中顯示的索引鍵名稱輸入值來完成此動作。

    警告

    如果將條件索引鍵的值保留為空,則在模擬期間將忽略該索引鍵。在某些情況下,這會產生錯誤,並且無法執行模擬。在其他情況下,模擬會執行,但結果可能不可靠。在這些情況下,模擬不符合包含條件索引鍵或變數的真實世界條件。

  8. (選用) 在您實際執行模擬之前,每個選取的動作都會顯示在 Action Settings and Results (動作設定和結果) 清單中,Not simulated (不模擬) 顯示在 Permission (許可) 欄位中。在執行模擬之前,您可以使用資源設定每個動作。若要為特定案例設定個別動作,請選擇箭頭以展開動作的資料列。如果動作支援資源級許可,則可以輸入要測試其存取權的特定資源 Amazon 資源名稱 (ARN)。在預設情況下,每個資源設為萬用字元 (*)。您也可以為任何條件內容索引鍵指定值。如前所述,具有空白值的索引鍵被忽略,這可能會導致模擬失敗或不可靠的結果。

    1. 選擇動作名稱旁的箭頭可展開每一列,並設定在您的案例中準確模擬動作所需的任何其他資訊。如果動作需要任何資源級許可,則可以輸入要模擬存取的特定資源 Amazon 資源名稱 (ARN)。在預設情況下,每個資源設為萬用字元 (*)。

    2. 如果動作支援資源級許可,但不需要它們,則可以選擇 Add Resource (新增資源) 來選取要新增至模擬中的資源類型。

    3. 如果任何選取的政策包含參考此動作服務的內容索引鍵的 Condition 元素,則該索引鍵名稱將顯示在該動作下。您可以指定適用於模擬指定資源動作時所需使用的值。

    需要不同資源類型群組的動作

    在不同的情況下,某些動作需要不同的資源類型。每一組資源類型都與一個案例相關聯。如果其中一個適用於您的模擬,請選擇它,並且模擬器需要適用於該案例的資源類型。下表顯示每個支援案例選項,以及執行模擬時必須定義的資源。

    下列每個 Amazon EC2 案例都需要您指定 instanceimagesecurity-group 資源。如果您的案例包含 EBS 磁碟區,則必須將該 volume 指定為資源。如果 Amazon EC2 案例包含 Virtual Private Cloud (VPC),則必須提供 network-interface 資源。如果包含 IP 子網路,則必須指定 subnet 資源。如需有關 Amazon EC2 案例選項的詳細資訊,請參閱《Amazon C2 使用者指南》中的支援的平台

    • EC2-Classic-InstanceStore

      執行個體、影像、安全群組

    • EC2-Classic-EBS

      執行個體、影像、安全群組、磁碟區

    • EC2-VPC-InstanceStore

      執行個體、影像、安全群組、網路介面

    • EC2-VPC-InstanceStore-Subnet

      執行個體、影像、安全群組、網路介面、子網路

    • EC2-VPC-EBS

      執行個體、影像、安全群組、網路介面、磁碟區

    • EC2-VPC-EBS-Subnet

      執行個體、影像、安全群組、網路介面、子網路、磁碟區

  9. (選用) 如果要在模擬中包含以資源為基礎的政策,則必須先在 步驟 6 中選擇要在該資源上模擬的動作。展開所選動作的資料列,然後使用您想要模擬的政策來輸入資源 ARN。然後選擇 ARN 文字方塊旁的 Include Resource Policy (包括資源政策)。IAM 政策模擬器目前僅支援下列服務的以資源為基礎的政策:Amazon S3 (僅限於以資源為基礎的政策;目前不支援 ACL)、Amazon SQS、Amazon SNS 和未鎖定的 S3 Glacier 文件庫 (目前不支援鎖定的文件庫)。

  10. 選擇右上角的 Run Simulation (執行模擬)

    Action Settings and Results (動作設定和結果) 每行中的 Permission (許可) 欄顯示在指定資源上模擬該動作的結果。

  11. 選擇右上角的 Run Simulation (執行模擬)

    Action Settings and Results (動作設定和結果) 每行中的 Permission (許可) 欄顯示在指定資源上模擬該動作的結果。

  12. 若要查看政策中哪些陳述式明確允許或拒絕動作,請選擇 Permissions (許可) 欄中的 N matching statement(s) (相符陳述式) 連結以展開該資料列。然後選擇 Show statement (顯示陳述式) 連結。Policies (政策) 窗格顯示了相關的政策,並凸顯影響模擬結果的陳述式。

    注意

    如果動作是隱含的拒絕 (動作因為沒有明確允許而被拒絕),則不會顯示 List (清單) 和 Show statement (顯示陳述式) 選項。

IAM 政策模擬器主控台訊息故障診斷

下表列出使用 IAM 政策模擬器時可能遇到的資訊和警告訊息。該表也提供了解決問題的步驟。

Message 解決的步驟
已編輯此政策。變更將不會儲存到您的帳戶。

不需要採取行動。

此訊息是資訊性的。如果您在 IAM 政策模擬器中編輯現有政策,則變更不會影響您的 AWS 帳戶。模擬器允許您變更僅用於測試的政策。

無法取得資源政策。原因:詳細的錯誤訊息 模擬器無法存取所請求以資源為基礎的政策。確保指定的資源 ARN 是正確的,並且執行模擬的使用者擁有讀取資源政策的許可。
一個或多個政策需要模擬設定中的值。如果沒有這些值,模擬可能會失敗。

如果您正在測試的政策包含條件索引鍵或變數,但您尚未在 Simulation Settings (模擬設定) 中為這些索引鍵或變數提供任何值,則會顯示此訊息。

若要關閉此訊息,請選擇 Simulation Settings (模擬設定),然後為每個條件索引鍵或變數輸入一個值。

您已變更政策。這些結果不再有效。

如果在 Results (結果) 窗格中顯示結果時變更了所選政策,則會顯示此訊息。在 Results (結果) 窗格中顯示的結果不會動態更新。

若要關閉此訊息,請再次選擇 Run Simulation (執行模擬) 以根據在 Policies (政策) 窗格中所做的變更顯示新的模擬結果。

您為此模擬輸入的資源不符合這項服務。

如果您在 Simulation Settings (模擬設定) 窗格中輸入的 Amazon 資源名稱 (ARN) 不符合您為目前模擬選擇的服務,則會顯示此訊息。例如,如果您為 Amazon DynamoDB 資源指定了 ARN,但您選擇了 Amazon Redshift 作為要模擬的服務,則會顯示此訊息。

若要關閉此訊息,請執行下列項目之一:

  • Simulation Settings (模擬設定) 窗格的方塊中移除 ARN。

  • 選擇符合您在 Simulation Settings (模擬設定) 中所指定的 ARN 的服務。

除了以資源為基礎的政策之外,這個動作屬於支援特殊存取控制機制的服務,例如 Amazon S3 ACL 或 S3 Glacier 文件庫鎖定政策。政策模擬器不支援這些機制,因此結果可能與您的生產環境不同。

不需要採取行動。

此訊息是資訊性的。在目前版本中,模擬器評估連接到使用者和使用者群組的政策,並且可以評估 Amazon S3、Amazon SQS、Amazon SNS 和 S3 Glacier 的以資源為基礎的政策。政策模擬器不支援其他 AWS 服務所支援的所有存取控制機制。

目前不支援 DynamoDB FGAC。

不需要採取行動。

此資訊訊息是指精細存取控制。精細存取控制可讓您使用 IAM 政策條件,決定誰可以存取 DynamoDB 資料表和索引中的個別資料項目和屬性。它也指可對這些資料表和索引執行的動作。目前版本的 IAM 政策模擬器不支援這種類型的政策條件。如需有關 DynamoDB 精細存取控制的詳細資訊,請參閱適用於 DynamoDB 的精細存取控制

您的政策不遵守政策的語法。您可以使用政策驗證程式來檢閱對政策的建議更新。

如果您的政策不遵守 IAM 政策語法,則此訊息顯示在政策清單的上方。為了模擬這些政策,請檢閱位於 驗證 IAM 政策 的政策驗證選項來識別並修正這些政策。

此政策必須更新,以遵守最新的政策語法規則。

如果您的政策不遵守 IAM 政策語法,則會顯示此訊息。為了模擬這些政策,請檢閱位於 驗證 IAM 政策 的政策驗證選項來識別並修正這些政策。

使用 IAM 政策模擬器 (AWS CLI 和 AWS API)

政策模擬器命令通常需要呼叫 API 操作來執行兩個項目:

  1. 評估政策並傳回他們所參考的內容索引鍵清單。您需要知道會參考哪些內容索引鍵,以便在下一步驟中將其提供值。

  2. 模擬政策,提供在模擬過程中使用的動作、資源和內容索引鍵的清單。

基於安全考量,API 操作已分成兩組:

在這兩種情況下,API 操作都會在行動和資源清單上模擬一個或多個政策的效能。每個動作會與每個資源搭配使用,並且模擬會判斷政策是否允許或拒絕該資源的動作。您還可以為政策參考的任何內容鍵索引鍵提供值。您可以透過第一個呼叫 GetContextKeysForCustomPolicyGetContextKeysForPrincipalPolicy 取得政策參考的內容索引鍵清單。如果未提供值給內容索引鍵,則該模擬仍會執行。但是,結果可能不可靠的,因為模擬器不能在評估中包含該內容索引鍵。

取得內容索引鍵清單 (AWS CLI、AWS API)

使用以下內容評估政策清單,並傳回政策中所使用的內容索引鍵清單。

模擬 IAM 政策 (AWS CLI、AWS API)

使用以下方法模擬 IAM 政策以判斷使用者的有效許可。