

# API Gateway での REST API のセキュリティポリシー
<a name="apigateway-security-policies"></a>

*セキュリティポリシー*は、API Gateway が提供する TLS の最小バージョンと暗号スイートの事前定義された組み合わせです。クライアントが API またはカスタムドメイン名への TLS ハンドシェイクを確立すると、セキュリティポリシーにより、API Gateway で受け入れられる TLS バージョンと暗号スイートが適用されます。セキュリティポリシーは、クライアントとサーバー間の改ざんや盗聴などのセキュリティの問題から API とカスタムドメイン名を保護します。

API Gateway は、レガシーセキュリティポリシーと拡張セキュリティポリシーをサポートしています。`TLS_1_0` および `TLS_1_2` はレガシーセキュリティポリシーです。これらのセキュリティポリシーを使用して下位互換性を確保します。`SecurityPolicy_` で始まるポリシーは、拡張セキュリティポリシーです。これらのポリシーは、規制対象のワークロード、高度なガバナンス、またはポスト量子暗号化に使用します。拡張セキュリティポリシーを使用する場合は、追加のガバナンスのためにエンドポイントアクセスモードも設定する必要があります。詳細については、「[エンドポイントアクセスモード](#apigateway-security-policies-endpoint-access-mode)」を参照してください。

## API Gateway がセキュリティポリシーを適用する方法
<a name="apigateway-security-policies-understanding"></a>

次の例は、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_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

API Gateway は、他の暗号スイートを受け付けません。例えば、セキュリティポリシーは、`AES128-SHA` 暗号スイートを使用する TLS 1.3 トラフィックを拒否します。サポートされる TLS バージョンと暗号の詳細については、「[Supported security policies](apigateway-security-policies-list.md)」を参照してください。

API Gateway へのアクセスに使用した TLS プロトコルと暗号クライアントをモニタリングするには、アクセスログで `$context.tlsVersion` および `$context.cipherSuite` コンテキスト変数を使用できます。詳細については、「[API Gateway で REST API をモニタリングする](rest-api-monitor.md)」を参照してください。

## エンドポイントアクセスモード
<a name="apigateway-security-policies-endpoint-access-mode"></a>

エンドポイントアクセスモードは、`SecurityPolicy_` で始まる拡張セキュリティポリシーを使用する REST API またはカスタムドメイン名に指定する必要がある追加のパラメータです。これは、リソースを作成するとき、またはセキュリティポリシーをレガシーポリシーから拡張ポリシーに変更するときに行います。

エンドポイントアクセスモードを `STRICT` に設定すると、REST API またはカスタムドメイン名へのリクエストは、次のチェックに合格する必要があります。
+ リクエストは、リソースと同じ API Gateway エンドポイントタイプから送信する必要があります。これは、リージョンエンドポイント、エッジ最適化エンドポイント、プライベートエンドポイントのいずれかです。
+ リージョンエンドポイントまたはプライベートエンドポイントを使用する場合、API Gateway は SNI ホストマッチングを使用します。エッジ最適化エンドポイントを使用する場合、API Gateway は CloudFront のドメインフロンティング保護に準拠します。詳細については、「[ドメインフロンティング](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-restrictions)」を参照してください。

これらの条件のいずれかが満たされない場合、API Gateway はリクエストを拒否します。可能であれば、`STRICT` エンドポイントアクセスモードを使用することをお勧めします。

厳格なエンドポイントアクセスモードを使用するように既存の API またはドメイン名を移行するには、まずセキュリティポリシーを拡張セキュリティポリシーに更新し、エンドポイントアクセスモードを `BASIC` に設定したままにします。トラフィックとアクセスログを検証したら、エンドポイントアクセスモードを `STRICT` に設定します。エンドポイントアクセスモードを `STRICT` から `BASIC` に移行すると、変更が伝播するまで、エンドポイントは約 15 分間使用できなくなります。

特定のアプリケーションアーキテクチャでは、エンドポイントアクセスモードを `STRICT` に設定せず、代わりにエンドポイントアクセスモードを `BASIC` に設定する必要があります。次の表は、REST API またはカスタムドメイン名で `STRICT` エンドポイントアクセスモードを使用できるようするための、いくつかのアプリケーションアーキテクチャと推奨事項を示しています。


| アーキテクチャ | 推奨される移行 | 
| --- | --- | 
| VPC エンドポイントを使用してパブリックカスタムドメイン名にアクセスします。 | このアーキテクチャでは、クロスエンドポイントタイプのトラフィックを使用します。[API Gateway でのプライベート API のカスタムドメイン名](apigateway-private-custom-domains.md) に移行することをお勧めします。 | 
|  任意のメソッドを使用して、カスタムドメイン名またはプライベート DNS 名を使用しないプライベート API を呼び出します。 | このアーキテクチャでは、ホストヘッダーと TLS ハンドシェイクで使用される SNI の間に不一致が生じ、CloudFront のドメインフロンティング制限に合格しません。プライベート DNS を使用するように VPC を移行することをお勧めします。 | 
| ドメインシャーディングを使用して、複数のドメインまたはサブドメインにコンテンツを配信します。 | このアーキテクチャでは、ホストヘッダーと TLS ハンドシェイクで使用される SNI の間に不一致が生じ、CloudFront のドメインフロンティング制限に合格しません。`HTTP/2` を使用して、このアンチパターンから移行することをお勧めします。 | 

エンドポイントアクセスモードを使用する際の考慮事項を次に示します。
+ API またはドメイン名のエンドポイントアクセスモードが `STRICT` の場合、エンドポイントタイプを変更することはできません。エンドポイントタイプを変更するには、まずエンドポイントアクセスモードを `BASIC` に変更します。
+ エンドポイントアクセスモードを `BASIC` から `STRICT` に変更すると、API Gateway が厳格なエンドポイントアクセスモードを適用するまでに 15 分の遅延が発生します。
+ セキュリティポリシーを `SecurityPolicy_` で始まるポリシーからレガシーポリシーに変更する場合は、エンドポイントアクセスモードを `""` に設定解除する必要があります。

## 考慮事項
<a name="apigateway-security-policies-considerations"></a>

API Gateway の REST API のセキュリティポリシーに関する考慮事項は次のとおりです。
+ セキュリティポリシーは、OpenAPI 定義ファイルにインポートできます。詳細については、「[x-amazon-apigateway-endpoint-access-modex-amazon-apigateway-security-policy](openapi-extensions-security-policy.md)」を参照してください。
+ 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 証明書タイプと互換性のある暗号スイートと一致します。