

 此白皮書僅供歷史參考。有些內容可能已過時，有些連結可能無法使用。

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

# 優先考慮 API 安全性
<a name="prioritize-api-security"></a>

 所有應用程式必須確保只有授權的用戶端才能存取其 API 資源。設計多層應用程式時，您可以利用 Amazon API Gateway 為保護邏輯層所做的多種不同方式：

## 傳輸安全性
<a name="transit-security"></a>

 所有對 APIs請求都可以透過 HTTPS 提出，以啟用傳輸中的加密。

 API Gateway 提供內建 SSL/TLS 憑證 – 如果針對面向公眾APIs 使用自訂網域名稱選項，您可以使用 [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/) 提供自己的 SSL/TLS 憑證。API Gateway 也支援交互 TLS (mTLS) 身分驗證。相互 TLS 可增強 API 的安全性，並協助保護您的資料免受用戶端詐騙或中間man-in-the攻擊等攻擊。

## API 授權
<a name="api-authorization"></a>

 您在 API 中建立的每個資源/方法組合都會獲得唯一的 Amazon Resource Name (ARN)，可在 AWS Identity and Access Management (IAM) 政策中參考。

 有三種一般方法可將授權新增至 API Gateway 中的 API：
+  **IAM 角色和政策：**用戶端使用 [AWS Signature 第 4 版](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) (SigV4) 授權和 IAM 政策進行 API 存取。相同的登入資料可以視需要限制或允許存取其他 AWS 服務和資源 （例如，Amazon S3 儲存貯體或 Amazon DynamoDB 資料表）。
+  **Amazon Cognito 使用者集區：**用戶端透過 [Amazon Cognito](https://aws.amazon.com/cognito/) 使用者集區登入並取得權杖，這些權杖包含在請求的授權標頭中。
+  **Lambda 授權方：**定義 Lambda 函數，實作使用承載字符策略 （例如 OAuth 和 SAML) 或使用請求參數來識別使用者的自訂授權機制。

## 存取限制
<a name="access-restrictions"></a>

 API Gateway 支援產生 API 金鑰，以及將這些金鑰與可設定的用量計劃建立關聯。您可以使用 CloudWatch 監控 API 金鑰用量。

 API Gateway 支援 API 中每個方法的限流、速率限制和高載速率限制。

## 私有 API
<a name="private-apis"></a>

使用 API Gateway，您可以建立私有 REST APIs，只能使用界面 VPC 端點從 Amazon VPC 中的虛擬私有雲端存取。這是您在 VPC 中建立的端點網路介面。

使用資源政策，您可以從選取的 VPCs存取，包括跨 AWS 帳戶。每個端點可用來存取多個私有 API。您也可以使用 AWS Direct Connect 在內部部署網路與 Amazon VPC 之間建立連線，並經由該連線來存取私有 API。

在所有情況下，進出您私有 API 的流量都會使用安全連線，且留在 Amazon 網路中，並與公有網際網路隔離。

## 使用 AWS WAF 的防火牆保護
<a name="firewall-protection-using-aws-waf"></a>

面向網際網路APIs 容易遭受惡意攻擊。 AWS WAF 是一種 Web 應用程式防火牆，可協助保護 APIs免受此類攻擊。它保護 APIs 免受 SQL Injection 和跨網站指令碼攻擊等常見 Web 入侵。您可以使用 [AWS WAF](https://aws.amazon.com/waf/)搭配 API Gateway 來協助保護 APIs。