我該如何管理 Amazon ECS 任務和服務的密碼和存取金鑰?
我已設定 Amazon Elastic Container Service (Amazon ECS) 來存取敏感訊息,例如資料庫憑證或 API 金鑰。我想安全地管理和擷取非硬編碼的密碼。
解決方法
若要管理非硬編碼的密碼和存取金鑰,請使用 AWS Secrets Manager 或 Parameter Store (AWS Systems Manager 的功能)。
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
建立密碼
若要建立密碼,請使用 Secrets Manager 主控台或 AWS CLI。若要使用 Parameter Store 儲存密碼,請執行以下 put-parameter 命令:
aws ssm put-parameter --type SecureString --name awsExampleParameter --value awsExampleValue
**注意:**將 awsExampleParameter 替換為您的參數,並將 awsExampleValue 替換為您的密碼。
允許 Amazon ECS 任務存取您的密碼
Amazon ECS 使用 AWS Identity and Access Management (IAM) 任務執行角色,從 Secrets Manager 或 Parameter Store 取得密碼資訊。為具有所需最低權限的角色建立 IAM 政策。如果您使用 Secrets Manager,則 IAM 角色必須有 secretsmanager:GetSecretValue 權限。如果您使用 Parameter Store,則 IAM 角色必須有 ssm:GetParameters 和 kms:Decrypt 權限。
Secrets Manager 政策範例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:region:account-id:secret:secret-name" } ] }
**注意:**將 arn:aws:secretsmanager:region:account-id:secret:secret-name 替換為您的密碼 ARN。
Parameter Store 政策範例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters", "ssm:GetParameterHistory" ], "Resource": "arn:aws:ssm:region:account-id:parameter/parameter-name" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/kms-key-id" } ] }
**注意:**將 arn:aws:ssm:region:account-id:parameter/parameter-name 替換為您的參數的 ARN,並將 arn:aws:kms:region:account-id:key/kms-key-id 替換為您的 AWS Key Management Service (KMS) 金鑰。
將 IAM 政策附加到 Amazon ECS 任務執行角色。
存取您的 Amazon ECS 任務密碼
您可以將敏感資料 (例如 API 金鑰或憑證) 作為參數或環境變數傳遞。首先,修改您的 Amazon ECS 任務定義,以包含您的環境變數或密碼對應。
任務定義中的密碼對應範例:
{ "name": "MY_SECRET", "valueFrom": "arn:aws:secretsmanager:region:account-id:secret:secret-name" }
任務定義中的 containerDefinitions 範例:
- name: my-container environment: - name: Example_PASSWORD valueFrom: arn:aws:ssm:us-west-2:123456789012:parameter/my-app/example-password
使用 CI/CD 來管理您的密碼
在持續整合和持續交付 (CI/CD) 部署期間,使用環境變數動態傳遞密碼。從部署指令碼中的 Secrets Manager 或 Parameter Store 取得密碼。請勿在任務定義中對密碼進行硬編碼。而是使用參數或預留位置。如需了解更多資訊和最佳實務,請參閱使用 AWS Secrets Manager、AWS KMS 和 AWS Certificate Manager 強化 DevOps 管線並保護資料。
例如,如果您使用 AWS CodePipeline,請設定一個建置步驟,使用 AWS CLI 來取得密碼:
bashCopy codeaws secretsmanager get-secret-value --secret-id secret-name --query 'SecretString' --output text
**注意:**將 secret-name 替換為您的密碼。
對密碼管理的問題進行疑難排解
如果您在 Amazon ECS 中使用密碼時發生問題,請採取以下措施:
-
確保 Amazon ECS 任務的 IAM 角色具有正確的 secretsmanager:GetSecretValue 或 ssm:GetParameter 權限。
-
如果您收到拒絕錯誤,請確保 IAM 政策已附加到正確的 Amazon ECS 任務執行角色。另外,請確認 IAM 政策的密碼 ARN 是準確的。
-
如果 Amazon ECS 無法取得密碼,請確認您使用的是正確的 AWS 區域和密碼。若要測試密碼,請在 Amazon ECS 外部執行以下 get-secret-value 命令:
aws secretsmanager get-secret-value --secret-id secret-name --region region-code**注意:**將 secret-name 替換為您的密碼,並將 region-code 替換為您的區域。
- 語言
- 中文 (繁體)

相關內容
已提問 3 年前
已提問 2 年前
已提問 3 年前
已提問 2 年前