【问题标题】:Why won't Boto commands run in UserData when outbound traffic permissions are locked down?为什么当出站流量权限被锁定时,Boto 命令不会在 UserData 中运行?
【发布时间】:2015-08-26 11:21:58
【问题描述】:

我在与 AutoScale 组关联的 AWS 启动配置中有一个 UserData 脚本(在 python 中)。当新 (ubuntu) 实例启动时,此脚本会在它们上运行以执行所需的任何设置。

直到现在,我的安全组配置都比较松散。允许从这些实例到 Internet 上任何地方的出站流量。 UserData 脚本运行良好。但我只是关闭了该出站规则以提高安全性。现在 UserData 脚本随机根本不会执行,或者有时当它执行时,它会失败。我可以通过检查/var/log/cloud-init-output.log 文件看到这一点。有没有人见过这种行为?有什么建议的解决方案吗?

当脚本失败时,我可以看出它在某些执行网络发现的 Boto 调用(例如 boto.vpc.VPCConnection().get_all_vpcs())上失败了。如果出站流量规则阻止它查询此信息,这将失败似乎是合理的。但是我应该将什么 CIDR 和端口添加到允许 Boto 执行此操作的安全组规则中?

以下是我的安全组的出口规则不起作用时的样子。 IP 地址很敏感,所以我把它们涂黑了。

以下是我的安全组的 Egress 规则在运行时的样子。正如你所看到的,我允许它向全世界开放。我觉得那是不安全的。我想把它锁起来。

失败时可以看到/var/log/cloud-init-output.log文件here

你可以看到关联的/var/log/cloud-init.log文件here

【问题讨论】:

  • 你能分享你在安全组上使用的出站规则吗?
  • 你能发布你的用户数据脚本吗?
  • 也分享云端初始化日志中的错误
  • 我认为它只需要 443。我也不会那么担心出站流量,除非您认为您不能相信在您的实例上运行的应用程序不会打开与坏事。
  • 我已在原始帖子中添加了/var/log/cloud-init-ouput.log 文件(敏感数据已编辑)。不幸的是,我不能发布 UserData 脚本本身,因为它是专有的。

标签: python amazon-web-services boto


【解决方案1】:

默认情况下,Amazon EC2 中的安全组配置有:

  • 无入站访问
  • 完全出站访问权限

入站访问需要最大程度的保护,因为这是一个实例可能会通过它受到威胁的媒介。只打开您需要的端口,最好打开最小范围的 IP 地址。例如,端口 80 可以向整个 Internet 开放,但将 SSH/RDP 的 22/3389 锁定到您将使用的 IP 地址。

出站访问 通常可以安全地打开,因为它仅适用于从实例本身发起的流量。如果您知道实例将仅用于有限的目的,则可以减少协议和 IP 地址范围。

如果您对保持出站规则完全开放不满意,那么您将不得不发现让您的应用正常运行所需的协议和 IP 地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多