へのアクセスの制御API GatewayAPIs - AWS Serverless Application Model

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

へのアクセスの制御API GatewayAPIs

にアクセスできるユーザーを制御するには、Amazon API Gatewayテンプレート内で認証を有効にします。APIsAWS SAM

AWS SAMは、 へのアクセスを制御するいくつかのメカニズムをサポートしていますAPI GatewayAPIs。 サポートされているメカニズムのセットはAWS::Serverless::HttpApiAWS::Serverless::Api とリソースタイプで異なります。

次の表は、各リソースタイプがサポートするメカニズムをまとめたものです。

アクセスを制御するためのメカニズム AWS:: サーバーレス:: HttpApi AWS::Serverless::Api
Lambda authorizers
IAM アクセス権限
Amazon Cognito ユーザープール ✓ *
API キー
リソースポリシー
OAuth 2.0/JWT オーソライザー

* リソースタイプの JSON ウェブトークン (JWT) 発行者Amazon Cognitoとして を使用できます。AWS::Serverless::HttpApi

  • Lambda–オーソライザー Lambdaオーソライザー (以前のカスタムオーソライザー) は、API へのアクセスを制御するために使用する Lambda 関数です。API が呼び出されると、このLambda関数は、クライアントアプリケーションから提供されるリクエストコンテキストまたは認証トークンで呼び出されます。Lambdaこの関数は、発信者がリクエストされたオペレーションの実行を承認されているかどうかに応答します。

    AWS::Serverless::HttpApiAWS::Serverless::Api の両方のリソースタイプが Lambda オーソライザーをサポートしています。

    でのLambdaオーソライザーの詳細については、AWS::Serverless::HttpApi次のガイドAWS Lambdaの「HTTP のAPIsオーソライザーの使用」を参照してくださいAPI Gateway 開発者ガイド。を使用した Lambda オーソライザーの詳細については、AWS::Serverless::Apiの「API GatewayオーソライザーLambdaの使用」を参照してくださいAPI Gateway 開発者ガイド。

    いずれかのリソースタイプの Lambda オーソライザーの例については、「」を参照してくださいLambdaオーソライザーの例

  • IAM–アクセス権限 AWS Identity and Access Management (IAM) アクセス権限を使用して、だれが API を呼び出すことができるかを制御できます。API を呼び出すユーザーは、IAM 認証情報を使用して認証する必要があります。API への呼び出しは、API 発信者を表す IAM ユーザー、 ユーザーを含む IAM グループ、またはユーザーが引き受ける IAM ロールに ポリシーがアタッチされている場合にのみ成功します。IAM

    AWS::Serverless::Apiアクセス権限をサポートしているのはIAM、リソースタイプのみです。

    詳細については、次のガイドの「IAMアクセス権限で API へのアクセスを制御する」を参照してくださいAPI Gateway 開発者ガイド。例については、「IAMアクセス許可の例」を参照してください。

  • Amazon Cognitoユーザープール–Amazon Cognitoユーザープールは のユーザーディレクトリAmazon Cognitoです。API のクライアントは、最初にユーザープールにユーザーをサインインし、ユーザーの ID またはアクセストークンを取得する必要があります。次に、クライアントは返されたトークンのいずれかを使用して API を呼び出します。API コールは、必要なトークンが有効な場合にのみ成功します。

    AWS::Serverless::Apiリソースタイプは、 Amazon Cognito ユーザープールをサポートします。AWS::Serverless::HttpApiリソースタイプは、JWT 発行者としての の使用をサポートします。Amazon Cognito

    詳細については、 の「 をオーソライザーAmazon Cognito ユーザープールとして使用する REST API へのアクセスを制御する」を参照してくださいAPI Gateway 開発者ガイド。例については、「Amazon Cognitoユーザープールの例」を参照してください。

  • API キー – API キーは、顧客のアプリケーション開発者に配布する API へのアクセスを許可する英数字の文字列値です。

    AWS::Serverless::Apiリソースタイプのみが API キーをサポートしています。

    API キーの詳細については、の「API キーを使用する使用量プランの作成と使用」を参照してくださいAPI Gateway 開発者ガイド。API キーの例については、「」を参照してくださいAPI キーの例

  • リソースポリシー – リソースポリシーはAPI Gateway、API にアタッチできる JSON ポリシードキュメントです。リソースポリシーを使用して、指定されたプリンシパル (通常は IAM ユーザーまたはロール) が API を呼び出すことができるかどうかを制御します。

    AWS::Serverless::Apiリソースタイプのみが、 へのアクセスを制御するためのメカニズムとしてリソースポリシーをサポートしていますAPI GatewayAPIs。

    リソースポリシーの詳細については、の「リソースポリシーを使用して API へのアクセスを制御するAPI Gateway」を参照してくださいAPI Gateway 開発者ガイド。リソースポリシーの例については、「」を参照してくださいリソースポリシーの例

  • OAuth2.0/JWT – オーソライザーJWTs。 OpenID への接続 (OIDC) および OAuth 2.0 フレームワークの一部として使用できます。 は、クライアントが API リクエストで送信する APIsを検証し、オプションでトークン検証に基づいてリクエストを許可または拒否し、トークンのスコープも指定します。API GatewayJWTs

    AWS::Serverless::HttpApiリソースタイプのみが OAuth 2.0/JWT オーソライザーをサポートしています。

    詳細については、次のガイドの「JWT APIs オーソライザーAPI Gateway 開発者ガイドを使用して HTTP へのアクセスを制御する」を参照してください。例については、「OAuth2.0/JWT オーソライザーの例」を参照してください。

アクセスを制御するメカニズムを選択する

へのアクセスを制御するために使用するメカニズムAPI GatewayAPIsは、いくつかの要因によって異なります。たとえば、認証またはアクセスコントロールが設定されていないグリーンフィールドプロジェクトがある場合、Amazon Cognitoユーザープールが最適です。これは、ユーザープールを設定するときに、認証とアクセスコントロールの両方を自動的に設定するためです。

ただし、アプリケーションにすでに認証が設定されている場合は、 Lambdaオーソライザーを使用することをお勧めします。これは、既存の認証サービスを呼び出して、レスポンスに基づいてポリシードキュメントを返すことができるためです。また、アプリケーションで、ユーザープールがサポートしていないカスタム認証またはアクセスコントロールロジックが必要な場合は、Lambda オーソライザーが最適です。

使用するメカニズムを選択したら、 でそのメカニズムを使用するようにアプリケーションを設定する方法については、 の対応するセクションを参照してください。ExamplesAWS SAM

エラーレスポンスのカスタマイズ

を使用して、いくつかのAWS SAMエラーレスポンスの内容をカスタマイズできます。API GatewayAWS::Serverless::ApiリソースタイプのみがカスタマイズされたAPI Gatewayレスポンスをサポートします。

API Gatewayレスポンスの詳細については、の「 のゲートウェイレスポンスAPI Gateway」を参照してくださいAPI Gateway 開発者ガイド。カスタマイズされたレスポンスの例については、「」を参照してくださいカスタマイズされたレスポンスの例

Examples