本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將敏感資料傳遞至 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 儲存貯體方法一樣,必須寫入您的應用程式才能從共用磁碟區讀取秘密。由於磁碟區的範圍限定在任務,因此會在任務停止後自動刪除磁碟區。有關附屬容器的範例,請參閱 aws-secret-sidecar-injector
在 Amazon EC2 上,寫入秘密的磁碟區可以使用 AWS KMS 客戶受管金鑰加密。在 上 AWS Fargate,磁碟區儲存會使用服務受管金鑰自動加密。