本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將敏感資料傳遞至 Amazon ECS容器
您可以安全地將敏感資料 (例如資料庫憑證) 傳遞至容器。
應用程式經常使用API金鑰和資料庫憑證等秘密來存取其他系統。它們通常包含使用者名稱和密碼、憑證或API金鑰。這些秘密的存取權應僅限於執行期使用 IAM和注入容器的特定IAM主體。
秘密可以從 AWS Secrets Manager 和 Amazon EC2 Systems Manager 參數存放區無縫注入容器。這些秘密可以在您的任務中引用為以下任何內容。
-
被引用為使用
secrets
容器定義參數的環境變數。 -
如果您的日誌平台需要驗證,則被引用為
secretOptions
。如需詳細資訊,請參閱紀錄組態選項。 -
如果從中提取容器的登錄檔需要驗證,則使用
repositoryCredentials
容器定義參數的映像會將其參照為提取的秘密。從 Amazon ECR Public Gallery 擷取映像時,請使用此方法。如需詳細資訊,請參閱任務的私有登錄檔身分驗證。
建議您在設定秘密管理時執行下列動作。
使用 AWS Secrets Manager 或 AWS Systems Manager 參數存放區來存放秘密資料
您應該將API金鑰、資料庫憑證和其他秘密材料安全地存放在 Secrets Manager 中,或作為 Systems Manager 參數存放區的加密參數。這些服務類似,因為它們都是 AWS KMS 用於加密敏感資料的受管金鑰值存放區。不過,Secrets Manager 也包含自動輪換秘密、產生隨機秘密,以及跨帳戶共用秘密的功能。如果這些重要功能,請使用 Secrets Manager,否則請使用加密參數。
重要
如果您的秘密發生變更,您必須強制執行新部署或啟動新任務,才能擷取最新的秘密值。如需詳細資訊,請參閱下列主題:
-
任務 - 停止任務,然後啟動任務。如需詳細資訊,請參閱 停止 Amazon ECS任務 和 將應用程式作為 Amazon ECS任務執行。
-
服務 - 更新服務並使用強制新部署選項。如需詳細資訊,請參閱使用主控台更新 Amazon ECS服務。
從加密的 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,磁碟區儲存會使用服務受管金鑰自動加密。