我有一个ECS服务,它需要AWS凭据。我使用ECR存储停靠映像和jenkins可见,仅用于VPN连接来构建映像。
我看到了向服务提供AWS凭据的两种可能性。
什么更安全?还有其他的可能性吗?
发布于 2019-09-11 16:11:06
首先,您不应该在AWS内部工作时使用AWS凭据,您应该分配角色到任务定义或服务,而不是将凭据传递给docker或任务定义。
使用用于Amazon任务的IAM角色,您可以指定一个IAM角色,该角色可以由任务中的容器使用。应用程序必须用AWS凭据对其API请求进行签名,此特性提供了一种管理应用程序使用的凭据的策略,类似于Amazon实例配置文件向EC2实例提供凭据的方式。
因此,有时底层应用程序的设计方式不能使用角色,所以在本文中,我建议将ENV存储在任务定义中,但同样地,从哪里获得ENV的值?
任务定义支持两种处理ENV的方法,
下面是任务定义的片段,显示引用系统管理器参数存储参数时的格式。
{
"containerDefinitions": [{
"secrets": [{
"name": "environment_variable_name",
"valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
}]
}]
}这是最安全和AWS文档推荐的方法的,所以这是一个更好的方法,与在任务定义内的纯文本或Dockerfile中的ENV相比。
您可以阅读更多的这里和系统.管理器.参数存储。
但是要使用这些,您必须提供对访问系统管理器参数存储的任务定义的权限。
https://stackoverflow.com/questions/57892046
复制相似问题