本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Systems Manager 參數存放區指定敏感資料
使用 時 AWS Batch,您可以將敏感資料儲存在參數存放區參數中 AWS Systems Manager ,然後在容器定義中參考它們,藉此將敏感資料注入容器。
主題
使用 Systems Manager 參數存放區指定敏感資料的考量事項
使用 Systems Manager 參數存放區參數來指定容器的敏感資料時,應考慮以下事項。
-
此功能需要您的容器執行個體具有 1.23.0 版或更新版本的容器代理程式。不過,我們建議您使用最新版的容器代理。如需有關檢查代理程式版本和更新至最新版本的資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的更新 Amazon ECS 容器代理程式。
-
最初啟動容器時,會將敏感資料注入您任務的容器中。如果後續更新或輪換秘密或參數存放區參數,則容器不會自動收到更新的值。您必須啟動新的任務,才能強制啟動具有更新秘密的新任務。
AWS Batch 秘密所需的 IAM 許可
若要使用此功能,您必須擁有 執行角色,並在您的任務定義中參考它。這可讓 Amazon ECS 容器代理程式提取必要的 AWS Systems Manager 資源。如需詳細資訊,請參閱AWS Batch IAM 執行角色。
若要讓您存取您建立的 AWS Systems Manager 參數存放區參數,請手動將下列許可做為內嵌政策新增至執行角色。如需詳細資訊,請參閱 IAM User Guide 中的 Adding and Removing IAM Policies。
-
ssm:GetParameters- 如果您在任務定義中參考 Systems Manager 參數存放區參數,才需要此項目。 -
secretsmanager:GetSecretValue- 如果您直接參考 Secrets Manager 秘密,或者您的 Systems Manager 參數存放區參數參考任務定義中的 Secrets Manager 秘密,才需要此項目。 -
kms:Decrypt- 只有在您的秘密使用自訂 KMS 金鑰而非預設金鑰時,才需要此項目。您的自訂金鑰的 ARN 應該新增為資源。
下列內嵌政策範例新增必要許可:
將敏感資料注入為環境變數
在您的容器定義內,將 secrets 指定為要在容器中設定的環境變數名稱,以及 Systems Manager 參數存放區參數 (含有要呈現給容器的敏感資料) 的完整 ARN。
以下是任務定義的程式碼片段,顯示參考 Systems Manager 參數存放區參數時的格式。如果 Systems Manager 參數存放區參數與您啟動的任務位於相同的區域中,則您可以使用參數的完整 ARN 或名稱。如果參數存在於不同區域,則必須指定完整 ARN。
{ "containerProperties": [{ "secrets": [{ "name": "environment_variable_name", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }
在日誌組態中注入敏感資料
在您的容器定義內,指定 logConfiguration 時,您可用要在容器中設定的日誌驅動程式選項名稱指定 secretOptions,以及 Systems Manager 參數存放區參數 (含有要呈現給容器的敏感資料) 的完整 ARN。
重要
如果 Systems Manager 參數存放區參數與您啟動的任務位於相同的區域中,則您可以使用參數的完整 ARN 或名稱。如果參數存在於不同區域,則必須指定完整 ARN。
以下是任務定義的程式碼片段,顯示參考 Systems Manager 參數存放區參數時的格式。
{ "containerProperties": [{ "logConfiguration": [{ "logDriver": "fluentd", "options": { "tag": "fluentd demo" }, "secretOptions": [{ "name": "fluentd-address", "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name" }] }] }] }
建立 AWS Systems Manager 參數存放區參數
您可以使用 AWS Systems Manager 主控台為您的敏感資料建立 Systems Manager 參數存放區參數。如需詳細資訊,請參閱 《AWS Systems Manager 使用者指南》中的演練:在命令中建立和使用參數 (主控台)。
建立參數存放區參數
-
在 https://https://console.aws.amazon.com/systems-manager/
開啟 AWS Systems Manager 主控台。 -
在導覽窗格中,選擇 Parameter Store (參數存放區)、Create parameter (建立參數)。
-
針對 Name (名稱),輸入階層和參數名稱。例如,輸入
test/database_password。 -
針對 Description (描述),輸入選擇性描述。
-
在 Type (類型) 中選擇 String、StringList 或 SecureString。
注意
-
如果您選擇 SecureString (SecureString),將會出現 KMS Key ID (KMS 金鑰 ID) 欄位。如果您不提供 KMS 金鑰 ID、KMS 金鑰 ARN、別名名稱或別名 ARN,系統會使用
alias/aws/ssm。這是 Systems Manager 的預設 KMS 金鑰。若要避免使用此金鑰,請選擇自訂金鑰。如需詳細資訊,請參閱 《AWS Systems Manager 使用者指南》中的使用安全字串參數。 -
當您在主控台使用
key-id參數及自訂 KMS 金鑰別名名稱或別名 ARN 建立安全字串參數時,您必須在別名前面指定字首alias/。以下是 ARN 範例:arn:aws:kms:us-east-2:123456789012:alias/MyAliasName下列是別名名稱範例:
alias/MyAliasName
-
-
針對 Value (值),輸入一個值。例如
MyFirstParameter。如果您選擇 SecureString,則會完全按照您輸入的方式遮罩該值。 -
選擇 Create parameter (建立參數)。