

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

# Amazon API Gateway 的資料保護
<a name="data-protection"></a>

AWS [共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)適用於 Amazon API Gateway 的資料保護。如此模型所述，AWS 負責保護執行所有 AWS 雲端 的全球基礎設施。您負責維護在此基礎設施上託管內容的控制權。您也同時負責所使用 AWS 服務 的安全組態和管理任務。如需資料隱私權的詳細資訊，請參閱[資料隱私權常見問答集](https://aws.amazon.com/compliance/data-privacy-faq/)。如需有關歐洲資料保護的相關資訊，請參閱 *AWS 安全性部落格*上的 [AWS 共同的責任模型和 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

基於資料保護目的，建議您使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 保護 AWS 帳戶 憑證，並設定個人使用者。如此一來，每個使用者都只會獲得授與完成其任務所必須的許可。我們也建議您採用下列方式保護資料：
+ 每個帳戶均要使用多重要素驗證 (MFA)。
+ 使用 SSL/TLS 與 AWS 資源通訊。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 使用 AWS CloudTrail 設定 API 和使用者活動日誌記錄。如需使用 CloudTrail 追蹤擷取 AWS 活動的相關資訊，請參閱「AWS CloudTrail 使用者指南」**中的[使用 CloudTrail 追蹤](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解決方案，以及 AWS 服務 內的所有預設安全控制項。
+ 使用進階的受管安全服務 (例如 Amazon Macie)，協助探索和保護儲存在 Amazon S3 的敏感資料。
+ 如果您在透過命令列介面或 API 存取 AWS 時，需要 FIPS 140-3 驗證的加密模組，請使用 FIPS 端點。如需有關 FIPS 和 FIPS 端點的更多相關資訊，請參閱[聯邦資訊處理標準 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)。

我們強烈建議您絕對不要將客戶的電子郵件地址等機密或敏感資訊，放在標籤或自由格式的文字欄位中，例如**名稱**欄位。這包含在您利用主控台、API、AWS CLI 或 AWS 軟體開發套件使用 API Gateway 或其他 AWS 服務 時。您在標籤或自由格式文字欄位中輸入的任何資料都可能用於計費或診斷日誌。如果您提供外部伺服器的 URL，我們強烈建議請勿在驗證您對該伺服器請求的 URL 中包含憑證資訊。

# Amazon API Gateway 的資料加密
<a name="data-protection-encryption"></a>

資料保護是指保護傳輸中的資料 (即資料往返於 API Gateway 時) 以及靜態資料 (即資料存放在 時AWS

## Amazon API Gateway 的靜態資料加密
<a name="data-protection-at-rest"></a>

如果您選擇為 REST API 啟用快取功能，就可以啟用快取加密。如需進一步了解，請參閱[API Gateway 中 REST API 的快取設定](api-gateway-caching.md)。

如需關於資料保護的詳細資訊，請參閱 *AWS 安全部落格*上的 [AWS 共同責任模型和歐盟《一般資料保護規範》(GDPR)](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

### 加密和解密憑證的私有金鑰
<a name="private-key"></a>

當您為私有 API 建立自訂網域名稱時，您的 ACM 憑證和私有金鑰會使用具有別名 **aws/acm** 的 AWS 受管 KMS 金鑰進行加密。您可以在 AWS KMS 主控台的 **AWS 受管金鑰**下，檢視具有此別名的金鑰 ID。

API Gateway 不會直接存取您的 ACM 資源。而是使用 AWS TLS Connection Manager 來保護和存取憑證的私有金鑰。當您使用 ACM 憑證為私有 API 建立 APIs Gateway 自訂網域名稱時，API Gateway 會為您的憑證與 AWS TLS Connection Manager 建立關聯。方法是針對具有字首 **aws/acm** 的 AWS 受管金鑰在 AWS KMS 中建立授權。授權是一種政策工具，允許 TLS Connection Manager 使用密碼編譯操作中的 KMS 金鑰。授權可讓承授者主體 (TLS Connection Manager) 呼叫 KMS 金鑰上指定的授予操作，以解密憑證的私有金鑰。TLS Connection Manager 接著會使用憑證和解密的 (純文字) 私有金鑰，與 API Gateway 服務的用戶端建立安全連線 (SSL/TLS 工作階段)。當憑證與私有 API 的 API Gateway 自訂網域名稱取消關聯時，授權即會失效。

如果您想要移除對 KMS 金鑰的存取權，建議您使用 AWS 管理主控台 或 AWS CLI 中的 `update-service` 命令，取代或刪除服務的憑證。

### API Gateway 的加密內容
<a name="encryption-context"></a>

[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html)是選用的一組鍵值對，其中包含有關您的私有金鑰可能用途的情境式內容資訊。AWS KMS 將加密內容與加密資料綁定，並將其用作其他驗證資料，以支援驗證加密。

當您的 TLS 金鑰與 API Gateway 和 TLS Connection Manager 搭配使用時，您的 API Gateway 服務名稱會包含在用來加密靜態金鑰的加密內容中。您可以透過檢視 CloudTrail 日誌中的加密內容，如下一節所示，或查看 ACM 主控台的**關聯的資源**標籤，以驗證憑證和私有金鑰所使用的 API Gateway 自訂網域名稱。

若要解密資料，則必須在請求中包含相同的加密內容。API Gateway 在所有的 AWS KMS 密碼編譯操作中使用相同的加密內容，其中金鑰為 `aws:apigateway:arn`，而值為 API Gateway `PrivateDomainName` 資源的 Amazon Resource Name (ARN)。

下列範例展示操作輸出中的加密內容，例如 `CreateGrant`。

```
"constraints": {
"encryptionContextEquals": {
"aws:acm:arn": "arn:aws:acm:us-west-2:859412291086:certificate/9177097a-f0ae-4be1-93b1-19f911ea4f88",
"aws:apigateway:arn": "arn:aws:apigateway:us-west-2:859412291086:/domainnames/denytest-part1.pdx.sahig.people.aws.dev+cbaeumzjhg"
}
},
"operations": [
"Decrypt"
],
"granteePrincipal": "tlsconnectionmanager.amazonaws.com"
```

## Amazon API Gateway 的傳輸中資料加密
<a name="data-protection-in-transit"></a>

使用 Amazon API Gateway 建立的 API 只會公開 HTTPS 端點。API Gateway 不支援未加密的 (HTTP) 端點。

API Gateway 會管理預設 `execute-api` 端點的憑證。如果您要設定自訂網域名稱，[請指定網域名稱的憑證](how-to-custom-domains.md#custom-domain-names-certificates)。最佳實務是不要[關聯憑證](https://docs.aws.amazon.com/acm/latest/userguide/troubleshooting-pinning.html)。

為了提高安全性，您可以選擇要為 API Gateway 自訂網域強制執行的最低 Transport Layer Security (TLS) 通訊協定版本。WebSocket API 與 HTTP API 僅支援 TLS 1.2 版。如需進一步了解，請參閱[在 API Gateway 中為您的自訂網域選擇安全政策](apigateway-custom-domain-tls-version.md)。

您也可以在帳戶中使用自訂 SSL 憑證來設定 Amazon CloudFront 分佈，並搭配區域 API 使用。接著，您可以根據安全與合規要求來使用 TLS 1.1 以上版本，為 CloudFront 分佈設定安全政策。

如需關於資料保護的詳細資訊，請參閱 *AWS 安全部落格*上的[在 API Gateway 中保護您的 REST API](rest-api-protect.md)及 [AWS 共同責任模型和歐盟《一般資料保護規範》(GDPR) ](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)部落格文章。

# 網際網路流量隱私權
<a name="security-traffic-privacy"></a>

使用 Amazon API Gateway 時，您可以建立只能從 Amazon Virtual Private Cloud (VPC) 存取的私有 REST API。VPC 會使用[界面 VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)，也就是您在 VPC 中建立的端點網路界面。您可以使用[資源政策](apigateway-private-api-create.md#apigateway-private-api-set-up-resource-policy)，允許或拒絕選定的 VPC 與 VPC 端點 (包括其他 AWS 帳戶) 存取您的 API。每個端點可用來存取多個私有 API。您也可以使用 Direct Connect 在內部部署網路與 Amazon VPC 之間建立連線，並經由該連線來存取您的私有 API。在所有情況下，進出您私有 API 的流量都會使用安全連線，且留在 Amazon 網路中，並與公有網際網路隔離。如需進一步了解，請參閱[API Gateway 中的私有 REST API](apigateway-private-apis.md)。