

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

# 使用 IAM 許可權控制 REST API 的存取
<a name="permissions"></a>

 透過控制對下列兩個 API Gateway 元件程序的存取，您可以使用 [IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html)控制對 Amazon API Gateway API 的存取：
+  若要在 API Gateway 中建立、部署及管理 API，您必須授予 API 開發人員許可來執行 API Gateway 之 API 管理元件支援的必要動作。
+  若要呼叫已部署的 API 或重新整理 API 快取，您必須授予 API 發起人許可來執行 API Gateway 的 API 執行元件支援的必要 IAM 動作。

 這兩個處理的存取控制需要不同的許可模型，以下將進行說明。

## 建立與管理 API 的 API Gateway 許可模型
<a name="api-gateway-control-access-iam-permissions-model-for-managing-api"></a>

 若要讓 API 開發人員在 API Gateway 中建立及管理 API，您必須[建立 IAM 許可政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)，允許指定的 API 開發人員建立、更新、部署、檢視或刪除必要的 [API 實體](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html)。您會將許可政策附加到使用者、角色或群組。

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

如需如何使用此許可模型的詳細資訊，請參閱「[API Gateway 身分類型政策](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies)」。

## 用於呼叫 API 的 API Gateway 許可模型
<a name="api-gateway-control-access-iam-permissions-model-for-calling-api"></a>

若要讓 API 發起人呼叫 API 或重新整理其快取，您必須建立 IAM 政策，允許已啟用使用者身分驗證的指定 API 發起人呼叫 API 方法。API 開發人員可將方法的 `authorizationType` 屬性設定為 `AWS_IAM`，以要求發起人提交使用者的憑證以進行身份驗證。API Gateway 支援第 4a 版簽署程序 (SigV4a) 和第 4 版簽署程序 (SigV4) 來驗證使用者的憑證。如需詳細資訊，請參閱 [AWS 第 4 版簽署程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。然後您可以將政策連接至使用者、角色或群組。

在此 IAM 許可政策陳述式中，IAM `Resource` 元素包含指定 HTTP 動詞與 API Gateway [資源路徑](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html)所識別的已部署 API 方法清單。IAM `Action` 元素包含必要的 API Gateway API 執行動作。這些動作包含 `execute-api:Invoke` 或 `execute-api:InvalidateCache`，其中 `execute-api` 指定 API Gateway 的基礎 API 執行元件。

如需如何使用此許可模型的詳細資訊，請參閱「[控制對 API 的呼叫存取權](api-gateway-control-access-using-iam-policies-to-invoke-api.md)」。

 當 API 在後端與 AWS 服務 （例如， AWS Lambda) 整合時，API Gateway 也必須具有代表 API 發起人存取整合 AWS 資源 （例如，叫用 Lambda 函數） 的許可。若要授予這些許可，請建立**適用於 API Gateway 的AWS 服務**類型的 IAM 角色。當您在 IAM 管理主控台建立此角色時，所產生的角色會包含下列 IAM 信任政策，其中宣告 API Gateway 是允許擔任該角色的受信任實體：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

如果您藉由呼叫 [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 的 CLI 命令或是藉由對應的軟體開發套件方法來建立 IAM 角色，則您必須將 `assume-role-policy-document` 的輸入參數提供給上述政策。請勿嘗試直接在 IAM 管理主控台或 calling AWS CLI [create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) 命令或對應的 SDK 方法中建立此類政策。

若要讓 API Gateway 呼叫整合 AWS 服務，您還必須將 連接到此角色，以呼叫整合 AWS 服務的合適 IAM 許可政策。例如，若要呼叫 Lambda 函數，您必須在 IAM 角色中納入下列 IAM 許可政策：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "*"
        }
    ]
}
```

------

請注意，Lambda 支援合併信任與許可政策的資源類型存取政策。使用 API Gateway 主控台整合 API 與 Lambda 函數時，不會要求您明確設定此 IAM 角色，因為主控台會在您的同意下，為您設定 Lambda 函數的資源型許可。

**注意**  
 若要對 AWS 服務制定存取控制，您可以使用以發起人為基礎的許可模型，其中許可政策直接連接到發起人的使用者或群組，或以角色為基礎的許可模型，其中許可政策連接到 API Gateway 可以擔任的 IAM 角色。這兩個模型的許可政策可能有所不同。例如，發起人類型政策會封鎖存取，而角色類型政策則會允許存取。您可以利用此功能，要求使用者只能透過 API Gateway API 存取 AWS 服務。