本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 Amazon ECS 環境變數傳遞 Systems Manager 參數
Amazon ECS 可讓您將敏感資料儲存在 AWS Systems Manager 參數存放區參數中,然後在容器定義中參考,藉此將敏感資料注入容器。
使用環境變數將 Systems Manager 秘密注入容器時,請考慮下列事項。
-
敏感資料會在初次啟動容器時,嵌入您的容器。如果後續更新或輪換秘密,則容器不會自動收到更新的值。您必須啟動新的任務,或如果任務是服務的一部分,您可以更新服務,並使用 Force new deployment (強制新的部署) 選項強制服務來啟動新的任務。
-
對於 上的 Amazon ECS 任務 AWS Fargate,應考慮下列事項:
-
若要將秘密的完整內容作為環境變數或在日誌組態中插入,您必須使用平台版本
1.3.0
或更新版本。如需相關資訊,請參閱Amazon ECS 的 Fargate 平台版本。 -
若要將特定 JSON 金鑰或秘密版本作為環境變數或在日誌組態中插入,您必須使用平台版本
1.4.0
或更新版本 (Linux),或者1.0.0
(Windows)。如需相關資訊,請參閱Amazon ECS 的 Fargate 平台版本。
-
-
對於 EC2 上的 Amazon ECS 任務,應考慮下列事項:
-
若要使用秘密的特定 JSON 索引鍵或版本插入秘密,您的容器執行個體必須有
1.37.0
版或更新版本的容器代理程式。不過,我們建議您使用最新版的容器代理程式。如需檢查代理程式版本及更新至最新版本的資訊,請參閱「更新 Amazon ECS 容器代理程式」。若要插入秘密的完整內容做為環境變數,或在日誌組態中插入秘密,則容器執行個體必須有
1.22.0
版或更新版本的容器代理程式。
-
-
使用介面 VPC 端點來增強安全控制。您必須為 Systems Manager 建立介面 VPC 端點。如需 VPC 端點的相關資訊,請參閱AWS Systems Manager 《 使用者指南》中的使用 Systems Manager 的 VPC 端點來改善 EC2 執行個體的安全性。
-
您的任務定義必須使用具有 Systems Manager 參數存放區額外許可的任務執行角色。如需詳細資訊,請參閱Amazon ECS 任務執行 IAM 角色。
-
對於設定為使用
awslogs
日誌記錄驅動程式的 Windows 任務,您也必須在容器執行個體上設定ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE
環境變數。使用下列語法:<powershell> [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine") Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]' </powershell>
建立 Systems Manager 參數
您可以使用 Systems Manager 主控台為您的敏感資料建立 Systems Manager Parameter Store 參數。如需詳細資訊,請參閱《AWS Systems Manager 使用者指南》中的建立 Systems Manager 參數 (主控台) 或建立 Systems Manager 參數 (AWS CLI)。
將環境變數新增至容器定義
在任務定義中的容器定義中,secrets
使用要在容器中設定的環境變數名稱,以及 Systems Manager 參數存放區參數的完整 ARN,其中包含要呈現給容器的敏感資料。如需詳細資訊,請參閱secrets。
以下是任務定義的程式碼片段,顯示參考 Systems Manager 參數存放區參數的格式。如果 Systems Manager 參數存放區參數與您要啟動的任務位於相同區域中,則您可以使用參數的完整 ARN 或名稱。如果參數存在於不同區域,則請指定完整 ARN。
{ "containerDefinitions": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:ssm:region
:aws_account_id
:parameter/parameter_name
" }] }] }
如需有關如何使用環境變數中指定的秘密建立任務定義的資訊,請參閱 使用主控台建立 Amazon ECS 任務定義。
更新應用程式,以程式設計方式擷取 Systems Manager Parameter Store 秘密
若要擷取儲存在 Systems Manager 參數存放區參數中的敏感資料,請參閱 SDK 程式碼範例程式碼庫中的使用 AWS SDKs的 Systems Manager 程式碼範例。 AWS