Kanji
・云架构工程师 / 自由职业 ・1993年出生 ・爱媛县出身 / 现居东京都涩谷区 ・5年 AWS 实战经验 个人资料详情
目录
Amazon VPC(虚拟私有云)是一项服务,可让您在 AWS 内创建私有、隔离的网络。借助 VPC,您可以在您定义的虚拟网络中安全地运行 AWS 资源。VPC 的关键组件包括子网、路由表、Internet 网关和 NAT 网关。
根据 AWS 的说法,必须在 VPC 内启动(具有私有 IP 地址)的资源包括 EC2 实例、RDS 实例和弹性负载均衡器 (ELB)。 某些无服务器资源(例如 S3 存储桶和 DynamoDB 表)无法在 VPC 内启动。但是,您仍然可以使用互联网网关或 VPC 终端节点从 VPC 内访问这些资源。 某些资源(例如 Lambda 函数和 Glue 作业)可以在 VPC 内部或外部启动。应根据您的安全和应用程序需求来决定在何处启动这些资源。 下表列出了 AWS 服务、其资源类型以及是否支持 VPC 部署。
<表注>
为了安全起见,AWS Security Hub 建议在 VPC 内运行 Lambda 函数([Lambda.3] 控件)。在 VPC 中运行 Lambda 函数可以提高安全性和网络控制,如下所述:
在 VPC 中部署资源可以提高安全性和网络控制。 它还提供跨多个可用区的可扩展性和高可用性。 您可以自定义 VPC 部署以满足您的应用程序需求。 来源: Lambda Security Hub 控件 - AWS Security Hub
在 VPC 中部署资源可以提高安全性和网络控制。 它还提供跨多个可用区的可扩展性和高可用性。 您可以自定义 VPC 部署以满足您的应用程序需求。
来源: Lambda Security Hub 控件 - AWS Security Hub
在 VPC 内运行 Lambda 函数等无服务器资源的好处包括:
如果 Lambda 函数遭到破坏,这些措施有助于降低风险。然而,无服务器资源通常比 EC2 实例的风险更低,因为它们不允许直接文件上传或登录。
以下流程图可帮助您决定是否在 VPC 内启动无服务器资源。
VPC子网的结构应基于路由和安全要求。常见的子网类型包括:
根据您组织的策略和系统要求选择子网类型。
VPC 的 CIDR 块定义了其 IP 地址范围。连接到本地或外部系统时,请仔细选择 CIDR 块以避免冲突。如果您之前在电子表格中管理 IP 范围,请考虑使用 AWS IPAM(IP 地址管理器)进行更好的管理。 如果您计划将来添加或扩展 VPC,请提前预留更大的 CIDR 块。如果您超出了 IP 范围,您可能需要设计系统,使网络保持隔离(例如,VPC 到 VPC 或 VPC 到本地不连接)。
VPC 中 AWS 资源的名称解析取决于源和目标。考虑以下场景:
两个关键点:
VPC 中的资源可以具有公共 DNS 名称。只要他们能够访问互联网,名称解析就可以在本地或互联网上进行。如果您使用 Route 53 私有托管区域进行自定义 DNS,则无法从 Internet 解析这些名称。要启用公共 DNS,请在 VPC 设置中设置“启用 DNS 主机名”和“启用 DNS 支持”。
要连接 VPC 外部的 DNS 服务器,请使用 Route 53 解析器终端节点。这些允许 VPC 资源向外部服务器发送 DNS 查询。有两种类型:
入站终端节点:接受来自本地 DNS 服务器的 DNS 查询(用于从本地解析 VPC 资源名称)
出站终端节点:将 DNS 查询从 VPC 资源发送到本地 DNS 服务器(用于从 VPC 解析本地资源名称)
相关资源
将入站 DNS 查询转发到 VPC - Amazon Route 53
将出站 DNS 查询转发到您的网络 - Amazon Route 53
如果您使用 Active Directory,您还可以使用出站端点将 DNS 查询发送到 AD DNS 服务器。
解析器端点按端点计费:
每个 ENI 0.125 美元/小时 来源: 定价 - Amazon Route 53 |AWS
每个 ENI 0.125 美元/小时
来源: 定价 - Amazon Route 53 |AWS
虽然并不昂贵,但随着 VPC 数量的增加,成本也会增加。使用多个帐户时请考虑合并解析器端点。
下表按源和目标总结了名称解析选项:
1:使用出站端点 2:使用入站端点
有很多选项,但为了获得高可用性,请使用专用于每个环境的 DNS 服务器。对于 VPC 资源,请使用 Amazon Route 53 Resolver;对于本地资源,请使用本地 DNS 服务器。如果您的集成程度最低或想要节省成本,请考虑其他选择。
VPC流日志记录VPC内的网络流量信息。您可以将 VPC 流日志发送至:
根据您的日志分析和监控需求选择目的地。由于VPC流日志通常用于长期审计,因此S3是常见的选择。如果您有外部日志平台,请使用 Kinesis Data Firehose 传输日志。如需实时监控或分析,建议使用CloudWatch Logs。
日志可以存储在拥有VPC的账户中,也可以存储在中央日志聚合账户(日志归档账户)中。如果您的组织有专用日志帐户,请将日志发送到那里。
VPC 终端节点允许 VPC 中的资源直接连接到 AWS 服务,而无需使用公共 Internet。通过 VPC 终端节点策略,您可以控制可访问哪些 AWS 服务和资源,从而提高安全性并降低数据泄露的风险。
有时,使用 VPC 终端节点只是为了避开公共互联网,但这并不总是必要的。通过互联网网关的流量实际上保留在 AWS 的专用网络上,不会遍历公共互联网,因此安全性并不总是需要 VPC 终端节点。
如果两个实例使用公共 IP 地址进行通信,或者如果一个实例与公共 AWS 服务终端节点进行通信,则流量是否通过 Internet 传输? 否。使用公共 IP 地址时,AWS 托管的实例和服务之间的所有通信都使用 AWS 专用网络。 源自 AWS 网络并发往 AWS 网络的数据包保留在 AWS 全球网络上,进出 AWS 中国区域的流量除外。 所有流经 AWS 全球网络的数据在离开安全设施之前都会在物理层自动加密。还有额外的加密层,例如 VPC 跨区域对等和 TLS 连接。 来源: 常见问题解答 - Amazon VPC |AWS
如果两个实例使用公共 IP 地址进行通信,或者如果一个实例与公共 AWS 服务终端节点进行通信,则流量是否通过 Internet 传输? 否。使用公共 IP 地址时,AWS 托管的实例和服务之间的所有通信都使用 AWS 专用网络。 源自 AWS 网络并发往 AWS 网络的数据包保留在 AWS 全球网络上,进出 AWS 中国区域的流量除外。
所有流经 AWS 全球网络的数据在离开安全设施之前都会在物理层自动加密。还有额外的加密层,例如 VPC 跨区域对等和 TLS 连接。
来源: 常见问题解答 - Amazon VPC |AWS
使用 VPC 终端节点有两个主要原因:
例如,如果您通过 Site-to-Site VPN 从本地访问 AWS 服务,则 VPC 终端节点可让您直接连接,而无需使用公共互联网。对于访问 AWS 管理控制台或 S3 等操作需求,VPC 终端节点可以提高安全性。然而,在开发过程中使用许多端点可能会增加成本。
通过 VPC 终端节点策略,您可以限制对特定 AWS 服务或资源的访问。例如,以下策略仅允许访问组织内的资源,从而防止数据发送到外部帐户。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "my-org-id", "aws:ResourceOrgID": "my-org-id" } } }, { "Sid": "AllowRequestsByAWSServicePrincipals", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "*", "Resource": "*", "Condition": { "Bool": { "aws:PrincipalIsAWSService": "true" } } } ] }
为所有 AWS 服务设置 VPC 终端节点可能会增加成本和运营开销。至少,为具有较高数据泄漏风险的数据库和存储服务配置 VPC 终端节点,如下所示。
VPC 资源的责任应由组织的操作规则和安全策略来定义。典型角色包括:
这些角色可能会根据组织的规模和结构而有所不同。有时,开发人员会处理所有事情;有时,开发人员会处理所有事情。在其他情况下,网络管理员设计和构建 VPC,而开发人员则专注于应用程序。以下是网络管理员设计和构建 VPC 时角色分配的示例:
安全组通常由开发人员设计和构建,以满足系统特定的需求。在某些组织中,网络管理员负责处理安全组,但这可能会减慢开发速度。为了保持开发快速进行,开发人员通常最好自己设计和构建安全组。