本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Systems Manager 參數存放區指定敏感資料
使用時 AWS Batch,您可以將敏感資料插入容器,方法是將敏感資料儲存在 AWS Systems Manager 參數存放區參數中,然後在容器定義中參考這些資料。
主題
使用 Systems Manager 參數存放區指定敏感資料的注意事項
使用 Systems Manager 參數存放區參數來指定容器的敏感資料時,應考慮以下事項。
-
此功能要求您的容器執行個體具有 1.23.0 版或更新版本的容器代理程式。不過,我們建議您使用最新版的容器代理程式。如需有關檢查代理程式版本和更新至最新版本的資訊,請參閱 Amazon 彈性容器服務開發人員指南中的更新 Amazon ECS 容器代理程式。
-
當容器初始啟動時,機密資料會插入工作的容器中。如果後續更新或輪換秘密或參數存放區參數,則容器不會自動收到更新的值。您必須啟動新工作,才能強制啟動具有更新密碼的全新工作。
AWS Batch 密碼所需的 IAM 許可
若要使用此功能,您必須具有執行角色,並在工作定義中參照它。這可讓 Amazon ECS 容器代理程式提取必要的 AWS Systems Manager 資源。如需詳細資訊,請參閱 AWS Batch 執行IAM角色。
若要提供對您建立之 AWS Systems Manager 參數存放區參數的存取權,請手動將下列權限新增為內嵌原則至執行角色。如需詳細資訊,請參閱 IAM 使用者指南中的新增和移除 IAM 政策。
-
ssm:GetParameters
- 如果您在任務定義中參考 Systems Manager 參數存放區參數,才需要此項目。 -
secretsmanager:GetSecretValue
- 如果您直接參考 Secrets Manager 秘密,或者您的 Systems Manager 參數存放區參數參考任務定義中的 Secrets Manager 秘密,才需要此項目。 -
kms:Decrypt
- 只有在您的秘密使用自訂 KMS 金鑰而非預設金鑰時,才需要此項目。您的自訂金鑰的 ARN 應該新增為資源。
下列內嵌政策範例新增必要許可:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:
<region>
:<aws_account_id>
:parameter/<parameter_name>
", "arn:aws:secretsmanager:<region>
:<aws_account_id>
:secret:<secret_name>
", "arn:aws:kms:<region>
:<aws_account_id>
:key/<key_id>
" ] } ] }
插入敏感資料作為環境變數
在您的容器定義內,將 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 使用者指南》中的演練:在命令中建立和使用參數 (主控台)。
建立參數存放區參數
-
請在以下位置開啟 AWS Systems Manager 主控台。
https://console.aws.amazon.com/systems-manager/ -
在導覽窗格中,選擇 Parameter Store (參數存放區)、Create parameter (建立參數)。
-
針對 Name (名稱),輸入階層和參數名稱。例如,輸入
test/database_password
。 -
針對 Description (描述),輸入選擇性描述。
-
在「類型」中,選擇「字串」StringList、、或SecureString。
注意
-
如果您選擇 SecureString,則會顯示 KMS 金鑰識別碼欄位。如果您不提供 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 (建立參數)。