我想提高有关将密钥存储在安全位置的部署安全性。
所以我遵循了本教程:How to Manage Secrets for Amazon EC2 Container Service–Based Applications by Using Amazon S3 and Docker
但是没有CloudWatch模板(我已经有一个VPC,一个集群和其他实例)
我正在使用自己的项目(一个Flask应用程序,可以很好地处理任务定义中的 secret )
我设置了S3存储桶,VPC端点,一切正常。
但是当我的Docker容器启动时,我得到了一个错误:
download failed: s3://[my-bucket]/[my-secrets].txt to - An error occurred (403) when calling the HeadObject operation: Forbidden
这基本上是在入口点脚本运行命令时发生的
aws s3 cp s3://${SECRETS_BUCKET_NAME}/secrets.txt -
注意:我在任务定义中定义了SECRETS_BUCKET_NAME,以及其他不需要保密的变量。
首先,我认为我的实例没有正确的角色,因此出于调试目的,我为其附加了AdministratorAccess策略,但未成功。
其次,我读到Docker容器共享主机(EC2实例)的凭据,因此我直接在该实例上安装了aws-cli bundle 包,并为具有AdministratorAccess策略的用户设置了凭据。
现在,我可以在实例登录时手动运行命令
aws s3 cp s3://${SECRETS_BUCKET_NAME}/secrets.txt -
它工作正常,但我的容器仍然收到403错误。
我的EC2实例是经过amzn-ami-2017.03.c-amazon-ecs优化的镜像(奇怪的是,其中不包含aws-cli)
如果有人知道我在做什么错...
最佳答案
解决了!
我将AMI更新为较新的版本,重新设置了适当的角色,并且可以正常工作。
我注意到了一件奇怪的事情:ECS优化的Amazon的AMI不包括aws-cli。