【问题标题】:How to restrict internet access in a VPC with a nat gateway?如何使用 nat 网关限制 VPC 中的 Internet 访问?
【发布时间】:2021-01-23 07:10:54
【问题描述】:

我已经设置了一个具有两个子网 publicprivate 的 VPC。 VPC 中有许多 lambda,其中一些需要 Internet 访问。所以我在 VPC 上添加了 NAT 网关。但是,它使每个 lambda 都能够访问 Internet。如何使用 NAT 网关控制 VPC 中哪些 lambda 可以访问互联网?

【问题讨论】:

    标签: amazon-web-services amazon-vpc


    【解决方案1】:

    简单回答:任何连接到公共子网的 AWS Lambda 函数都将访问互联网。

    这是因为公有子网的路由表不通过 NAT 网关发送流量,Lambda 函数本身无法使用 Internet 网关访问 Internet。

    【讨论】:

    • 我确实需要一些 lambdas 才能访问互联网。所以我在 VPC 中有一个互联网网关。
    • 是的,没关系。任何需要 Internet 访问的 Lambda 函数都应连接到私有子网。应该访问互联网的任何设备都应该连接到公共子网。
    【解决方案2】:

    NAT 网关没有安全组 (SG) 也没有访问策略。因此,您无法使用 NAT 控制对 Internet 的访问。但是您可以考虑一些替代措施:

    • 创建一个没有路由的私有子网到 NAT 并将您的 lambda 函数放在那里。如果没有到 NAT 的路由,该子网中的任何内容都无法与互联网通信。
    • 使用自定义传出规则创建一个特殊的 SG,例如只允许传出到您的 VPC 的 CIDR 或只允许它们与之通信的 SG 的传出流量。
    • 仅为 lambda 函数创建专用私有 VPC,并将其与您的主 VPC 对等。 VPC 对等互连是不可传递的,这意味着您的函数将无法使用来自主 VPC 的 NAT。

    【讨论】:

    • 如果我使用第一个选项,那么我将不得不在 VPC 中创建三个子网。一个没有到 NAT 的路由的专用设备。一个带有到 NAT 的路由的私有和一个公共。对吗?
    • @是的,没错。并且您将在没有 nat 的私有子网中放置 lambda 函数。
    【解决方案3】:

    我假设 lambda 需要访问部署它们的子网中的某些资源。

    如果是这种情况,那么我建议您创建一个具有所需设置的安全组,并将该安全组分配给您要限制访问的所有 lambda。

    如果不是这种情况,您可以简单地在 lambda 级别删除 VPC 关联。

    【讨论】:

    • 是的,你是对的。这是我的用例。这意味着我不能使用 NAT 网关来控制谁可以访问互联网?
    • 我认为你在制造一些混乱。 NAT 所做的只是允许私有子网中的实例与 Internet 通信。您正在处理 lambda,而不是实例。
    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 2021-05-30
    • 2021-01-31
    • 2016-05-29
    • 2014-05-26
    • 2017-07-20
    • 2018-06-23
    • 2019-03-16
    相关资源
    最近更新 更多