加密 Amazon ECS Service Connect 流量 - Amazon Elastic Container Service

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

加密 Amazon ECS Service Connect 流量

Amazon ECS Service Connect 支援使用適用於 Amazon ECS 服務的 Transport Layer Security (TLS) 憑證進行自動流量加密。當您將 Amazon ECS 服務指向 AWS Private Certificate Authority (AWS Private CA) 時,Amazon ECS 會自動佈建 TLS 憑證,以加密 Amazon ECS Service Connect 服務之間的流量。Amazon ECS 會產生、輪換和分發用於流量加密的 TLS 憑證。

Service Connect 的自動流量加密使用業界領先的加密功能來保護您的服務間通訊,協助您滿足您的安全需求。它支援使用 AWS Private Certificate Authority 256-bit ECDSA2048-bit RSA加密的 TLS 憑證。您也可以完全控制私有憑證和簽署金鑰,協助您符合合規要求。根據預設,支援 TLS 1.3,但不支援 TLS 1.0 - 1.2。Service Connect 支援具有下列密碼的 TLS 1.3:

  • TLS_AES_128_GCM_SHA256

  • TLS_AES_256_GCM_SHA384

  • TLS_CHACHA20_POLY1305_SHA256

注意

若要使用 TLS 1.3,您必須在目標的接聽程式上啟用它。

只有透過 Amazon ECS 代理程式傳遞的傳入和傳出流量才會加密。

Service Connect 和 Application Load Balancer 運作狀態檢查

您可以使用 Service Connect 搭配 Application Load Balancer 運作狀態檢查和 TLS 1.3 加密。為 Service Connect 設定下列參數:

  • 針對下列項目設定 Application Load Balancer:

    • 使用任何 TLS 1.3 安全政策。如需詳細資訊,請參閱 Application Load Balancer 的安全政策

    • 使用 HTTPS 通訊協定並連接到 TLS 接聽程式的目標群組。

    • 運作狀態檢查會設定為容器連接埠。

  • 具有下列組態的服務:

    • 使用 awsvpc 模式。

    • 已啟用 Service Connect。

    • 負載平衡器組態設定為使用 Application Load Balancer 上設定的目標群組,而容器連接埠設定為與服務相同的連接埠。

    • 無法使用 設定服務ingressPortOverride。如需詳細資訊,請參閱《Amazon Elastic Container Service API 參考》中的 ServiceConnectService

考量:

  • Service Connect with TLS 不支援 Bridge 網路模式。僅支援awsvpc聯網模式。

AWS Private Certificate Authority 憑證和 Service Connect

您需要擁有基礎設施 IAM 角色。如需此角色的詳細資訊,請參閱 Amazon ECS 基礎設施 IAM 角色

AWS Private Certificate Authority 適用於 Service Connect 的 模式

AWS Private Certificate Authority 可以兩種模式執行:一般用途和短期。

  • 一般用途 - 可使用任何過期日期設定的憑證。

  • 短期 - 有效性上限為七天的憑證。

雖然 Amazon ECS 支援這兩種模式,但我們建議您使用短期憑證。根據預設,憑證每五天輪換一次,在短期模式下執行可大幅節省一般用途的成本。

Service Connect 不支援憑證撤銷,而是利用具有頻繁憑證輪換的短期憑證。您有權在 Secrets Manager 中使用管輪換來修改輪換頻率、停用或刪除秘密,但這樣做可能會產生下列可能的後果。 https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html

  • 較短的輪換頻率 - 由於 AWS Private CA AWS KMS 、Secrets Manager 和 Auto Scaling 的輪換工作負載增加,較短的輪換頻率會產生較高的成本。

  • 較長的輪換頻率 - 如果輪換頻率超過七天,您應用程式的通訊就會失敗。

  • 刪除秘密 - 刪除秘密會導致輪換失敗並影響客戶應用程式通訊。

如果您的秘密輪換失敗,則會在 中發佈RotationFailed事件AWS CloudTrail。您也可以為 設定 CloudWatch 警示RotationFailed

重要

請勿將複本區域新增至秘密。這樣做可防止 Amazon ECS 刪除秘密,因為 Amazon ECS 沒有從複寫中移除區域的許可。如果您已新增複寫,請執行下列命令。

aws secretsmanager remove-regions-from-replication \ --secret-id SecretId \ --remove-replica-regions region-name
次級憑證授權機構

您可以將任何 AWS Private CA根憑證或次級憑證帶到 Service Connect TLS,以發行服務的終端實體憑證。提供的發行者會被視為各地的簽署者和信任根。您可以從不同的次級 CAs 為應用程式的不同部分發行終端實體憑證。使用 時 AWS CLI,請提供 CA 的 Amazon Resource Name (ARN) 來建立信任鏈。

內部部署憑證授權機構

若要使用內部部署 CA,您可以在其中建立和設定次級 CA AWS Private Certificate Authority。這可確保為 Amazon ECS 工作負載發行的所有 TLS 憑證與您在內部部署執行的工作負載共用信任鏈,並且能夠安全地連線。

重要

AmazonECSManaged : true中新增必要的標籤 AWS Private CA。

基礎設施即程式碼

將 Service Connect TLS 與 Infrastructure as Code (IaC) 工具搭配使用時,請務必正確設定相依性以避免問題,例如服務卡在耗盡中。如果 AWS KMS 提供金鑰,則應在 Amazon ECS 服務之後刪除 IAM 角色和 AWS Private CA 相依性。

Service Connect 和 Secrets Manager

搭配 TLS 加密使用 Amazon ECS Service Connect 時,服務會以下列方式與 Secrets Manager 互動:

Service Connect 會使用提供的基礎設施角色,在 Secrets Manager 中建立秘密。這些秘密用於存放 TLS 憑證的相關私有金鑰,以加密 Service Connect 服務之間的流量。

警告

Service Connect 自動建立和管理這些秘密可簡化為您的服務實作 TLS 加密的程序。不過,請務必注意潛在的安全隱患。具有 Secrets Manager 讀取存取權的其他 IAM 角色可能可以存取這些自動建立的秘密。如果未正確設定存取控制,這可能會向未經授權的對象公開敏感的密碼編譯資料。

若要降低此風險,請遵循下列最佳實務:

  • 小心管理和限制對 Secrets Manager 的存取,尤其是 Service Connect 建立的秘密。

  • 定期稽核 IAM 角色及其許可,以確保維持最低權限原則。

授予 Secrets Manager 讀取存取權時,請考慮排除 Service Connect 建立的 TLS 私有金鑰。您可以在 IAM 政策中使用條件來排除具有符合模式ARNs 的秘密,藉此達成此目的:

"arn:aws:secretsmanager:::secret:ecs-sc!"

ecs-sc!字首拒絕所有秘密GetSecretValue動作的範例 IAM 政策:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*" } ] }
注意

這是一般範例,可能需要根據您的特定使用案例和 AWS 帳戶組態進行調整。始終徹底測試您的 IAM 政策,以確保它們在維護安全性的同時提供預期的存取。

透過了解 Service Connect 如何與 Secrets Manager 互動,您可以更好地管理 Amazon ECS 服務的安全性,同時利用自動 TLS 加密的優勢。

Service Connect 和 AWS Key Management Service

您可以使用 AWS Key Management Service 來加密和解密 Service Connect 資源。 AWS KMS 是一項由 管理的服務,您可以在 AWS 其中建立和管理密碼編譯金鑰來保護您的資料。

AWS KMS 搭配 Service Connect 使用 時,您可以選擇使用為您 AWS 管理的 AWS 擁有金鑰,也可以選擇現有的 AWS KMS 金鑰。您也可以建立要使用的新 AWS KMS 金鑰

提供您自己的加密金鑰

您可以提供自己的金鑰材料,也可以透過將自己的金鑰 AWS Key Management Service 匯入 來使用外部金鑰存放區 AWS KMS,然後在 Amazon ECS Service Connect 中指定該金鑰的 Amazon Resource Name (ARN)。

以下是範例 AWS KMS 政策。將使用者輸入值取代為您自己的值。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "id", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyPair" ], "Resource": "*" } ] }

如需金鑰政策的詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的建立金鑰政策

注意

Service Connect 僅支援對稱加密 AWS KMS 金鑰。您無法使用任何其他類型的 AWS KMS 金鑰來加密 Service Connect 資源。如需判斷金鑰是否為 AWS KMS 對稱加密金鑰的說明,請參閱識別非對稱 KMS 金鑰

如需 AWS Key Management Service 對稱加密金鑰的詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的對稱加密 AWS KMS 金鑰