API Gateway のバックエンド用クライアント証明書設定の確認

HTTPS バックエンドで API Gateway の呼び出しを確認する必要がある場合は、クライアント証明書を構成してください。

説明

バックエンドがクライアント証明書で API Gateway の呼び出しを確認する設計の場合、ステージに必要な証明書がないと、その認証を利用できません。ClientCertificateId は API Gateway から HTTPS バックエンドへの要求の認証に関する設定であり、公開 API の HTTPS 証明書ではありません。

保護を有効にするには、バックエンドが実際に証明書を検証する必要があります。他の適切なバックエンド認証を使用する場合、すべての API にこの証明書を追加する必要はありません。

想定される影響

  • 証明書の検証も他の認証もないバックエンドは、意図しない直接呼び出しを許可するおそれがあります。
  • 証明書の期限切れやバックエンドの信頼設定との不一致により、正常な要求が失敗する場合があります。

対処方法

バックエンドの認証要件を確認してください。API Gateway のクライアント証明書を使用する場合は、証明書を生成してステージの ClientCertificateId に関連付け、HTTPS バックエンドで検証するように構成してください。有効期限前に証明書を更新し、正常な要求と許可されていない直接要求を試験してください。

例

REST API ステージの設定抜粋です。API、デプロイメント、API Gateway が生成したクライアント証明書、HTTPS バックエンドの信頼設定は別途準備してください。

変更前

yaml
Resources:
  ProdStage:
    Type: AWS::ApiGateway::Stage
    Properties:
      StageName: Prod
      RestApiId: !Ref MyRestApi
      DeploymentId: !Ref ApiDeployment

ステージにバックエンド用クライアント証明書を指定していません。公開 API の HTTPS が無効という意味ではありません。

変更後

yaml
Resources:
  ProdStage:
    Type: AWS::ApiGateway::Stage
    Properties:
      StageName: Prod
      RestApiId: !Ref MyRestApi
      DeploymentId: !Ref ApiDeployment
      ClientCertificateId: !Ref ClientCertificate

ClientCertificateId でバックエンド要求用の証明書を関連付けます。バックエンドによる検証が必要であり、公開 API の呼び出し元の認証は別です。

参考資料