本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SEC05-BP01 创建网络图层
根据工作负载组件的逻辑分组,按照数据敏感性和访问权限要求,将网络拓扑划分成不同的层。区分需要接受来自互联网的入站访问的组件(例如公有 Web 端点)与只需要进行内部访问的组件(例如数据库)。
预期结果:网络层是整体安全 defense-in-depth方法的一部分,可补充工作负载的身份验证和授权策略。根据数据敏感性和访问权限要求进行了分层,并采用合适的流量流动和控制机制。
常见反模式:
-
您可以在单个VPC或子网中创建所有资源。
-
在构造网络层时,您没有考虑数据敏感性要求、组件行为或功能。
-
出于所有网络层考虑,您都使用VPCs和子网作为默认值,并且不考虑 AWS 托管服务如何影响您的拓扑。
建立此最佳实践的好处:建立网络层是限制网络中不必要路径的第一步,尤其是在需要限制去往关键系统和数据的路径的情况下。通过这种方法,未经授权的操作者更难于访问您的网络,也更难导航到网络中的其它资源。彼此分隔的网络层带来的益处包括减少了检查系统的分析范围,例如进行入侵检测或恶意软件防御时。这可以减少误报的可能性和不必要的处理开销。
在未建立这种最佳实践的情况下暴露的风险等级:高
实施指导
在设计工作负载架构时,一种常见的做法是根据组件的职责将组件分隔到不同的层中。例如,Web 应用程序可以具有表示层、应用层和数据层。在设计网络拓扑时,您可以采用类似的方法。底层网络控制措施可用于强制执行工作负载的数据访问权限要求。例如,在三层 Web 应用程序架构中,您可以将静态表示层文件存储在 Amazon S3
类似于根据工作负载组件的功能用途对网络层进行建模,此时同样需要考虑所处理数据的敏感性。以 Web 应用程序为例,虽然您的所有工作负载服务可能都位于应用层内,但不同的服务会处理具有不同敏感性级别的数据。在这种情况下,根据您的控制要求,使用多个私有子网划分应用层可能是合适的 AWS 账户,每个数据敏感度级别 AWS 账户 的不同子网是相同的,甚至是不同的子网。VPCs VPCs
网络层的另一个注意事项是工作负载组件的行为一致性。仍旧以上例来说明,在应用层中,您的服务可能接受来自最终用户或外部系统集成的输入,这些输入本质上比其它服务的输入风险更大。例如文件上传、要运行的代码脚本、电子邮件扫描等。将这些服务放在各自的网络层中,可以在这些服务周围建立更可靠的隔离边界,并可以防止它们的独特行为在检查系统中产生误报提醒。
在设计中,请考虑使用 AWS 托管服务会如何影响您的网络拓扑。探索 Amazon VPC Lattice
实施步骤
-
查看您的工作负载架构。根据组件和服务提供的功能、所处理数据的敏感性及其行为,对组件和服务进行逻辑分组。
-
如果组件需要响应来自互联网的请求,请考虑使用负载均衡器或其它代理来提供公有端点。使用托管服务(例如 Amazon API Gateway
、Elastic Load Balancing)和托管公共终端节点,探索AWS Amplify 如何转移安全控制。 CloudFront -
对于在计算环境中运行的组件,例如 Amazon EC2 实例、AWS Fargate
容器或 Lambda 函数,请从第一步开始根据您的组将它们部署到私有子网中。 -
对于完全托管的 AWS 服务,例如亚马逊 DynamoDB、Ama
zon Kinesis 或SQS亚马逊 ,可以考虑VPC使用终端节点作为通过私有 IP 地址进行访问的默认终端节点。
资源
相关最佳实践:
相关视频:
相关示例: