翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
API Gateway API へのアクセスの制御
Amazon API Gateway API にアクセスできるユーザーを制御するには、 AWS SAM テンプレートで認証を有効にすることができます。
AWS SAM は、API Gateway API へのアクセスを制御するためのいくつかのメカニズムをサポートしています。サポートされているメカニズムのセットは、AWS::Serverless::HttpApi
と AWS::Serverless::Api
のリソースタイプ間で異なります。
以下の表は、各リソースタイプがサポートするメカニズムの要約です。
アクセスを制御するためのメカニズム | AWS::Serverless::HttpApi | AWS::Serverless::Api |
---|---|---|
Lambda オーソライザー | ✓ | ✓ |
IAM アクセス許可 | ✓ | |
Amazon Cognito ユーザープール | ✓ * | ✓ |
API キー | ✓ | |
リソースポリシー | ✓ | |
OAuth 2.0/JWT オーソライザー | ✓ |
* AWS::Serverless::HttpApi
リソースタイプでは、JSON Web トークン (JWT) 発行者として Amazon Cognito を使用できます。
-
Lambda オーソライザー - Lambda オーソライザー (これまで カスタムオーソライザー と呼ばれていたもの) は、API へのアクセスを制御するためにユーザーが提供する Lambda 関数です。API が呼び出されると、クライアントアプリケーションが提供するリクエストコンテキストまたは認証トークンによって、この Lambda 関数が呼び出されます。Lambda 関数は、発信者がリクエストされたオペレーションの実行を許可されているかどうかについて応答します。
AWS::Serverless::HttpApi
とAWS::Serverless::Api
リソースタイプの両方が Lambda オーソライザーをサポートします。AWS::Serverless::HttpApi
での Lambda オーソライザーの詳細については、API Gateway デベロッパーガイドの「AWS Lambda オーソライザーを使用する」で HTTP API について参照してください。AWS::Serverless::Api
での Lambda オーソライザーの詳細については、API Gateway デベロッパーガイドの「API Gateway Lambda オーソライザーを使用する」を参照してください。どちらか一方のリソースタイプ向けの Lambda オーソライザーの例については、「Lambda オーソライザーの例」を参照してください。
-
IAM 許可 - AWS Identity and Access Management (IAM) 許可を使用して、API を呼び出すことができるユーザーを制御できます。API を呼び出すユーザーは、IAM 認証情報を使用して認証される必要があります。API の呼び出しは、API 発信者を表す IAM ユーザー、ユーザーが含まれる IAM グループ、またはユーザーが引き受ける IAM ロールに IAM ポリシーがアタッチされていなければ成功しません。
IAM 許可をサポートするのは、
AWS::Serverless::Api
リソースタイプのみです。詳細については、API Gateway デベロッパーガイドの「IAM アクセス許可により API へのアクセスを制御する」を参照してください。例については、IAM 許可の例を参照してください。
-
Amazon Cognito ユーザープール - Amazon Cognito ユーザープールは、Amazon Cognito 内のユーザーディレクトリです。API のクライアントは、まずユーザーをユーザープールにサインインし、ユーザーのアイデンティティまたはアクセストークンを取得する必要があります。その後、返されたトークンの 1 つを使用して、クライアントが API を呼び出します。API コールは、必要なトークンが有効な場合にのみ成功します。
AWS::Serverless::Api
リソースタイプが Amazon Cognito ユーザープールをサポートします。AWS::Serverless::HttpApi
リソースタイプは、JWT 発行者としての Amazon Cognito の使用をサポートします。詳細については、API Gateway デベロッパーガイドの「Amazon Cognito ユーザープールをオーソライザーとして使用して REST API へのアクセスを制御する」を参照してください 例については、Amazon Cognito ユーザープールの例を参照してください。
-
API キー - API キーは、API へのアクセス権を付与するためにアプリケーションデベロッパーのお客様に配信する、英数字の文字列値です。
API キーをサポートするのは、
AWS::Serverless::Api
リソースタイプのみです。詳細については、API Gateway デベロッパーガイドの「API キーを使用した使用量プランの作成と使用」を参照してください。API キーの例については、「API キーの例」を参照してください。
-
リソースポリシー - リソースポリシーは、API Gateway API にアタッチできる JSON ポリシードキュメントです。リソースポリシーは、指定されたプリンシパル (通常は IAM のユーザーまたはロール) が API を呼び出せるかどうかを制御します。
API Gateway API へのアクセスを制御するメカニズムとしてのリソースポリシーをサポートするのは、
AWS::Serverless::Api
リソースタイプのみです。リソースポリシーの詳細については、API Gateway デベロッパーガイドの「API Gateway リソースポリシーを使用して API へのアクセスを制御する」を参照してください。リソースポリシーの例については、「リソースポリシーの例」を参照してください。
-
OAuth 2.0/JWT オーソライザー - OpenID Connect (OIDC)
および OAuth 2.0 フレームワークの一部として JWT を使用して、API へのアクセスを制御できます。API Gateway は、クライアントが API リクエストと共に送信する JWT を検証し、トークン検証、およびオプションでトークン内のスコープに基づいて、リクエストを許可または拒否します。 OAuth 2.0/JWT オーソライザーをサポートするのは、
AWS::Serverless::HttpApi
リソースタイプのみです。詳細については、API Gateway デベロッパーガイドの「JWT オーソライザーを使用した HTTP API へのアクセスの制御」を参照してください。例については、OAuth 2.0/JWT オーソライザーの例を参照してください。
アクセスを制御するためのメカニズムの選択
API Gateway API へのアクセスを制御するために選択するメカニズムは、いくつかの要因に応じて異なります。例えば、認証またはアクセスコントロールが設定されていないグリーンフィールドプロジェクトの場合は、Amazon Cognito ユーザープールが最適なオプションになり得ます。ユーザープールのセットアップ時には、認証とアクセスコントロールがどちらも自動的にセットアップされるからです。
ただし、アプリケーションで認証がすでにセットアップされている場合は、Lambda オーソライザーの使用が最適なオプションになり得ます。これは、既存の認証サービスを呼び出し、レスポンスに基づいてポリシードキュメントを返すことができるためです。また、アプリケーションに、ユーザープールがサポートしないカスタム認証またはアクセスコントロールロジックが必要な場合は、Lambda オーソライザーが最適なオプションになり得ます。
使用するメカニズムを選択したら、の該当するセクションを参照して、 AWS SAM そのメカニズムを使用するようにアプリケーションを構成する方法を確認してください。例
エラーレスポンスのカスタマイズ
AWS SAM を使用して、一部の API Gateway エラーレスポンスの内容をカスタマイズできます。カスタマイズされた API Gateway レスポンスをサポートするのは、AWS::Serverless::Api
リソースタイプのみです。
API Gateway レスポンスの詳細については、API Gateway デベロッパーガイドの「API Gateway でのゲートウェイレスポンス」を参照してください。カスタマイズされたレスポンスの例については、「カスタマイズされたレスポンスの例」を参照してください。