API Gateway カスタムドメインの TLS ポリシーの確認

対応する TLS ポリシーで古いプロトコルを制限し、クライアントの互換性を確認してください。

説明

API Gateway カスタムドメインが古い TLS バージョンや要件に合わない暗号スイートを許可すると、通信の保護が不十分になるおそれがあります。SecurityPolicy は最低 TLS バージョンと暗号スイートを定めるもので、省略されていても HTTPS 自体がないとは限りません。

対応するポリシーはエンドポイントと API の種類によって異なります。カスタムドメインのポリシーは、バックエンドの認証や他のすべての呼び出しエンドポイントのポリシーの代わりにはなりません。

想定される影響

  • 古いプロトコルを許可し続けると、必要な通信保護の基準を満たせない場合があります。
  • クライアントの対応状況を確認せずに強化すると、必要な接続が失敗する場合があります。

対処方法

そのエンドポイントが対応する SecurityPolicy から、最低 TLS 1.2 以上と必要な暗号スイートを提供するポリシーを選んでください。証明書とクライアントの互換性を確認し、実際の TLS ネゴシエーションを試験してください。拡張ポリシーを選ぶ場合は、追加のエンドポイント設定要件も満たしてください。

例

EDGE カスタムドメインの従来の TLS ポリシーを比較します。CertificateArn には、ドメイン名に合う us-east-1 の ACM 証明書 ARN を指定してください。DNS と API マッピングは省略しています。

変更前

yaml
Resources:
  ApiDomain:
    Type: AWS::ApiGateway::DomainName
    Properties:
      DomainName: api.example.com
      CertificateArn: !Ref CertificateArn
      EndpointConfiguration:
        Types:
          - EDGE
      SecurityPolicy: TLS_1_0

TLS_1_0 ポリシーは TLS 1.0 や 1.1 を含む接続を許可します。名前は、そのバージョンだけを使用するという意味ではありません。

変更後

yaml
Resources:
  ApiDomain:
    Type: AWS::ApiGateway::DomainName
    Properties:
      DomainName: api.example.com
      CertificateArn: !Ref CertificateArn
      EndpointConfiguration:
        Types:
          - EDGE
      SecurityPolicy: TLS_1_2

TLS_1_2 で最低 TLS バージョンを引き上げます。対応するさらに強いポリシーの必要性を検討し、実際のクライアント接続を試験してください。

参考資料