Remediation
Move Sensitive Data to AWS Secrets Managerβ
Using the AWS CLIβ
Sensitive data should be stored securely and referenced in ECS Task Definitions via the secrets parameter rather than embedding it in environment variables.
-
Store the secret in AWS Secrets Manager
aws secretsmanager create-secret \
--name "{{app/db_password}}" \
--secret-string "{{secret-password}}" -
Retrieve the existing task definition
aws ecs describe-task-definition \
--task-definition {{family-or-full-arn}} \
--query 'taskDefinition' > task-def.json -
Update
task-def.jsonMove the sensitive entry from
environmenttosecrets.Before:
"environment": [
{ "name": "{{DB_PASSWORD}}", "value": "{{secret-password}}" }
]After:
"environment": [],
"secrets": [
{ "name": "{{DB_PASSWORD}}", "valueFrom": "{{arn:aws:ssm:region:account:parameter/app/db_password}}" }
] -
Register the updated task definition
aws ecs register-task-definition --cli-input-json file://task-def.json -
Update the ECS service to use the new task definition revision
Ensure the Task Execution Role has the required permission to read the secret:
secretsmanager:GetSecretValue