使用 Systems Manager 參數存放區指定敏感資料 - AWS Batch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 使用者指南》中的演練:在命令中建立和使用參數 (主控台)

建立參數存放區參數
  1. 請在以下位置開啟 AWS Systems Manager 主控台。 https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Parameter Store (參數存放區)Create parameter (建立參數)

  3. 針對 Name (名稱),輸入階層和參數名稱。例如,輸入 test/database_password

  4. 針對 Description (描述),輸入選擇性描述。

  5. 在「類」中,選擇「字串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
  6. 針對 Value (值),輸入一個值。例如 MyFirstParameter。如果您選擇此選項 SecureString,則會完全依照您輸入的值進行遮罩。

  7. 選擇 Create parameter (建立參數)