【问题标题】:How to set up an SSL reverse proxy within Amazon ECS?如何在 Amazon ECS 中设置 SSL 反向代理?
【发布时间】:2016-04-18 08:47:33
【问题描述】:

我在 Docker 容器中有一个 Web 应用程序,我想通过另一个容器(运行 NGINX)代理它,该容器暴露给外界并且只处理 HTTPS 流量。两个容器将由 ECS 托管在同一个 EC2 实例上。让 NGINX 容器从 S3 或 IAM 检索 SSL 私钥的最佳方法是什么?

请注意,出于安全原因,我不想在 Docker 映像中包含私钥。我想在创建容器时从 S3 或 IAM 检索私钥,从环境变量中获取 AWS 用户凭证。

Amazon Elastic Beanstalk has a nice way to achieve this,但我认为 ECS 没有类似的东西。我想我需要编写一个 Docker 入口点(或包装 Nginx 命令)才能安装 S3/IAM 客户端,然后使用环境中的凭据下载密钥。 AWS 是否提供了更好的方法?似乎 Elastic Load Balancing 是一种解决方案,但我找不到任何有关 LB 和 EC2 实例之间的安全措施的信息。

【问题讨论】:

  • 我会说在带有 ECS EC2 实例的 VPC 内使用带有 SSL 处理的外部 ALB 是一个非常安全的解决方案,但这完全取决于您的要求。

标签: amazon-web-services amazon-iam amazon-ecs


【解决方案1】:

这个问题有几个部分,

将 Nginx 和 Web 应用程序放在同一个实例上可以通过将两个容器定义为同一个 ecs 任务的一部分来实现。我建议创建一个从 nginx 到 webapp 容器的 docker 链接。这样可以避免将 webapp 容器端口暴露在外部。唯一暴露给主机的端口是 nginx 端口。

在容器启动时安全地检索密钥的方法之一是让自定义 shell 脚本在容器上启动 nginx 服务。为此,您需要构建自己的 docker 容器。在您的 docker build 文件中,使用自定义 shell 脚本定义容器的开始。在 shell 脚本中,您可以使用 aws cli 从 s3 检索文件的逻辑。取回后就可以启动nginx服务了。使用 aws cli 将允许您使用 ec2 实例上可用的凭证。 如果您的基础 docker 映像没有 aws cli,则需要添加它。

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多