Amazon web services 在ECS服务中将AWS凭据存储在何处

Amazon web services 在ECS服务中将AWS凭据存储在何处,amazon-web-services,amazon-ecs,Amazon Web Services,Amazon Ecs,我有一个ECS服务,需要AWS凭据。我使用ECR存储docker映像和jenkins映像,这些映像仅在VPN连接构建映像时可见 我认为有两种可能向该服务提供AWS凭据 将它们存储为Jenkins secret,并在构建期间插入docker映像 在创建ECS任务定义时,使其成为环境的一部分 什么更安全?还有其他的可能性吗 首先,在AWS内部工作时不应使用AWS凭据,应分配或服务,而不是将凭据传递给docker build或task definition 使用Amazon ECS任务的IAM角色,您

我有一个ECS服务,需要AWS凭据。我使用ECR存储docker映像和jenkins映像,这些映像仅在VPN连接构建映像时可见

我认为有两种可能向该服务提供AWS凭据

  • 将它们存储为Jenkins secret,并在构建期间插入docker映像
  • 在创建ECS任务定义时,使其成为环境的一部分

  • 什么更安全?还有其他的可能性吗

    首先,在AWS内部工作时不应使用AWS凭据,应分配或服务,而不是将凭据传递给docker build或task definition

    使用Amazon ECS任务的IAM角色,您可以指定 可以由任务中的容器使用。申请书必须签署 AWS API请求具有AWS凭据,此功能提供 管理应用程序要使用的凭据的策略, 类似于AmazonEC2实例概要文件提供的方式 EC2实例的凭据

    因此,有时底层应用程序的设计方式不能使用角色,因此在本文中,我建议将ENV存储在任务定义中,但从何处获取ENV的值

    任务定义支持两种处理ENV的方法

    • 纯文本作为直接值
    •  使用“valueFrom”属性定义ECS任务
    以下是任务定义的一个片段,显示了引用任务时的格式

    这是最安全的,因此与任务定义中的纯文本ENV或Dockerfile中的ENV相比,这是更好的方法

    你可以阅读更多和更多


    但要使用这些,您必须提供任务定义权限才能访问systems manager参数存储。

    是否有某些原因导致您不能使用IAM角色而不是硬编码凭据?
    {
      "containerDefinitions": [{
        "secrets": [{
          "name": "environment_variable_name",
          "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
        }]
      }]
    }