

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

# 檢查 IAM 政策
<a name="determining-access-iam-policies"></a>

除了金鑰政策和授予之外，您也可以使用 [IAM 政策](iam-policies.md)，以允許存取 KMS 金鑰。如需金鑰政策與 IAM 政策如何同時運作的相關資訊，請參閱 [故障診斷 AWS KMS 許可](policy-evaluation.md)。

若要判斷哪些主體目前可透過 IAM 政策存取 KMS 金鑰，您可以使用以瀏覽器為基礎的 [IAM 政策模擬器](https://policysim.aws.amazon.com/)工具，或者可以提出請求至 IAM API。

**Contents**
+ [使用 IAM 政策模擬器來檢查 IAM 政策](#determining-access-iam-policy-simulator)
+ [使用 IAM API 檢查 IAM 政策](#determining-access-iam-api)

## 使用 IAM 政策模擬器來檢查 IAM 政策
<a name="determining-access-iam-policy-simulator"></a>

IAM 政策模擬器可協助您了解哪些原則有權限透過 IAM 政策來存取 KMS 金鑰。

**若要使用 IAM 政策模擬器來以判斷是否可存取 KMS 金鑰**

1. 登入 ， AWS 管理主控台 然後在 開啟 IAM 政策模擬器[https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/)。

1. 在**使用者、群組和角色**窗格，選擇您想要模擬所屬政策的使用者、群組或角色。

1. (選用) 清除任何您想要從模擬中刪除的政策旁的核取方塊。若要模擬所有政策，請保持勾選所有政策。

1. 在 **Policy Simulator** (政策模擬器) 窗格中，執行下列動作：

   1. 在 **Select service (選取服務)** 中，選擇 **Key Management Service (金鑰管理服務)**。

   1. 若要模擬特定 AWS KMS 動作，請在**選取動作**中選擇要模擬的動作。若要模擬所有 AWS KMS 動作，請選擇**全選**。

1. (選用) 政策模擬器根據預設將模擬所有對 KMS 金鑰的存取。若要模擬存取特定 KMS 金鑰，請選擇 **Simulation Settings (模擬設定)**，接著輸入要模擬之 KMS 金鑰的 Amazon Resource Name (ARN)。

1. 選擇 **Run Simulation (執行模擬)**。

您可在 **Results** (結果) 部分查看模擬結果。對於 AWS 帳戶中的每個 IAM 使用者、群組和角色，請重複步驟 2 到步驟 6。

## 使用 IAM API 檢查 IAM 政策
<a name="determining-access-iam-api"></a>

您可以使用 IAM API 來以程式設計方式檢查 IAM 政策。以下步驟提供執行此操作方法的一般概述：

1. 對於金鑰政策中 AWS 帳戶 列為主體的每個 （即此格式指定的每個[AWS 帳戶主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts)：`"Principal": {"AWS": "arn:aws:iam::111122223333:root"}`)，請使用 IAM API 中的 [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) 和 [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html) 操作來取得帳戶中的所有使用者和角色。

1. 對於清單中的每個使用者和角色，請使用 IAM API 中的 [SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html) 操作，以下列參數傳遞：
   + 針對 `PolicySourceArn`，請指定清單中使用者或角色的 Amazon Resource Name (ARN)。您只能為每個 `SimulatePrincipalPolicy` 請求指定一個 `PolicySourceArn`，因此您必須多次呼叫此操作，針對清單中的每個使用者與角色各呼叫一次。
   + 針對`ActionNames`清單，指定要模擬的每個 AWS KMS API 動作。若要模擬所有 AWS KMS API 動作，請使用 `kms:*`。若要測試個別 AWS KMS API 動作，請在每個 API 動作前面加上 "`kms:`"，例如 "`kms:ListKeys`"。如需 AWS KMS API 動作的完整清單，請參閱 *AWS Key Management Service API 參考*中的[動作](https://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html)。
   + (選用) 若要判斷使用者或角色是否可以存取特定 KMS 金鑰，請使用 `ResourceArns` 參數來指定 KMS 金鑰的 Amazon Resource Name (ARN) 清單。若要判斷使用者或角色是否可以存取任何 KMS 金鑰，請忽略 `ResourceArns` 參數。

IAM 將以下列評估決定來回應每個 `SimulatePrincipalPolicy` 請求：`allowed`、`explicitDeny` 或 `implicitDeny`。對於包含 評估決策的每個回應`allowed`，回應會包含允許的特定 AWS KMS API 操作的名稱。還會包含評估時所使用的 KMS 金鑰的 ARN (如果有)。