將敏感資料傳遞至 Amazon ECS容器 - Amazon Elastic Container Service

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

將敏感資料傳遞至 Amazon ECS容器

您可以安全地將敏感資料 (例如資料庫憑證) 傳遞至容器。

應用程式經常使用API金鑰和資料庫憑證等秘密來存取其他系統。它們通常包含使用者名稱和密碼、憑證或API金鑰。這些秘密的存取權應僅限於執行期使用 IAM和注入容器的特定IAM主體。

秘密可以從 AWS Secrets Manager 和 Amazon EC2 Systems Manager 參數存放區無縫注入容器。這些秘密可以在您的任務中引用為以下任何內容。

  1. 被引用為使用 secrets 容器定義參數的環境變數。

  2. 如果您的日誌平台需要驗證,則被引用為 secretOptions。如需詳細資訊,請參閱紀錄組態選項

  3. 如果從中提取容器的登錄檔需要驗證,則使用 repositoryCredentials 容器定義參數的映像會將其參照為提取的秘密。從 Amazon ECR Public Gallery 擷取映像時,請使用此方法。如需詳細資訊,請參閱任務的私有登錄檔身分驗證

建議您在設定秘密管理時執行下列動作。

使用 AWS Secrets Manager 或 AWS Systems Manager 參數存放區來存放秘密資料

您應該將API金鑰、資料庫憑證和其他秘密材料安全地存放在 Secrets Manager 中,或作為 Systems Manager 參數存放區的加密參數。這些服務類似,因為它們都是 AWS KMS 用於加密敏感資料的受管金鑰值存放區。不過,Secrets Manager 也包含自動輪換秘密、產生隨機秘密,以及跨帳戶共用秘密的功能。如果這些重要功能,請使用 Secrets Manager,否則請使用加密參數。

重要

如果您的秘密發生變更,您必須強制執行新部署或啟動新任務,才能擷取最新的秘密值。如需詳細資訊,請參閱下列主題:

從加密的 Amazon S3 儲存貯體擷取資料

您應該將秘密存放在加密的 Amazon S3 儲存貯體中,並使用任務角色來限制對這些秘密的存取。這可避免環境變數的值在執行 時意外洩漏日誌和洩漏docker inspect。執行此動作時,必須寫入應用程式,才能讀取 Amazon S3 儲存貯體中的秘密。如需說明,請參閱對 Amazon S3 儲存貯體設定預設伺服器端加密行為

使用附屬容器將秘密掛載至磁碟區

由於環境變數發生資料洩漏的風險較高,因此您應該執行邊車容器,從中讀取機密 AWS Secrets Manager ,並將其寫入共用磁碟區。此容器可以使用 Amazon 容器排序 ,在應用程式ECS容器之前執行和結束。執行此操作時,應用程式容器隨後會掛載寫入秘密的磁碟區。就像 Amazon S3 儲存貯體方法一樣,必須寫入您的應用程式才能從共用磁碟區讀取秘密。由於磁碟區的範圍限定在任務,因此會在任務停止後自動刪除磁碟區。如需 Sidecar 容器的範例,請參閱 aws-secret-sidecar-injector 專案。

在 Amazon 上EC2,寫入秘密的磁碟區可以使用客戶受管金鑰加密 AWS KMS 。在 上 AWS Fargate,磁碟區儲存會使用服務受管金鑰自動加密。