

# SEC09-BP03 驗證網路通訊
<a name="sec_protect_data_transit_authentication"></a>

 使用支援身分驗證的協定 [如 Transport Layer Security (TLS) 或 IPsec] 來驗證通訊的身分。

 設計工作負載，以在每當服務、應用程式或使用者之間進行通訊時，使用安全、經驗證的網路協定。使用支援驗證和授權的網路協定可提供更強大的網路流量控制能力，並減少未經授權存取所造成的影響。

 **預期成果：**設計出工作負載，讓其有明確定義的服務間資料平面和控制平面流量流程。在技術允許的情況下，流量流程要使用經過驗證和加密的網路協定。

 **常見的反模式：**
+  工作負載內有未經加密或驗證的流量流程。
+  在多個使用者或實體之間重複使用驗證憑證。
+  僅仰賴網路控制做為存取控制機制。
+  建立自訂驗證機制，而非仰賴產業標準的驗證機制。
+  服務元件或 VPC 中的其他資源之間有過於寬鬆的流量。

 **建立此最佳實務的優勢：**
+  將未經授權存取所造成的影響範圍限制在工作負載的某個部分。
+  提供只會由已驗證實體執行動作的更高層級保證。
+  透過清楚地定義並強制執行預期的資料傳輸介面來改善服務的去耦。
+  透過請求歸因和明確定義的通訊介面，增強監控、日誌記錄和事件回應。
+  結合網路控制與驗證和授權控制，為您的工作負載提供深度防禦。

 **未建立此最佳實務時的曝險等級：**低 

## 實作指引
<a name="implementation-guidance"></a>

 您工作負載的網路流量模式可分為兩個類別：
+  *東西流量*代表構成工作負載的服務之間的流量流程。
+  *南北流量*代表工作負載和取用者之間的流量流程。

 雖然加密南北流量是常見的做法，但是使用經過驗證的協定來保護東西流量則較不常見。現代安全實務的建議是，單靠網路設計並無法讓兩個實體之間建立信任的關係。當兩個服務可能位於一個共通的網路邊界內時，最佳實務仍是對這些服務之間的通訊進行加密、驗證和授權。

 舉例來說，無論請求來自哪個網路，AWS 服務 API 都會使用 [AWS 第 4 版簽署程序 (SigV4)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) 簽署協定來驗證呼叫者。此驗證可確保 AWS API 可以驗證發出動作請求的身分，該身分接著可與政策結合來作出授權決策，確定是否應允許該動作。

 [Amazon VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/access-management-overview.html) 和 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html) 等服務可讓您使用相同的 SigV4 簽署協定，為自己的工作負載中的東西流量新增驗證和授權功能。如果 AWS 環境以外的資源需要與要求進行 SigV4 型驗證和授權的服務進行通訊，您可以在非 AWS 資源上使用 [AWS Identity and Access Management (IAM) Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) 來取得暫時 AWS 憑證。使用這些憑證，便可透過 SigV4 簽署服務請求以授權存取。

 用於驗證東西流量的另一種常見機制是 TLS 相互驗證 (mTLS)。許多物聯網 (IoT)、企業對企業應用程式和微型服務都使用 mTLS，透過使用用戶端和伺服器端 X.509 憑證來驗證 TLS 通訊兩端的身分。這些憑證可由 AWS 私有憑證授權單位 (AWS 私有 CA) 發行。您可以使用 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mutual-tls.html) 等服務，為工作負載之間或工作負載內部的通訊提供 mTLS 驗證。[Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html) 也支援內部或外部工作負載的 mTLS。雖然 mTLS 會為 TLS 通訊的兩端提供驗證資訊，但不提供授權機制。

 最後，OAuth 2.0 和 OpenID Connect (OIDC) 是兩種常用於控制使用者對服務存取行為的協定，但現在也變成服務對服務流量的熱門協定。API Gateway 會提供 [JSON Web Token (JWT) 授權器](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html)，可讓工作負載使用 OIDC 或 OAuth 2.0 身分提供者所發行的 JWT 來限制 API 路由的存取。OAuth2 的範圍可做為基本授權決策的來源，但仍需要在應用程式層實作授權檢查，而且單靠 OAuth2 範圍並無法支援更複雜的授權需求。

### 實作步驟
<a name="implementation-steps"></a>
+  **定義並記錄您的工作負載網路流程：**實作深度防禦策略的第一步是定義工作負載的流量流程。
  +  建立可清楚定義構成工作負載的不同服務間資料傳輸方式的資料流程圖。此圖是透過已驗證的網路通道強制執行這些流程的第一步。
  +  在開發和測試階段檢測您的工作負載，以驗證資料流程圖是否準確反映工作負載在執行時期的行為。
  +  資料流程圖在執行威脅建模練習時也很有用，如 [SEC01-BP07 使用威脅模型識別威脅並優先考慮緩解措施](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_securely_operate_threat_model.html)中所述。
+  **建立網路控制：**考慮用來建立與資料流程一致的網路控制的 AWS 功能。雖然網路邊界不應成為唯一的安全控制，但其可在深度防禦策略中提供一個保護層，以保護您的工作負載。
  +  使用[安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/security-groups.html)建立定義和限制資源之間的資料流程。
  +  考慮使用 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) 與支援 AWS PrivateLink 的 AWS 和第三方服務進行通訊。透過 AWS PrivateLink 介面端點傳送的資料會保留在 AWS 網路骨幹內，不會周遊公用網際網路。
+  **在工作負載中跨服務實作驗證和授權：**選擇最適合用來在您工作負載中提供經驗證加密流量的 AWS 服務集。
  +  考慮用來保護服務對服務通訊的 [Amazon VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html)。VPC Lattice 可以使用 [SigV4 驗證結合驗證政策](https://docs.aws.amazon.com/vpc-lattice/latest/ug/auth-policies.html)來控制服務對服務的存取。
  +  對於使用 mTLS 的服務對服務通訊，請考慮 [API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mutual-tls.html)、[Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/mutual-authentication.html)。[AWS 私有 CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html) 可用於建立能夠發行憑證以與 mTLS 搭配使用的私有 CA 階層。
  +  與使用 OAuth 2.0 或 OIDC 的服務進行整合時，請考慮[使用 JWT 授權器的 API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-jwt-authorizer.html)。
  +  對於工作負載和 IoT 裝置之間的通訊，請考慮 [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/client-authentication.html)，它提供了幾種網路流量加密和驗證選項。
+  **監控未經授權的存取：**持續監控是否有意外的通訊管道、嘗試存取受保護資源的未經授權主體，以及其他不當的存取模式。
  +  如果使用 VPC Lattice 來管理服務的存取，請考慮啟用和監控 [VPC Lattice 存取日誌](https://docs.aws.amazon.com/vpc-lattice/latest/ug/monitoring-access-logs.html)。這些存取日誌包括請求方實體的資訊、包括來源和目的地 VPC 在內的網路資訊，以及請求中繼資料。
  +  考慮啟用 [VPC 流程日誌](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)來擷取網路流程上的中繼資料，並定期審查是否有異常狀況。
  +  如需更多有關規劃、模擬和應對安全事件的指引，請參閱 [AWS 安全事件回應指南](https://docs.aws.amazon.com/whitepapers/latest/aws-security-incident-response-guide/aws-security-incident-response-guide.html)和 AWS Well Architected Framework 安全支柱的[事件回應](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/incident-response.html)章節。

## 資源
<a name="resources"></a>

 **相關的最佳實務：**
+ [ SEC03-BP07 分析公有和跨帳戶存取權](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_analyze_cross_account.html)
+ [ SEC02-BP02 使用臨時憑證](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_identities_unique.html)
+ [ SEC01-BP07 使用威脅模型識別威脅並優先考慮緩解措施](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_securely_operate_threat_model.html)

 **相關文件：**
+ [ 評估用來保護 Amazon API Gateway API 的存取控制方法](https://aws.amazon.com/blogs/compute/evaluating-access-control-methods-to-secure-amazon-api-gateway-apis/)
+ [ 為 REST API 設定相互 TLS 驗證](https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-mutual-tls.html)
+ [ 如何使用 JWT 授權器保護 API Gateway HTTP 端點 ](https://aws.amazon.com/blogs/security/how-to-secure-api-gateway-http-endpoints-with-jwt-authorizer/)
+ [ 使用 AWS IoT Core 憑證提供者來授權 AWS 服務的直接呼叫](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)
+ [AWS 安全事件回應指南](https://docs.aws.amazon.com/whitepapers/latest/aws-security-incident-response-guide/aws-security-incident-response-guide.html)

 **相關影片：**
+ [AWS re:invent 2022：VPC Lattice 簡介](https://www.youtube.com/watch?v=fRjD1JI0H5w)
+ [AWS re:invent 2020：針對 AWS 上 HTTP API 的無伺服器 API 驗證](https://www.youtube.com/watch?v=AW4kvUkUKZ0)

 **相關範例：**
+ [ Amazon VPC Lattice 研討會](https://catalog.us-east-1.prod.workshops.aws/workshops/9e543f60-e409-43d4-b37f-78ff3e1a07f5/en-US)
+ [ 零信任第 1 集 - Phantom Service Perimeter 研討會 ](https://catalog.us-east-1.prod.workshops.aws/workshops/dc413216-deab-4371-9e4a-879a4f14233d/en-US)