在 GCP 中替代 AWS 的安全组?
Alternative to AWS's Security groups in GCP?
在 Google 云平台中是否有 AWS 安全组的替代方案?
以下是我遇到的情况:
- 云 运行 中的基本 Node.js 服务器 运行 作为 docker 映像。
- GCP 上的 Postgres SQL 数据库。
- GCP 的 Redis 实例。
我想做的是做一个 'security group' 这样我的 Postgres SQL 数据库和 Redis 实例只能从我的 Node.js 服务器访问,不能从其他任何地方访问。我不希望它们可以通过 IP 公开访问。
我们在 AWS 中做的是,只有安全组中的服务部分可以相互访问。
我不太确定,但我想在 GCP 中我需要使用防火墙规则(完全不确定)。
如果我是对的,有人可以指导我如何去做吗?如果我错了,有人可以建议正确的方法吗?
GCP 为其 VPC 设置了类似于 AWS 安全组的防火墙规则。可以找到更多详细信息 here。您可以将 PostgreSQL 数据库、Redis 实例和 Node.js 服务器放在 GCP VPC 中。
- 通过 DNS 使 Node.js 服务器可供 public 使用。
- 设置
default-allow-internal
规则,只有VPC中的服务可以相互访问(停止public访问DB和Redis)
作为替代方案,您也可以保留所有三台服务器public,只允许Node.js IP地址访问DB和Redis服务器,但建议采用上述解决方案。
感谢@amsh 解决问题。但是还有一些事情需要做,所以我想如果以后有人需要的话,我把它们列在这里会更好:
- 创建
VPC network
并为特定区域添加子网(例如:us-central1)。
- 从
Serverless VPC Access
部分为同一区域中创建的 VPC 网络创建 VPC 连接器。
- 在
Cloud Run
的 Connection
部分添加创建的 VPC 连接器。
- 在与创建的 VPC 网络相同 区域中创建 PostgreSQL 和 Redis 实例。
- 在这些实例的
Private IP
部分,select 创建的 VPC 网络。这将为创建的 VPC 网络区域中的各个实例创建私有 IP。
- 在 Node.js 服务器中使用此私有 IP 连接到实例,一切顺利。
您可能遇到的常见问题:
创建 VPC 连接器时出错:确保 VPC 连接器的 IP 范围与 VPC 网络不重叠。
不同地区:确保所有实例都在VPC网络的同一地区,否则它们不会通过私有IP连接。
避免更改防火墙规则: 不得更改防火墙规则,除非您需要它们以不同于通常的方式执行。
不同地区的实例:如果实例分布在不同的地区,使用VPC network peering
建立它们之间的连接。
AWS 内部的安全组是实例附加的类似防火墙的组件。因此,例如,您可以在实例级别拥有一个 SG,类似于在常规 Linux.
上配置 IP 表
另一方面,Google 防火墙规则更多地处于网络级别。我想,对于“粒度”级别,我想说安全组可以替换为实例级别的粒度,因此您的替代方案是使用以下之一:
- 防火墙
- nftables
- iptables
事实是,在 AWS 中,您还可以将安全组附加到子网。因此,当 SG 连接到子网时,也有点类似于 google 防火墙,但是,安全组提供了更多的粒度,因为每个子网可以有不同的安全组,而在 GCP 中,每个网络都需要一个防火墙.在此级别,保护应来自子网中的防火墙。
在 Google 云平台中是否有 AWS 安全组的替代方案?
以下是我遇到的情况:
- 云 运行 中的基本 Node.js 服务器 运行 作为 docker 映像。
- GCP 上的 Postgres SQL 数据库。
- GCP 的 Redis 实例。
我想做的是做一个 'security group' 这样我的 Postgres SQL 数据库和 Redis 实例只能从我的 Node.js 服务器访问,不能从其他任何地方访问。我不希望它们可以通过 IP 公开访问。
我们在 AWS 中做的是,只有安全组中的服务部分可以相互访问。
我不太确定,但我想在 GCP 中我需要使用防火墙规则(完全不确定)。
如果我是对的,有人可以指导我如何去做吗?如果我错了,有人可以建议正确的方法吗?
GCP 为其 VPC 设置了类似于 AWS 安全组的防火墙规则。可以找到更多详细信息 here。您可以将 PostgreSQL 数据库、Redis 实例和 Node.js 服务器放在 GCP VPC 中。
- 通过 DNS 使 Node.js 服务器可供 public 使用。
- 设置
default-allow-internal
规则,只有VPC中的服务可以相互访问(停止public访问DB和Redis)
作为替代方案,您也可以保留所有三台服务器public,只允许Node.js IP地址访问DB和Redis服务器,但建议采用上述解决方案。
感谢@amsh 解决问题。但是还有一些事情需要做,所以我想如果以后有人需要的话,我把它们列在这里会更好:
- 创建
VPC network
并为特定区域添加子网(例如:us-central1)。 - 从
Serverless VPC Access
部分为同一区域中创建的 VPC 网络创建 VPC 连接器。 - 在
Cloud Run
的Connection
部分添加创建的 VPC 连接器。 - 在与创建的 VPC 网络相同 区域中创建 PostgreSQL 和 Redis 实例。
- 在这些实例的
Private IP
部分,select 创建的 VPC 网络。这将为创建的 VPC 网络区域中的各个实例创建私有 IP。 - 在 Node.js 服务器中使用此私有 IP 连接到实例,一切顺利。
您可能遇到的常见问题:
创建 VPC 连接器时出错:确保 VPC 连接器的 IP 范围与 VPC 网络不重叠。
不同地区:确保所有实例都在VPC网络的同一地区,否则它们不会通过私有IP连接。
避免更改防火墙规则: 不得更改防火墙规则,除非您需要它们以不同于通常的方式执行。
不同地区的实例:如果实例分布在不同的地区,使用
VPC network peering
建立它们之间的连接。
AWS 内部的安全组是实例附加的类似防火墙的组件。因此,例如,您可以在实例级别拥有一个 SG,类似于在常规 Linux.
上配置 IP 表另一方面,Google 防火墙规则更多地处于网络级别。我想,对于“粒度”级别,我想说安全组可以替换为实例级别的粒度,因此您的替代方案是使用以下之一:
- 防火墙
- nftables
- iptables
事实是,在 AWS 中,您还可以将安全组附加到子网。因此,当 SG 连接到子网时,也有点类似于 google 防火墙,但是,安全组提供了更多的粒度,因为每个子网可以有不同的安全组,而在 GCP 中,每个网络都需要一个防火墙.在此级别,保护应来自子网中的防火墙。