【问题标题】:AWS, Beanstalk + Worker Tier + Cron and security in the Task URLsAWS、Beanstalk + Worker Tier + Cron 和任务 URL 中的安全性
【发布时间】:2017-06-25 00:29:00
【问题描述】:

我正在改造我的网络应用程序以使其适应 Beanstalk 和 Workers 希望我定义 cron 任务的方式:

我知道我必须实现一个执行任务的 URL

在我看来这是一个很大的安全漏洞,任何了解任务 URL 的人都可以调用该任务。

将一些安全包装器添加到这些任务 URL 的常用模式是什么?

【问题讨论】:

    标签: amazon-web-services cron worker amazon-elastic-beanstalk


    【解决方案1】:

    我回来时也经历过同样的事情。但是,如果您查看文档,您会发现它谈到了以下内容(第三点除外)。

    1. 确保该 URL 只接受来自 localhost 和 IP 的请求。
    2. 使该 URL 只接受 POST 请求
    3. 最后但并非最不重要的数据应符合您选择的任何格式。我认为 JSON 是默认的。

    因为它只接受来自本地主机的请求,所以它是安全的。如果您想实现额外的安全性,您也可以检查标头以仅允许某些代理。

    【讨论】:

    • 我正在向这些端点添加一个安全步骤,例如request.host == "localhost"。但我有一个顾虑:我可以模拟我的笔记本电脑请求来自localhost 并用/etc/hosts 技巧欺骗服务器吗?
    • 还可以添加IP限制,只允许localhost IP 127.0.0.1。
    【解决方案2】:

    您应该能够简单地锁定分配给 Elastic Beanstalk 工作程序层环境的安全组,以便它只接受来自工作程序层中其他 EC2 实例的传入请求。换句话说,安全组应该有一个单一的入站规则,源类型为“自定义”,源值是安全组的 ID。然后,您可以确定只有工作层守护进程可以发布到工作层任务 URL。

    【讨论】:

    • 问题是相同的代码将部署到我的生产网络应用程序实例中,并且必须具有公共访问权限。
    • 安全组是 AWS 网络级别设置。这不是代码更改。所以每个EB环境下的代码应该是一样的。
    • 我的意思是任务 URL 也将在我的生产服务器中公开(因为代码相同)并且在该服务器上我无法限制访问。
    • 啊,我明白你现在在说什么了。我真的不希望该 URL 完全暴露在非工作服务器上。您能否以某种方式更改服务器配置以仅基于环境变量启用该端点?在不了解您使用的编程语言和服务器的更多信息的情况下,我不知道如何推荐更具体的内容。
    • 我正在测试@nicholasnet's solution 我认为Make sure that URL only accepts request from localhost 会成功
    猜你喜欢
    • 2016-09-14
    • 2017-09-04
    • 2014-08-16
    • 2014-11-27
    • 2016-06-30
    • 2016-01-22
    • 2016-02-14
    • 2016-10-07
    • 1970-01-01
    相关资源
    最近更新 更多