使用 AWS SAM 範本控制 API 存取 - AWS Serverless Application Model

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

使用 AWS SAM 範本控制 API 存取

控制 API Gateway API 的存取有助於確保您的無伺服器應用程式安全無虞,而且只能透過您啟用的授權存取。您可以在 AWS SAM 範本中啟用授權,以控制誰可以存取您的 API Gateway API。

AWS SAM 支援數種控制 API Gateway API 存取的機制。AWS::Serverless::HttpApiAWS::Serverless::Api資源類型之間的支援機制集不同。

下表摘要說明每個資源類型支援的機制。

控制存取的機制 AWS::Serverless::HttpApi AWS::Serverless::Api
Lambda 授權人
IAM 許可
Amazon Cognito 使用者集區 ✓ *
API 金鑰
資源政策
OAuth 2.0/JWT 授權者

* 您可以使用 Amazon Cognito 做為具有AWS::Serverless::HttpApi資源類型的 JSON 網頁權杖 (JWT) 發行者。

  • Lambda 授權者 — Lambda 授權者 (以前稱為自訂授權者) 是您提供的 Lambda 函數,可供您控制 API 的存取。呼叫 API 時,會使用要求內容或用戶端應用程式提供的授權權杖來叫用此 Lambda 函數。Lambda 函數會回應呼叫者是否獲授權執行要求的作業。

    AWS::Serverless::HttpApiAWS::Serverless::Api資源類型都支援 Lambda 授權者。

    如需使用 Lambda 授權者的詳細資訊AWS::Serverless::HttpApi,請參API Gateway 開發人員指南中的使用 HTTP API 的 AWS Lambda 授權人。如需使用 Lambda 授權者的詳細資訊AWS::Serverless::Api,請參閱 API Gateway 開發人員指南中的使用 API Gateway Lambda 授權器

    如需任一資源類型的 Lambda 授權者範例,請參閱Lambda 授權者範例

  • IAM 許可 — 您可以控制誰可以使用 AWS Identity and Access Management (IAM) 許可調用您的 API。呼叫您 API 的使用者必須使用 IAM 登入資料進行驗證。只有當 IAM 政策附加到代表 API 呼叫者的 IAM 使用者、包含該使用者的 IAM 群組或使用者假設的 IAM 角色時,呼叫您的 API 才會成功。

    只有資AWS::Serverless::Api源類型支援 IAM 許可。

    如需詳細資訊,請參閱《API Gateway 開發人員指南》中的使用 IAM 許可控制 API 的存取。如需範例,請參閱IAM 權限範例

  • Amazon Cognito 使用者集區 — Amazon Cognito 使用者集區是 Amazon Cognito 中的使用者目錄。API 的客戶端必須首先將用戶登錄到用戶池,並獲取用戶的身份或訪問令牌。然後,客戶端使用返回的令牌之一調用您的 API。只有在必要的權杖有效時,API 呼叫才會成功。

    AWS::Serverless::Api源類型支援 Amazon Cognito 使用者集區。資AWS::Serverless::HttpApi源類型支援使用 Amazon Cognito 做為 JWT 發行者。

    如需詳細資訊,請參閱《API Gateway 開發人員指南》中的使用 Amazon Cognito 使用者集區作為授權方來控制對 REST API 的存取。如需範例,請參閱Amazon Cognito 用戶池示例

  • API 金鑰 — API 金鑰是您分發給應用程式開發人員客戶的英數字串值,以授予 API 存取權。

    只有資AWS::Serverless::Api源類型支援 API 金鑰。

    如需 API 金鑰的詳細資訊,請參閱《API Gateway 開發人員指南》中的「建立和使用 API 金鑰」的使用計劃。如需 API 金鑰的範例,請參閱API 金鑰範例

  • 資源策略 — 資源策略是您可以附加到 API Gateway API 的 JSON 政策文件。使用資源政策來控制指定的主體 (通常是 IAM 使用者或角色) 是否可以叫用 API。

    只有資AWS::Serverless::Api源類型支援資源原則,做為控制 API Gateway API 存取的機制。

    如需有關資源政策的詳細資訊,請參閱《API Gateway 開發人員指南》中的使用 API Gateway 資源政策控制 API 的存取。如需資源策略的範例,請參閱資源政策範例

  • OAuth 2.0/JWT 授權者 — 您可以使用 JWT 作為 OpenID Connect(OIDC)和 O Auth 2.0 框架的一部分來控制對 API 的訪問。API Gateway 會驗證用戶端透過 API 要求提交的 JWT,並根據權杖驗證和權杖中的範圍 (選擇性) 允許或拒絕要求。

    只有AWS::Serverless::HttpApi資源類型支持 OAuth 2.0/JWT 授權者。

    如需詳細資訊,請參閱《API Gateway 開發人員指南》中的使用 JWT 授權方控制對 HTTP API 的存取。如需範例,請參閱OAuth 2.0/JWT 授權者示例

選擇控制存取的機制

您選擇用來控制 API Gateway API 存取的機制取決於幾個因素。例如,如果您的綠地專案未設定授權或存取控制,則 Amazon Cognito 使用者集區可能是您的最佳選擇。這是因為當您設定使用者集區時,您也會自動設定驗證和存取控制。

不過,如果您的應用程式已設定驗證,則使用 Lambda 授權者可能是您的最佳選擇。這是因為您可以呼叫現有的驗證服務,並根據回應傳回原則文件。此外,如果您的應用程式需要使用者集區不支援的自訂驗證或存取控制邏輯,則 Lambda 授權者可能是您的最佳選擇。

選擇要使用的機制之後,請參閱中範例的對應章節,瞭解如何使用 AWS SAM 來設定應用程式以使用該機制。

自訂錯誤回應

您可以使 AWS SAM 用自訂某些 API Gateway 錯誤回應的內容。只有資AWS::Serverless::Api源類型支援自訂的 API Gateway 回應。

如需 API Gateway 回應的詳細資訊,請參閱 API Gateway 開發人員指南中的 API Gateway應。如需自訂回應的範例,請參閱客製化回應範例

範例