控制對RESTAPI具有IAM權限的訪問 - Amazon API Gateway

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

控制對RESTAPI具有IAM權限的訪問

您可以透過控制下列兩個API閘道API元件程序的存取IAM權來控制對 Amazon API 閘道的存取權限:

  • 若要建立、部署和管理 API in API Gateway,您必須授與API開發人員權限,才能執行 API Gateway API 管理元件所支援的必要動作。

  • 若要呼叫已部署API或重新整理API快取,您必須授與API呼叫者權限,才能執行 API Gateway 的API執行元件所支援的必要IAM動作。

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

API用於建立和管理的閘道權限模型 API

若要允許API開發人員建立和管理 API in API Gateway,您必須建立IAM權限原則,以允許指定的API開發人員建立、更新、部署、檢視或刪除必要的API實體。您會將許可政策附加到使用者、角色或群組。

若要提供存取權,請新增權限至您的使用者、群組或角色:

  • 使用者和群組位於 AWS IAM Identity Center:

    建立權限合集。請按照 AWS IAM Identity Center 使用者指南 中的 建立權限合集 說明進行操作。

  • IAM透過身分識別提供者管理的使用者:

    建立聯合身分的角色。請遵循《使用指南》中的〈為第三方身分識別提供IAM者 (同盟) 建立角色〉中的指示進行。

  • IAM使用者:

    • 建立您的使用者可擔任的角色。請按照《用戶南》中的「為IAM用戶創建角色」中的IAM說明進行操作。

    • (不建議) 將政策直接附加至使用者,或將使用者新增至使用者群組。請遵循《使用指南》中的「向使用者 (主控台) 新增權限」IAM 中的示進行。

如需如何使用此許可模型的詳細資訊,請參閱「API 閘道身分型政策」。

API呼叫的閘道權限模型 API

若要允許API呼叫者呼叫API或重新整理其快取,您必須建立IAM原則,以允許指定的API呼叫者叫用啟用使用者驗證的API方法。開API發人員將方法的authorizationType屬性設置AWS_IAM為要求調用者提交用戶的憑據進行身份驗證。然後您可以將政策連接至使用者、角色或群組。

在此IAM權限原則陳述式中,IAMResource元素包含由指定HTTP動詞和API閘道資源路徑識別的已部署API方法清單。IAMAction元素包含API執行動作的必要API閘道。這些動作包括execute-api:Invokeexecute-api:InvalidateCache,其中execute-api指定API閘道的基礎API執行元件。

如需如何使用此許可模型的詳細資訊,請參閱「控制調用的訪問 API」。

在後端與 AWS 服務 (例如 AWS Lambda) 整合時,APIGateway 也必須擁有代表API呼叫者存取整合 AWS 資源 (例如叫用 Lambda 函數) 的權限。API若要授與這些權限,請為API閘道類型建立AWS 服務IAM角色。當您在IAM管理主控台中建立此角色時,此產生的角色會包含下列IAM信任原則,宣告 API Gateway 為允許擔任該角色的受信任實體:

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

如果您透過呼叫的 create-IAM role 命令CLI或對應的SDK方法來建立角色,您必須提供上述信任原則作為的輸入參數。assume-role-policy-document請勿嘗試直接在IAM管理主控台中建立此類原則,或呼叫 AWS CLI create-policy 命令或對應的方法。SDK

若要讓 API Gateway 呼叫整合式 AWS 服務,您也必須附加至此角色適當的IAM權限原則,才能呼叫整合式 AWS 服務。例如,若要呼叫 Lambda 函數,您必須在IAM角色中包含下列IAM權限原則:

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

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

注意

若要對 AWS 服務實施存取控制,您可以使用以呼叫者為基礎的權限模型 (其中權限原則會直接附加至呼叫者的使用者或群組),或是以角色為基礎的權限模型 (其中,權限原則會附加至閘道可以承IAM擔的API角色)。這兩個模型的許可政策可能有所不同。例如,發起人類型政策會封鎖存取,而角色類型政策則會允許存取。您可以利用此優勢來要求使用者API只能透過API閘道存取 AWS 服務。