传递敏感环境变量的推荐方法是什么,例如密码,到 亚马逊ECS 任务?使用Docker Compose,我可以使用 仅键的环境变量,这导致从OS环境中读取值。我看不到任何相应的方法 ECS任务定义 然而。
传递敏感环境变量的推荐方法是什么,例如密码,到 亚马逊ECS 任务?使用Docker Compose,我可以使用 仅键的环境变量,这导致从OS环境中读取值。我看不到任何相应的方法 ECS任务定义 然而。
在您发布的任务定义链接中,有一个“环境”部分,允许您执行此操作。它们成为容器内的环境变量。
如果您的意思是您希望将信息保留在任务定义之外,并且该任务可以引用它,则不能。在这种情况下,您最好的选择是让您的容器从外部源获取该信息,而不是让ECS任务配置尝试引用它。
您可以使用 参数存储 存储变量。如果你将它们存储为 SecureString
,这些值将被加密。
您可以在任务定义中将它们作为环境变量引用。
您需要在容器启动脚本中检索它们
value_from_parameter_store =`aws ssm get-parameter --name $parameter_store_key --with-decryption --output text --query Parameter.Value --region $REGION `
你也可以提一下 parameter_store_key
作为环境变量。这样你就可以使用了 $parameter_store_key
例
Dockerfile:
FROM ubuntu
//some other steps
CMD ["sh","/startup.sh"]
启动脚本:
#! /bin/bash
export db_password =`aws ssm get-parameter --name $parameter_store_key --with-decryption --output text --query Parameter.Value --region $REGION `
// Do other stuff and use this password
将参数放入SSM:
aws ssm put-parameter --name 'db_password' --type "SecureString" --value 'P@ssW%rd#1'
Docker运行命令:
docker run -e parameter_store_key=db_password -e REGION=us-east-1 <docker_image>
在您发布的任务定义链接中,有一个“环境”部分,允许您执行此操作。它们成为容器内的环境变量。
如果您的意思是您希望将信息保留在任务定义之外,并且该任务可以引用它,则不能。在这种情况下,您最好的选择是让您的容器从外部源获取该信息,而不是让ECS任务配置尝试引用它。
您可以使用 参数存储 存储变量。如果你将它们存储为 SecureString
,这些值将被加密。
您可以在任务定义中将它们作为环境变量引用。
您需要在容器启动脚本中检索它们
value_from_parameter_store =`aws ssm get-parameter --name $parameter_store_key --with-decryption --output text --query Parameter.Value --region $REGION `
你也可以提一下 parameter_store_key
作为环境变量。这样你就可以使用了 $parameter_store_key
例
Dockerfile:
FROM ubuntu
//some other steps
CMD ["sh","/startup.sh"]
启动脚本:
#! /bin/bash
export db_password =`aws ssm get-parameter --name $parameter_store_key --with-decryption --output text --query Parameter.Value --region $REGION `
// Do other stuff and use this password
将参数放入SSM:
aws ssm put-parameter --name 'db_password' --type "SecureString" --value 'P@ssW%rd#1'
Docker运行命令:
docker run -e parameter_store_key=db_password -e REGION=us-east-1 <docker_image>
如果使用环境变量,则可以在登录AWS控制台时看到它们。 AWS已经编写了一份关于使用适当“秘密”的指南,以保护您的敏感数据。 容器在启动时将这些加载到基于内存的环境变量中。 这是一个指南: https://aws.amazon.com/blogs/security/how-to-manage-secrets-for-amazon-ec2-container-service-based-applications-by-using-amazon-s3-and-docker/
从S3中拉出环境变量的实现 马克杨 提到:
https://www.promptworks.com/blog/handling-environment-secrets-in-docker-on-the-aws-container-service