甘南州屿庙神教35号
办公时间:上午9:00-下午6:00

项目展示

首页 / Our Projects /在 AWS 上建立数据边界:要求服务仅在预期网络内创建 安全博客

在 AWS 上建立数据边界:要求服务仅在预期网络内创建 安全博客

2026-01-27 13:33:54

在 AWS 上建立数据边界:要求服务仅在预期网络内创建

重点提示

在本文中,我们探讨了如何通过防范性控制措施,确保 AWS 资源仅在预期的网络内被创建和访问。这不仅有助于增强资源的安全性,还能确保只有可信的身份可以访问受保护的数据。

欢迎阅读《在 AWS 上建立数据边界》系列的第五篇文章。在这个系列中,我们讨论了一系列防范性护栏如何创建一个始终开启的边界,以确保您的可信身份通过预期网络访问可信资源。在之前的文章中,我们强调了防止来自意外位置的访问的重要性,即便对于授权用户。例如,您通常不会希望企业内部的非公开数据在企业网络之外被访问。本文将演示如何利用防范性控制措施来确保您的资源部署在 Amazon 虚拟专用云Amazon VPC 中,从而有效执行网络边界控制。同时,我们还将探讨可以用来检测不遵循此要求的情况的侦测性控制措施。

让我们先快速回顾一下数据边界的基本概念,以图1为参考。客户通常希望建立一个高层次的边界,以防止不受信任的实体进入并阻止数据输出。边界定义了客户在其 AWS 环境中期望的访问方式。这涉及到身份、资源和网络之间的访问模式,所有这些访问模式都应当被封锁。基于这三个要素,可以明确边界的目标:仅当身份被信任、资源被信任且网络是预期的,才能被允许访问。如果这三个条件中的任何一个为假,则边界内的访问就是意外的,应当被拒绝。边界是由对身份、资源和网络实施的控制构成,以确保必要条件始终为真。

飞兔加速器

场景分析

接下来,让我们考虑一种场景,以理解本文解决的问题。假设图2所示的场景中,一个应用程序需要通过其临时的 AWS 身份与访问管理 (IAM) 凭证通过 Amazon S3 VPC 端点访问 Amazon 简单存储服务 (Amazon S3) 桶。

根据我们在本系列之前的文章中了解到的信息,可以使用以下功能集构建网络边界,以实现对这个示例场景的控制目标。

控制目标实施方式适用的 IAM 功能我的身份只能在预期网络内访问资源。例如,在图2中,只有我的应用程序在我的预期网络空间内时,其临时凭证才能访问我的 S3 桶。服务控制策略 (SCP)awsSourceIp awsSourceVpc awsSourceVpce我的资源只能从预期网络访问。例如,在图2中,我的 S3 桶只能从我的预期网络空间访问。基于资源的策略awsSourceIp awsSourceVpc awsSourceVpce

但是某些 AWS 服务允许不同的网络部署模型,例如可以选择将服务资源关联到 AWS 管理的 VPC 或客户管理的 VPC。例如, AWS Lambda 函数始终在 Lambda 服务AWS 管理的 VPC拥有的 VPC 内运行,并且默认情况下未连接到您帐户中的 VPC客户管理的 VPC。更多信息请参阅 将 Lambda 函数连接到您的 VPC。

这意味着,如果您的应用代码作为一个未连接到您的 VPC 的 Lambda 函数部署,则该函数无法在强制的标准网络边界控制下访问您的资源。让我们通过图3更好地理解这种情况,其中一个 Lambda 函数未配置为连接到客户 VPC。由于边界在之前的表格中已经定义,只允许从已知网络段客户 VPC 和 IP CIDR 范围访问桶,并且仅允许与 Lambda 函数关联的 IAM 角色从已知网络访问桶,因此该函数无法通过互联网访问您的 S3 桶。该函数也无法通过 S3 VPC 端点访问您的 S3 桶,因为该函数未与客户 VPC 关联。最后,除非其他补偿控制措施到位,否则该函数可能能够访问不受信任的资源,因为不会强制执行与 VPC 端点策略一起的标准数据边界控制,这可能不符合贵公司的安全要求。

这意味着,获取Lambda函数以遵循您的数据边界,必须与您的网络片段客户 VPC关联,如图4所示。

为了确保您的 Lambda 函数部署到您的网络中,以便在数据边界控制范围内访问资源,最好有一种方法来自动防止部署或配置错误。此外,如果您在成百上千个帐户中大规模部署 Lambda 函数,您需要一种有效的方法来强制这些函数遵循您的数据边界。

为了避免应用团队或开发人员创建未与您的 VPC 关联的函数,您可以使用 lambdaVpcIds 或 lambdaSubnetIds IAM 条件键有关更多信息,请参见 为 VPC 设置使用 IAM 条件键。这些键允许您仅在满足 VPC 设置时创建和更新函数。

在下面的 SCP 示例中,受以下 SCP 策略约束的 IAM 实体只有在函数与 VPC客户 VPC关联时才能创建或更新 Lambda 函数。当未指定客户 VPC 时,lambdaVpcIds 条件键的值为空也就是 null因此该策略将拒绝创建或更新该函数。有关 Null 条件运算符如何工作的详细信息,请参见 检查条件键存在性的条件运算符。

json{ Version 20121017 Statement [ { Sid EnforceVPCFunction Action [ lambdaCreateFunction lambdaUpdateFunctionConfiguration ] Effect Deny Resource Condition { Null { lambdaVpcIds true } } } ]}

此外,您还可以使用前面示例的变化,通过这些条件键创建更细粒度的控制。有关更多示例,请参见 使用条件键控制 VPC 设置的示例策略。

AWS 的其他服务如 AWS Glue 和 Amazon SageMaker也具有类似的功能行为,并提供相似的条件键。例如,glueVpcIds 条件键允许您仅在您的 VPC 中管理 AWS Glue 作业的创建。有关注意事项及示例策略,请参见 使用条件键控制设置的控制策略。

同样, Amazon SageMaker Studio、SageMaker 笔记本实例、SageMaker 训练 和 已部署的推理容器 默认可以通过互联网访问或启用。可以使用 sagemakerVpcSubnets 条件键限制在 VPC 中启动这些资源。有关更多信息,请参见 Amazon SageMaker 的条件键、从 VPC 连接资源 和 在无互联网模式下运行训练和推理容器。

侦测性控制

AWS 最佳架构框架 建议采用多重安全控制的深度防御方法见 安全支柱。因此,除了在本文中讨论的基于条件键的防范性控制外,您还应考虑使用 AWS 原生的完全托管治理工具,以帮助您管理环境中已部署资源及其对数据边界的符合性见 AWS 的管理与治理。

例如,AWS Config 提供了管理规则,以检查 Lambda 函数是否在 VPC 内 和 SageMaker 笔记本是否在 VPC 内。您还可以使用 AWS Security Hub 的内置检查来检测和整合发现,例如 [Lambda3] Lambda 函数应位于 VPC 内 和 [SageMaker2] SageMaker 笔记本实例应在自定义 VPC 中启动。

您还可以对目前尚未提供内置防范性控制的 AWS 服务使用类似的侦测性控制。例如, OpenSearch 服务 有一项 AWS Config 管理规则 仅在 VPC 内的 OpenSearch 和 Security Hub 检查 [Opensearch2] OpenSearch 域应在 VPC 中。

结论

在本文中,我们讨论了如何确保特定 AWS 服务资源只能在符合您的数据边界的情况下创建。我们使用了一个示例场景深入探讨了 AWS Lambda 及其网络部署选项。然后,我们使用 IAM 条件键作为防范性控制以强制创建符合我们安全标准的可预期 Lambda 函数。我们还讨论了在相同概念适用时,其他具有类似行为的 AWS 服务。最后,我们简要讨论了一些 AWS 提供的管理规则和安全检查,您可以将其作为补充侦测性控制,以确保您的防范性控制按预期生效。

在 AWS 上建立数据边界:要求服务仅在预期网络内创建 安全博客

额外资源

以下是一些额外资源,您可以利用它们进一步探索数据边界。

数据边界策略示例在 AWS 上建立数据边界AWS 上的数据边界数据边界研讨会

如果您对本文有任何反馈,请在 评论 部分提交。如果您对本文有任何疑问,请 联系 AWS 支持。

想要获取更多 AWS 安全新闻吗?请在 Twitter 上关注我们。

Harsha Sharma

Harsha 是 AWS 纽约的首席解决方案架构师。他于 2016 年加入 AWS,主要与全球金融服务客户合作,设计和开发 AWS 上的架构,以支持他们的 AWS Cloud 之旅。

标签 最佳实践、安全博客、技术操作指南