

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 如何模擬政策
<a name="policies_policy-simulator-how-to"></a>

您可以在 IAM 主控台或使用 AWS CLI 和 AWS API 執行模擬。如需模擬器評估內容、兩種模式及其如何達到結果的概觀，請參閱 [使用 IAM 政策模擬器測試 IAM 政策](access_policies_testing-policies.md)。如需所需的許可，請參閱 [使用政策模擬器的許可](permissions-required_policy-simulator.md)。

**Topics**
+ [模擬政策 （主控台）](#policies_policy-simulator-how-to-console)
+ [模擬政策 (AWS CLI 和 AWS API)](#policies_policy-simulator-how-to-cli-api)

## 模擬政策 （主控台）
<a name="policies_policy-simulator-how-to-console"></a>

您可以從 [IAM 主控台](https://console.aws.amazon.com/iam/)中的政策模擬器執行模擬。在導覽窗格中，選擇**政策模擬器**。

**注意**  
位於 https：//[https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/) 的獨立政策模擬器主控台不再維護。在 IAM 主控台中使用政策模擬器。

### 主體模式
<a name="policies_policy-simulator-how-to-console-principal"></a>

#### 選取身分
<a name="policies_policy-simulator-how-to-console-principal-select"></a>

首先，請先選取身分。您可以在該帳戶中選取 IAM 使用者、角色或群組。側邊面板會在您選取後填入連接到這些身分的政策。

#### 包含或排除政策
<a name="policies_policy-simulator-how-to-console-principal-include-exclude"></a>

側邊面板列出模擬範圍內的政策，包括內嵌 AWS 、受管和客戶受管政策，以及任何許可界限。您可以排除政策，以查看結果在沒有它的情況下如何變更，然後再次包含它。排除授予存取的政策會將結果變更為隱含拒絕。

#### 新增動作和資源
<a name="policies_policy-simulator-how-to-console-principal-actions-resources"></a>

![主體模式下的 IAM 政策模擬器主控台。](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policysim-console-screenshot-1.png)


在左側面板中選擇身分和政策後，新增您要測試的動作。對於支援資源選擇的動作，您可以針對所有資源進行測試，或輸入一或多個特定資源 ARNs。當多個動作使用相同的資源類型時，您可以一次將一個資源套用至所有資源，或將其範圍限定為單一動作。

![IAM 政策模擬器中只需要單一資源類型的動作。](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policysim-console-screenshot-2.png)


有些動作需要一組相關的資源類型，模擬器才能對其進行評估。例如，當您模擬 時`ec2:RunInstances`，主控台會提示您根據情況一起指定映像、執行個體和安全群組，以及子網路或磁碟區。

![IAM 政策模擬器中需要多種資源類型的動作。](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policysim-console-screenshot-3.png)


#### 提供條件索引鍵值
<a name="policies_policy-simulator-how-to-console-principal-condition-keys"></a>

如果您測試的政策包含條件索引鍵，模擬器會列出相關索引鍵，並可讓您在執行模擬之前設定值。顯示的金鑰會反映目前選取的政策，因此選取或清除政策會新增或移除其金鑰。如果值不符合條件，則會拒絕動作。

模擬器會在兩個位置提供條件索引鍵的值。**全域請求條件**適用於整個模擬請求。這些是開頭為 的金鑰`aws:`，例如 `aws:MultiFactorAuthPresent`或 `aws:PrincipalServiceNamesList`，您可以在全域條件區域中設定其值一次。選取或清除政策會新增或移除其全域金鑰，而且在您調整哪些政策在範圍內時，會保留您輸入的值。**服務特定條件**適用於單一動作。每個動作列都會顯示其參考的條件數目，而您會開啟該列來設定該動作的服務特定金鑰，例如 `cloudwatch:namespace` 的 `cloudwatch:PutMetricData`或 `ram:PermissionResourceType`的 `ram:ListPermissionAssociations`。動作列可以同時包含全域金鑰和服務特定的金鑰，如果任何值不符合條件，則會拒絕該動作。

IAM 政策模擬器會為您填入一些主體和組織內容金鑰，並提供其餘的值。如需自動填入的金鑰清單，以及如何評估條件金鑰的詳細資訊，請參閱 [IAM 政策模擬器中條件索引鍵評估的運作方式](access_policies_testing-policies.md#policies_policy-simulator-condition-keys)。

若要了解如何使用條件金鑰，請參閱 [AWS 全域條件內容索引鍵](reference_policies_condition-keys.md)。

#### 測試許可界限
<a name="policies_policy-simulator-how-to-console-principal-boundary"></a>

當身分具有許可界限時，它會出現在側邊面板中，並預設為包含。如果您想要了解界限是否為拒絕動作的原因，您也可以排除界限並再次執行模擬。

例如，假設您`iam:DeleteRole`針對其界限不允許的身分進行模擬。結果是拒絕歸因於許可界限。如果您接著新增允許 動作並排除邊界的政策，則結果會變更為允許。這可確認邊界是唯一封鎖動作的控制項。

![歸因於 IAM 政策模擬器中許可界限的模擬結果。](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policysim-console-screenshot-4.png)


#### 包含服務控制政策
<a name="policies_policy-simulator-how-to-console-principal-scp"></a>

如果您的帳戶是組織的成員，您可以在側邊面板的模擬中包含服務控制政策 (SCPs)。模擬器會在決定結果時，評估 SCPs 中的自動填入條件索引鍵和資源範圍。當 SCP 明確拒絕動作時，結果是明確拒絕歸因於 AWS Organizations，而另一個政策中的允許無法覆寫它。關閉控制項並再次執行模擬，以查看沒有組織控制項的結果。如需自動填入條件索引鍵的清單，請參閱 [IAM 政策模擬器中條件索引鍵評估的運作方式](access_policies_testing-policies.md#policies_policy-simulator-condition-keys)。

**注意**  
基於安全考量，模擬器不會顯示 SCP 評估的詳細資訊。僅由 SCPs 參考的條件索引鍵不會列出供您設定值，而且針對結果傳回的相符陳述式不包含來自 SCPs陳述式。金鑰和相符陳述式來自連接到身分的身分型政策，以及您提供的任何政策。

#### 測試以資源為基礎的政策
<a name="policies_policy-simulator-how-to-console-principal-resource-policy"></a>

若要在主控台模擬中包含資源型政策，請輸入特定資源 ARN，然後選擇 選項以包含資源的政策。資源型政策會顯示在側邊面板中，並在結果中進行評估。在 主控台中，這適用於 Amazon S3 儲存貯體、Amazon SQS 佇列、Amazon SNS 主題和 Amazon Glacier 保存庫。

**注意**  
IAM 角色不支援資源型政策的模擬。

#### 讀取結果
<a name="policies_policy-simulator-how-to-console-principal-results"></a>

結果表中的每一列都會顯示是否允許、隱含拒絕或明確拒絕動作，以及結果的簡短說明。使用 說明來識別哪些政策或控制項決定結果，例如明確允許、缺少相符陳述式、許可界限或組織控制項。

### 自訂模式
<a name="policies_policy-simulator-how-to-console-custom"></a>

您可以使用 IAM 政策編輯器，在自訂模式下寫入或貼上身分型政策和許可界限。這些政策不會連接到身分，而且可以在套用之前進行評估。您可以包含多個以身分為基礎的政策，但只能包含一個用於模擬的許可界限。

**注意**  
在自訂模式中，主控台不支援傳入自訂 SCPs 或模擬以資源為基礎的政策。若要模擬自訂 SCPs或資源型政策，請使用 AWS CLI 或 AWS API。

![自訂模式中的 IAM 政策模擬器主控台。](https://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policysim-console-screenshot-5.png)


## 模擬政策 (AWS CLI 和 AWS API)
<a name="policies_policy-simulator-how-to-cli-api"></a>

使用 AWS CLI 或 AWS API 模擬政策通常需要兩個步驟：

1. 評估政策並傳回其參考的內容索引鍵清單，以便您知道要提供的內容索引鍵值。此為選擇性步驟。

1. 模擬政策，提供要在模擬期間使用的動作、資源和內容索引鍵值。

每個動作都會與每個資源配對，而模擬會決定政策是否允許或拒絕該資源的動作。您可以為政策參考的任何內容索引鍵提供值。如果您未提供內容索引鍵的值，模擬仍會執行並傳回隱含拒絕，而缺少的索引鍵會在 中傳回`missingContextValues`，讓您知道要新增哪些值。如果 SCP 僅參考缺少的內容金鑰，基於安全考量，不會傳回該金鑰，但您仍然會收到決策。

API 動作分為兩個群組：
+ 僅模擬以字串形式直接傳遞至 API 的政策的動作：[GetContextKeysForCustomPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetContextKeysForCustomPolicy.html) 和 [SimulateCustomPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulateCustomPolicy.html)。
+ 模擬連接至指定 IAM 使用者、使用者群組、角色或資源的政策的動作：[GetContextKeysForPrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetContextKeysForPrincipalPolicy.html) 和 [SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html)。由於這些可以顯示指派給其他 IAM 實體的許可，請考慮限制對這些實體的存取。

這些動作也支援下列項目：
+ `OrderedOrganizationPolicyInputList` 在 [SimulateCustomPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulateCustomPolicy.html) 上，可讓您模擬組織 SCP 階層的效果，而無需使用即時主體。
+ `PolicyExclusionList` 在 [SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html) 上，可讓您測試「如果我移除此政策該怎麼辦？」 案例，而不變更哪些政策連接到委託人。
+ 回應會傳回`EvaluationResult`每個動作的單一 ，並在頂層彙總決策和 中的每個資源詳細資訊`ResourceSpecificResults`。

### AWS CLI 和 AWS API 參考
<a name="policies_policy-simulator-how-to-cli-api-reference"></a>

如需模擬政策的範例 AWS CLI 命令，請參閱下列內容：
+ AWS CLI：[get-context-keys-for-custom-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-context-keys-for-custom-policy.html)、[get-context-keys-for-principal-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-context-keys-for-principal-policy.html)、[simulate-custom-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/simulate-custom-policy.html)、[simulate-principal-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/simulate-principal-policy.html)
+ AWS API：[GetContextKeysForCustomPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetContextKeysForCustomPolicy.html)、[GetContextKeysForPrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetContextKeysForPrincipalPolicy.html)、[SimulateCustomPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulateCustomPolicy.html)、[SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html)