[英]Amazon ECS - Permission denied when using IAM role on Docker entrypoint
我正在尋找一種將機密/證書注入 Amazon ECS 容器的方法。 就我而言,它是一個簡單的 nginx 容器。
我一直在關注這篇文章,使用 AWS Parameter Store: https : //aws.amazon.com/blogs/compute/managing-secrets-for-amazon-ecs-applications-using-parameter-store-and-iam-roles - 任務/
這是基本要點:
文件
FROM nginx:1.16.0
...
ENTRYPOINT ["/var/run/fetch.sh", "nginx", "-g", "daemon off;"]
獲取.sh
aws ssm get-parameter \
--name ${key} \
--with-decryption \
--region us-east-1 \
--output text \
--query Parameter.Value
{
"portMappings": [
{
"hostPort": 0,
"protocol": "tcp",
"containerPort": 443
}
],
"cpu": 0,
"environment": [],
"mountPoints": [],
"memoryReservation": 256,
"memory": 512,
"volumesFrom": [],
"image": "url/some_image:latest",
"essential": true,
"name": "my-container"
}
我可以通過 docker exec 手動運行來獲取正在運行的任務上的密鑰,但是在啟動任務時我無法獲取它們(特別是當我在入口點附加腳本時,如上面的代碼一樣)。
ECS 任務是否可以訪問入口點的 IAM 角色? 它何時實際承擔 IAM 角色?
您現在可以使用任務定義的containerDefinitions
中的secrets
輕松地從 SSM 或 Secrets Manager 注入機密。 使用此解決方案,您不必再運行/管理您的自定義腳本來獲取您的機密。
它看起來像這樣:
{
"containerDefinitions": [{
"secrets": [{
"name": "environment_variable_name",
"valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
}]
}]
}
{
"containerDefinitions": [{
"secrets": [{
"name": "environment_variable_name",
"valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
}]
}]
}
查看AWS 推出對 Amazon Elastic Container Service 的秘密支持和指定敏感數據。
您必須具有任務執行角色並在您的任務定義中引用它。 示例政策:
{
"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"
]
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.