透過控制對下列兩個 API Gateway 元件程序的存取,您可以使用 IAM 許可控制對 Amazon API Gateway API 的存取:
-
若要在 API Gateway 中建立、部署及管理 API,您必須授予 API 開發人員許可來執行 API Gateway 之 API 管理元件支援的必要動作。
-
若要呼叫已部署的 API 或重新整理 API 快取,您必須授予 API 發起人許可來執行 API Gateway 的 API 執行元件支援的必要 IAM 動作。
這兩個處理的存取控制需要不同的許可模型,以下將進行說明。
建立與管理 API 的 API Gateway 許可模型
若要讓 API 開發人員在 API Gateway 中建立及管理 API,您必須建立 IAM 許可政策,允許指定的 API 開發人員建立、更新、部署、檢視或刪除必要的 API 實體。您會將許可政策附加到使用者、角色或群組。
若要提供存取權,請新增權限至您的使用者、群組或角色:
-
AWS IAM Identity Center 中的使用者和群組:
建立權限合集。請按照 AWS IAM Identity Center使用者指南 中的 建立權限合集 說明進行操作。
-
透過身分提供者在 IAM 中管理的使用者:
建立聯合身分的角色。遵循《IAM 使用者指南》的為第三方身分提供者 (聯合) 建立角色中的指示。
-
IAM 使用者:
-
建立您的使用者可擔任的角色。請按照 IAM 使用者指南》的為 IAM 使用者建立角色中的指示。
-
(不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。請遵循 IAM 使用者指南的新增許可到使用者 (主控台)中的指示。
-
如需如何使用此許可模型的詳細資訊,請參閱「API Gateway 身分類型政策」。
用於呼叫 API 的 API Gateway 許可模型
若要讓 API 發起人呼叫 API 或重新整理其快取,您必須建立 IAM 政策,允許已啟用使用者身分驗證的指定 API 發起人呼叫 API 方法。API 開發人員可將方法的 authorizationType
屬性設定為 AWS_IAM
,以要求發起人提交使用者的憑證以進行身份驗證。然後您可以將政策連接至使用者、角色或群組。
在此 IAM 許可政策陳述式中,IAM Resource
元素包含指定 HTTP 動詞與 API Gateway 資源路徑所識別的已部署 API 方法清單。IAM Action
元素包含必要的 API Gateway API 執行動作。這些動作包含 execute-api:Invoke
或 execute-api:InvalidateCache
,其中 execute-api
指定 API Gateway 的基礎 API 執行元件。
如需如何使用此許可模型的詳細資訊,請參閱「控制對 API 的呼叫存取權」。
當 API 與後端 AWS 服務 (例如 AWS Lambda) 整合時,API Gateway 也必須具備許可,才能代表 API 呼叫者存取整合的 AWS 資源 (例如叫用 Lambda 函數)。若要授予這些許可,請建立適用於 API Gateway 的 AWS 服務類型的 IAM 角色。當您在 IAM 管理主控台建立此角色時,所產生的角色會包含下列 IAM 信任政策,其中宣告 API Gateway 是允許擔任該角色的受信任實體:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
如果您藉由呼叫 create-role 的 CLI 命令或是藉由對應的軟體開發套件方法來建立 IAM 角色,則您必須將 assume-role-policy-document
的輸入參數提供給上述政策。請勿嘗試在 IAM 管理主控台直接建立這種政策,或是呼叫 AWS CLI create-policy 命令或對應的軟體開發套件方法。
若要讓 API Gateway 呼叫整合的 AWS 服務,您也必須連接到適用此角色的 IAM 許可政策以呼叫整合的 AWS 服務。例如,若要呼叫 Lambda 函數,您必須在 IAM 角色中納入下列 IAM 許可政策:
{ "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 服務。