API Gateway での REST API のセキュリティポリシー
セキュリティポリシーは、API Gateway が提供する TLS の最小バージョンと暗号スイートの事前定義された組み合わせです。クライアントが API またはカスタムドメイン名への TLS ハンドシェイクを確立すると、セキュリティポリシーにより、API Gateway で受け入れられる TLS バージョンと暗号スイートが適用されます。セキュリティポリシーは、クライアントとサーバー間の改ざんや盗聴などのセキュリティの問題から API とカスタムドメイン名を保護します。
API Gateway は、レガシーセキュリティポリシーと拡張セキュリティポリシーをサポートしています。TLS_1_0 および TLS_1_2 はレガシーセキュリティポリシーです。これらのセキュリティポリシーを使用して下位互換性を確保します。SecurityPolicy_ で始まるポリシーは、拡張セキュリティポリシーです。これらのポリシーは、規制対象のワークロード、高度なガバナンス、またはポスト量子暗号化に使用します。拡張セキュリティポリシーを使用する場合は、追加のガバナンスのためにエンドポイントアクセスモードも設定する必要があります。詳細については、「エンドポイントアクセスモード」を参照してください。
API Gateway がセキュリティポリシーを適用する方法
次の例は、API Gateway が SecurityPolicy_TLS13_1_3_2025_09 セキュリティポリシーを例として使用してセキュリティポリシーを適用する方法を示しています。
SecurityPolicy_TLS13_1_3_2025_09 セキュリティポリシーは、TLS 1.3 トラフィックを受け入れ、TLS 1.2 および TLS 1.0 トラフィックを拒否します。TLS 1.3 トラフィックの場合、セキュリティポリシーは次の暗号スイートを受け入れます。
TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256
API Gateway は、他の暗号スイートを受け付けません。例えば、セキュリティポリシーは、AES128-SHA 暗号スイートを使用する TLS 1.3 トラフィックを拒否します。サポートされる TLS バージョンと暗号の詳細については、「Supported security policies」を参照してください。
API Gateway へのアクセスに使用した TLS プロトコルと暗号クライアントをモニタリングするには、アクセスログで $context.tlsVersion および $context.cipherSuite コンテキスト変数を使用できます。詳細については、「API Gateway で REST API をモニタリングする」を参照してください。
エンドポイントアクセスモード
エンドポイントアクセスモードは、SecurityPolicy_ で始まる拡張セキュリティポリシーを使用する REST API またはカスタムドメイン名に指定する必要がある追加のパラメータです。これは、リソースを作成するとき、またはセキュリティポリシーをレガシーポリシーから拡張ポリシーに変更するときに行います。
エンドポイントアクセスモードを STRICT に設定すると、REST API またはカスタムドメイン名へのリクエストは、次のチェックに合格する必要があります。
-
リクエストは、リソースと同じ API Gateway エンドポイントタイプから送信する必要があります。これは、リージョンエンドポイント、エッジ最適化エンドポイント、プライベートエンドポイントのいずれかです。
-
リージョンエンドポイントまたはプライベートエンドポイントを使用する場合、API Gateway は SNI ホストマッチングを使用します。エッジ最適化エンドポイントを使用する場合、API Gateway は CloudFront のドメインフロンティング保護に準拠します。詳細については、「ドメインフロンティング」を参照してください。
これらの条件のいずれかが満たされない場合、API Gateway はリクエストを拒否します。可能であれば、STRICT エンドポイントアクセスモードを使用することをお勧めします。
厳格なエンドポイントアクセスモードを使用するように既存の API またはドメイン名を移行するには、まずセキュリティポリシーを拡張セキュリティポリシーに更新し、エンドポイントアクセスモードを BASIC に設定したままにします。トラフィックとアクセスログを検証したら、エンドポイントアクセスモードを STRICT に設定します。エンドポイントアクセスモードを STRICT から BASIC に移行すると、変更が伝播するまで、エンドポイントは約 15 分間使用できなくなります。
特定のアプリケーションアーキテクチャでは、エンドポイントアクセスモードを STRICT に設定せず、代わりにエンドポイントアクセスモードを BASIC に設定する必要があります。次の表は、REST API またはカスタムドメイン名で STRICT エンドポイントアクセスモードを使用できるようするための、いくつかのアプリケーションアーキテクチャと推奨事項を示しています。
| アーキテクチャ | 推奨される移行 |
|---|---|
VPC エンドポイントを使用してパブリックカスタムドメイン名にアクセスします。 |
このアーキテクチャでは、クロスエンドポイントタイプのトラフィックを使用します。API Gateway でのプライベート API のカスタムドメイン名 に移行することをお勧めします。 |
|
任意のメソッドを使用して、カスタムドメイン名またはプライベート DNS 名を使用しないプライベート API を呼び出します。 |
このアーキテクチャでは、ホストヘッダーと TLS ハンドシェイクで使用される SNI の間に不一致が生じ、CloudFront のドメインフロンティング制限に合格しません。プライベート DNS を使用するように VPC を移行することをお勧めします。 |
ドメインシャーディングを使用して、複数のドメインまたはサブドメインにコンテンツを配信します。 |
このアーキテクチャでは、ホストヘッダーと TLS ハンドシェイクで使用される SNI の間に不一致が生じ、CloudFront のドメインフロンティング制限に合格しません。 |
エンドポイントアクセスモードを使用する際の考慮事項を次に示します。
-
API またはドメイン名のエンドポイントアクセスモードが
STRICTの場合、エンドポイントタイプを変更することはできません。エンドポイントタイプを変更するには、まずエンドポイントアクセスモードをBASICに変更します。 -
エンドポイントアクセスモードを
BASICからSTRICTに変更すると、API Gateway が厳格なエンドポイントアクセスモードを適用するまでに 15 分の遅延が発生します。 -
セキュリティポリシーを
SecurityPolicy_で始まるポリシーからレガシーポリシーに変更する場合は、エンドポイントアクセスモードを""に設定解除する必要があります。
考慮事項
API Gateway の REST API のセキュリティポリシーに関する考慮事項は次のとおりです。
-
セキュリティポリシーは、OpenAPI 定義ファイルにインポートできます。詳細については、「x-amazon-apigateway-endpoint-access-mode」を参照してください。
-
API は、その API とは異なるセキュリティポリシーのカスタムドメイン名にマッピングできます。そのカスタムドメイン名を呼び出すと、API Gateway は API のセキュリティポリシーを使用して TLS ハンドシェイクをネゴシエートします。デフォルトの API エンドポイントを無効にすると、発信者が API を呼び出す方法が影響を受ける可能性があります。
-
セキュリティポリシーを変更すると、更新が完了するまでに約 15 分かかります。API の
apiStatusをモニタリングできます。API が更新されると、apiStatusはUPDATINGになり、完了するとAVAILABLEになります。API ステータスがUPDATINGの場合、引き続き呼び出すことができます。 -
API Gateway は、すべての API でセキュリティポリシーをサポートしています。ただし、REST API のセキュリティポリシーのみを選択できます。API Gateway は、HTTP または WebSocket API の
TLS_1_2セキュリティポリシーのみをサポートします。 -
API のセキュリティポリシーを
TLS_1_0からTLS_1_2に更新することはできません。 -
一部のセキュリティポリシーは、ECDSA 暗号スイートと RSA 暗号スイートの両方をサポートしています。このタイプのポリシーをカスタムドメイン名で使用すると、暗号スイートは RSA または ECDSA のいずれかのお客様が用意した証明書キータイプと一致します。このタイプのポリシーを REST API で使用すると、暗号スイートは RSA 証明書タイプと互換性のある暗号スイートと一致します。