將敏感資料傳遞至 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 金鑰、資料庫認證和其他機密資料安全地儲存在 Secret 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 儲存貯體方法一樣,必須寫入您的應用程式才能從共用磁碟區讀取秘密。由於磁碟區的範圍限定在任務,因此會在任務停止後自動刪除磁碟區。如需附屬容器的範例,請參閱aws-secret-sidecar-injector專案。

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