项目展示
首页 / Our Projects /在 AWS 上建立数据边界:要求服务仅在预期网络内创建 安全博客在 AWS 上建立数据边界:要求服务仅在预期网络内创建 安全博客
在 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 安全新闻吗?请在 Twitter 上关注我们。
Harsha Sharma
Harsha 是 AWS 纽约的首席解决方案架构师。他于 2016 年加入 AWS,主要与全球金融服务客户合作,设计和开发 AWS 上的架构,以支持他们的 AWS Cloud 之旅。
标签 最佳实践、安全博客、技术操作指南
搜索
最新内容
释放神经多样性人才的潜力 培训与认证博客
超过11000人受到Datavant泄露事件的影响 媒体
涉及Illumina iSeq 100 DNA测序仪缺陷的恶意软件注入的可能性 媒体
提升数据库性能,使用 Amazon RDS 专用日志卷 数据库博客
将 Db2 数据迁移到 Amazon RDS 的数据迁移策略 数据库博客
如何Indeed在Amazon SageMaker上构建和部署微调的LLM 机器学习博客