【问题标题】:AWS ECS environment variablesAWS ECS 环境变量
【发布时间】:2019-08-17 02:18:02
【问题描述】:

我花了一些时间对此进行研究,但仍然不清楚 ECS 环境变量在安全性方面如何安全使用,但是否适用于 docker 的 ENV 和 ENV-FILE 选项?

例如:AWS ECS documentation 声明将机密添加到任务定义中,它们将可用作容器环境变量。

Docker documentation 语言相似:

使用 ENV 设置的环境变量将在从生成的映像运行容器时保持不变。您可以使用 docker inspect 查看值,并使用 docker run --env = 进行更改。

现在,我找不到答案的问题是,如果两个选项都在容器内设置环境变量(这意味着用户可以在 docker 检查时查看),那么使用 AWS ECS 环境变量有什么优势?

从 AWS 参数存储(或)SSM 获取变量(如 dbuser、dbpassword)但不将它们设置为容器环境变量(如果可能,不使用 docker entryscript)的最佳策略是什么?

【问题讨论】:

    标签: amazon-web-services docker dockerfile amazon-ecs aws-parameter-store


    【解决方案1】:

    其中一个选项是在启动期间通过远程协议(通过 HTTP API)在您的应用程序中提取变量配置。

    示例 - 我在 ECS 下运行基于 Spring Boot Java 的 docker 容器,我正在使用 Spring Cloud Config 提取我的配置,如 dbuser 和 dbpassword。当我的 Spring Boot 容器启动时,它们会使用 Spring Cloud Config 加载必要的配置并初始化应用程序。

    Spring Cloud Config 支持从 Git、Vault 甚至 AWS Parameter Store 等各种来源拉取配置。

    我的应用容器 --> Spring Cloud 配置服务器容器 --> Git/Vault/AWS 参数存储

    这是将 Spring Cloud 与 AWS Parameter Store 集成的示例指南以及一些包含示例 Github 存储库的 SO 问题。 https://blog.trifork.com/2018/07/20/integrating-the-aws-parameter-store-with-spring-cloud/

    Why Integrating Spring Cloud application with the AWS Parameter Store return no property from param store?

    现在这可能不适用于其他平台容器,但您也可以将类似的概念应用于您的平台。示例:Spring Cloud Config 公开了一个通用的 HTTP Rest API,您可以在应用程序中从该 API 中提取必要的配置,这些配置是用其他编程语言等编写的,

    【讨论】:

    • 感谢您的回答。是的,我同意 pull 是最好的方法。但是大量提倡 ECS env 的文档或在线材料是最好的方法,但就秘密/密码而言,这不是真的。所有其他类型的数据,我同意 ECS 让生活变得不那么容易。
    【解决方案2】:

    DockerFiles 可以使用 Github 上的代码签入。所以任何有权访问代码的人都可以看到这些秘密(dbUser 和 dbPassword)。万一回购意外公开,秘密也将被暴露。

    如果使用 AWS ECS 环境变量,则只有有权访问 AWS 基础设施的用户才能看到这些机密。它还可以轻松地在多种环境中运行。

    正如 Imran 建议的那样,您始终可以在流程开始之前从某个第三方配置管理器中提取配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 2021-11-12
      • 2017-09-05
      • 2020-02-05
      • 1970-01-01
      • 2017-12-17
      • 2022-01-11
      相关资源
      最近更新 更多