本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Secrets Manager 指定敏感資料
使用時 AWS Batch,您可以將敏感資料插入工作,方法是將敏感資料儲存在機 AWS Secrets Manager 密中,然後在工作定義中參照這些資料。Secrets Manager 密碼中儲存的機密資料可以作為環境變數公開給工作,也可以做為記錄組態的一部分公開給工作。
當您將秘密做為環境變數插入時,可以指定 JSON 金鑰或要插入的秘密版本。此程序可協助您控制公開給工作的機密資料。如需有關秘密版本控制的詳細資訊,請參閱《AWS Secrets Manager 使用者指南》中的 AWS Secrets Manager重要術語和概念。
使用 Secrets Manager 指定敏感資料的注意事項
使用 Secrets Manager 指定工作的敏感資料時,應考慮下列事項。
-
若要使用特定 JSON 金鑰或密碼版本插入機密,運算環境中的容器執行個體必須安裝 Amazon ECS 容器代理程式的 1.37.0 版或更新版本。不過,我們建議您使用最新版的容器代理程式。如需有關檢查代理程式版本和更新至最新版本的資訊,請參閱 Amazon 彈性容器服務開發人員指南中的更新 Amazon ECS 容器代理程式。
若要將密碼的完整內容插入為環境變數,或在記錄組態中插入密碼,您的容器執行個體必須具有容器代理程式的 1.23.0 版或更新版本。
-
僅支援儲存文字資料的密碼,這些密碼是使用 CreateSecretAPI
SecretString
參數建立的密碼。不支援儲存二進位資料的密碼,這些密碼是使用 CreateSecretAPISecretBinary
參數建立的機密。 -
使用參考 Secrets Manager 密碼的工作定義來擷取工作的機密資料時,如果您同時使用介面虛擬私人雲端端點,則必須為 Secrets Manager 建立介面 VPC 人雲端端點。如需詳細資訊,請參閱 《AWS Secrets Manager 使用者指南》中的搭配使用 Secrets Manager 與 VPC 端點。
-
工作初始啟動時,會將機密資料插入您的工作中。如果密碼隨後更新或輪替,工作不會自動接收更新的值。您必須啟動新工作,才能強制服務啟動具有更新密碼值的全新工作。
AWS Batch 密碼所需的 IAM 許可
若要使用此功能,您必須具有執行角色,並在工作定義中參照它。這可讓容器代理程式提取必要的 Secrets Manager 資源。如需詳細資訊,請參閱 AWS Batch 執行IAM角色。
若要提供對您所建立之 Secrets Manager 密碼的存取權,請手動將下列權限新增為內嵌原則至執行角色。如需詳細資訊,請參閱 IAM 使用者指南中的新增和移除 IAM 政策。
-
secretsmanager:GetSecretValue
- 如果您要參考 Secrets Manager 秘密,則需要此項目。 -
kms:Decrypt
- 只有在您的秘密使用自訂的 KMS 金鑰而非預設金鑰時,才需要此項目。您的自訂金鑰的 ARN 應該新增為資源。
下列內嵌政策範例新增必要許可。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:secretsmanager:
<region>
:<aws_account_id>
:secret:<secret_name>
", "arn:aws:kms:<region>
:<aws_account_id>
:key/<key_id>
" ] } ] }
插入敏感資料作為環境變數
在工作定義中,您可以指定下列項目:
-
包
secrets
含要在工作中設定之環境變數名稱的物件 -
Secrets Manager 秘密的 Amazon Resource Name (ARN)
-
包含要呈現給工作之敏感資料的其他參數
下列範例示範了必須為 Secrets Manager 秘密指定的完整語法。
arn:aws:secretsmanager:
region
:aws_account_id
:secret:secret-name
:json-key
:version-stage
:version-id
以下部分說明其他參數。這些參數是可選的。但是,如果不使用它們,則必須包含冒號:
才能使用默認值。以下提供範例深入說明。
json-key
-
使用您要設為環境變數值的值,來指定金鑰/值對中的金鑰名稱。僅支援 JSON 格式的值。如果您沒有指定 JSON 金鑰,則會使用秘密的完整內容。
version-stage
-
指定您要使用之秘密版本的預備標籤。如果指定了版本預備標籤,就無法指定版本 ID。如果未指定版本階段,則預設會擷取具有
AWSCURRENT
階段標籤的秘密。預備標籤會用來在不同版本的秘密更新或輪換時加以追蹤。每個版本的秘密都有一或多個預備標籤和 ID。如需詳細資訊,請參閱AWS Secrets Manager 使用指南中的 AWS Secrets Manager 主要術語和概念。
version-id
-
針對您要使用的秘密版本,指定其唯一識別符。如果指定了版本 ID,就無法指定版本預備標籤。如果未指定版本 ID,則預設會擷取具有
AWSCURRENT
階段標籤的秘密。版本 ID 會用來在不同版本的秘密更新或輪換時加以追蹤。每個版本的秘密都有 ID。如需詳細資訊,請參閱AWS Secrets Manager 使用指南中的 AWS Secrets Manager 主要術語和概念。
容器定義範例
下列範例示範您可以在容器定義中參考 Secrets Manager 秘密的方法。
範例 參考完整秘密
以下是任務定義的程式碼片段,顯示參考 Secrets Manager 秘密全文時的格式。
{ "containerProperties": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:secret_name-AbCdEf
" }] }] }
範例 參考秘密中的特定金鑰
以下顯示來自命令的範例輸出,該get-secret-value命令會顯示密碼的內容,以及與密碼相關聯的版本暫存標籤和版本 ID。
{ "ARN": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
", "Name": "appauthexample
", "VersionId": "871d9eca-18aa-46a9-8785-981dd39ab30c
", "SecretString": "{\"username1
\":\"password1
\",\"username2
\":\"password2
\",\"username3
\":\"password3
\"}", "VersionStages": [ "AWSCURRENT
" ], "CreatedDate": 1581968848.921 }
在 ARN 結尾指定金鑰名稱,來在容器定義中參考上一個輸出的特定金鑰。
{ "containerProperties": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
:username1
::" }] }] }
範例 參考特定秘密版本
以下示範 describe-secret 命令的範例輸出,會顯示秘密的未加密內容,以及所有版本秘密的中繼資料。
{ "ARN": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
", "Name": "appauthexample
", "Description": "Example of a secret containing application authorization data.", "RotationEnabled": false, "LastChangedDate": 1581968848.926, "LastAccessedDate": 1581897600.0, "Tags": [], "VersionIdsToStages": { "871d9eca-18aa-46a9-8785-981dd39ab30c
": [ "AWSCURRENT
" ], "9d4cb84b-ad69-40c0-a0ab-cead36b967e8
": [ "AWSPREVIOUS
" ] } }
在 ARN 結尾指定金鑰名稱,來在容器定義中參考上一個輸出的特定版本預備標籤。
{ "containerProperties": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
::AWSPREVIOUS
:" }] }] }
在 ARN 結尾指定金鑰名稱,來在容器定義中參考上一個輸出的特定版本 ID。
{ "containerProperties": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
::9d4cb84b-ad69-40c0-a0ab-cead36b967e8
" }] }] }
範例 參考秘密的特定金鑰和版本預備標籤
以下說明如何參考秘密中的特定金鑰和特定版本預備標籤。
{ "containerProperties": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
:username1
:AWSPREVIOUS
:" }] }] }
若要指定特定的金鑰和版本 ID,請使用下列語法。
{ "containerProperties": [{ "secrets": [{ "name": "
environment_variable_name
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:appauthexample-AbCdEf
:username1
::9d4cb84b-ad69-40c0-a0ab-cead36b967e8
" }] }] }
將敏感資料插入日誌組態
在您的工作定義中,當指定一個時,logConfiguration
您可以secretOptions
使用要在容器中設定的記錄驅動程式選項名稱,以及包含要呈現給容器之敏感資料的 Secrets Manager 密碼的完整 ARN 來指定。
以下是工作定義的片段,顯示參考 Secret Manager 密碼時的格式。
{ "containerProperties": [{ "logConfiguration": [{ "logDriver": "
splunk
", "options": { "splunk-url": "https://cloud.splunk.com:8080
" }, "secretOptions": [{ "name": "splunk-token
", "valueFrom": "arn:aws:secretsmanager:region
:aws_account_id
:secret:secret_name-AbCdEf
" }] }] }] }
建立 AWS Secrets Manager 密碼
您可以使用 Secrets Manager 主控台為您的敏感資料建立秘密。如需詳細資訊,請參閱 《AWS Secrets Manager 使用者指南》中的建立基本秘密。
建立基本秘密
使用 Secrets Manager 為您的敏感資料建立秘密。
-
開啟位於的 Secrets Manager 主控台https://console.aws.amazon.com/secretsmanager/
。 -
選擇 Store a new secret (存放新機密)。
-
針對 Select secret type (選取秘密類型),選擇 Other type of secrets (其他秘密類型)。
-
將自訂秘密詳細資訊指定為 Key (金鑰) 與 Value (值) 對。例如,您可以指定
UserName
的金鑰,然後提供適當的使用者名稱作為其值。新增名為Password
的第二個金鑰,再輸入密碼文字作為其值。您也可以新增資料庫名稱、伺服器位址或 TCP 連接埠的項目。您可以新增任意數量的對組用以存放您需要的資訊。或者,您可以選擇 Plaintext (純文字) 標籤,然後以任何您喜歡的方式輸入秘密值。
-
選擇您要用來 AWS KMS 加密密碼中受保護文字的加密金鑰。如果您未選擇一個金鑰,則 Secrets Manager 將查看帳戶是否有預設金鑰,若有便會使用該金鑰。如果預設金鑰不存在,Secrets Manager 將自動為您建立一個。您也可以選擇 Add new key (新增金鑰) 來建立專供此秘密使用的自訂 KMS 金鑰。若要建立自己的 KMS 金鑰,您必須擁有在帳戶中建立 KMS 金鑰的許可。
-
選擇下一步。
-
針對 Secret name (秘密名稱),請輸入可選的路徑與名稱,例如
production/MyAwesomeAppSecret
或development/TestSecret
,然後選擇 Next (下一步)。您也可以選擇性新增描述,協助您日後回憶起此秘密的用途。秘密名稱必須是 ASCII 字母、數字或下列任一字元:/_+=.@-
-
(選用) 在此階段,您可以為秘密設定輪換。針對此程序,維持 Disable automatic rotation (停用自動輪換),然後選擇 Next (下一步)。
如需如何設定新密碼或現有密碼輪換的相關資訊,請參閱輪換您的 AWS Secrets Manager 密碼。
-
檢視您的設定,然後選擇 Store secret (存放秘密) 以儲存您在 Secrets Manager 中輸入作為新秘密的所有內容。