

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# APIs中 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 版本和密碼的詳細資訊，請參閱 [支援的安全政策](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`端點存取模式。


| Architecture | 建議的遷移 | 
| --- | --- | 
| 使用 VPC 端點存取公有自訂網域名稱。 | 此架構使用跨端點類型流量。我們建議您遷移至 [API Gateway 中的 API 私有 API 的自訂網域名稱](apigateway-private-custom-domains.md)。 | 
|  使用任何方法叫用不使用自訂網域名稱或私有 DNS 名稱的私有 API。 | 此架構會在主機標頭與 TLS 交握中使用的 SNI 之間建立不相符，並且不會通過 CloudFront 的網域前端限制。我們建議您遷移 VPC 以使用私有 DNS。 | 
| 使用網域碎片將內容分散到多個網域或子網域。 | 此架構會在主機標頭與 TLS 交握中使用的 SNI 之間建立不相符，並且不會通過 CloudFront 的網域前端限制。我們建議您使用 `HTTP/2`並從此反模式遷移。 | 

以下是使用端點存取模式的考量：
+ 如果 API 或網域名稱的端點存取模式為 `STRICT`，則您無法變更端點類型。若要變更端點類型，請先將端點存取模式變更為 `BASIC`。
+ 將端點存取模式從 變更為 `BASIC` 後`STRICT`，API Gateway 會延遲 15 分鐘，以強制執行嚴格的端點存取模式。
+ 當您將安全政策從開頭為 的政策變更為`SecurityPolicy_`舊版政策時，您必須將端點存取模式取消設定為 `""`。

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

以下是 API Gateway 中 REST APIs的安全政策考量：
+ 您可以在 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 支援所有 APIs的安全政策。不過，您只能選擇 REST APIs的安全政策。API Gateway 僅支援 HTTP 或 WebSocket APIs`TLS_1_2`的安全政策。
+ 您無法將 API 的安全政策從 更新`TLS_1_0`為 `TLS_1_2`。
+ 有些安全政策同時支援 ECDSA 和 RSA 密碼套件。如果您將這種類型的政策與自訂網域名稱搭配使用，加密套件會符合客戶提供的憑證金鑰類型 RSA 或 ECDSA。如果您搭配 REST API 使用這種類型的政策，加密套件會符合與 RSA 憑證類型相容的加密套件。