关于安全组
IBM Cloud® VPC安全组为您提供了一种便捷方式,可根据虚拟服务器实例的IP地址,为其目标应用建立过滤规则。 安全组的目标包括虚拟服务器实例的网络接口、端点网关和负载均衡器。 创建安全组时,应对其进行配置,以创建所需的网络流量模式。
缺省情况下,将使用拒绝所有入站流量并允许所有出站流量的规则来设置安全组。 将新规则添加到安全组时,新规则将重新定义允许的入站或出站流量的作用域。
规则具有_状态_。 要使 有状态 规则意味着当您创建允许单向流量的规则时,该规则会自动允许逆向流量。 例如,若您创建一条规则允许入站TCP流量通过80端口进入,该安全组也会允许通过80端口向源主机发送响应的出站TCP流量。 你不需要创建另一条规则。
安全组的作用域限定为单个 VPC。 此作用域意味着安全组可附加至同一VPC内的任意安全组目标。 您可以设置安全组规则以允许安全组的所有成员之间的流量。
创建虚拟私有云(VPC)时,系统会将其分配到默认安全组。 您可以修改缺省安全组设置以及各个安全组的规则。
创建使用安全组且未指定安全组的资源时,该资源的主网络接口将连接到该资源的 VPC 的 缺省 安全组。
更新 缺省 安全组的规则是一个与更新缺省安全组不同的过程。 如果编辑缺省安全组的规则,那么这些编辑后的规则将应用于组中的所有当前和未来的服务器。 有关更多信息,请参阅 更新缺省安全组规则。
您无法将安全组相互嵌套,但可以引用远程安全组。 在规则中引用远程安全组时,该规则将应用于所有附加到该规则的引用安全组目标。
安全组无法在同一区域的不同专区中引用其他安全组。
安全组目标
目标是指任何可附加或移除安全组的资源。 安全组的目标包括虚拟服务器实例的网络接口、端点网关和负载均衡器。
每个能够发送和接收流量的资源都可以配置一个安全组。 资源可包括虚拟服务器接口、裸机服务器、负载均衡器、数据路径中的任何端点网关等。
您可以将安全组与数据路径中的任何资源相关联。
安全组与网络 ACL
安全组与资源绑定,而网络访问控制表 (NACL) 与子网绑定。
网络访问控制列表(NACL)适用于子网级别,因此子网内任何关联了NACL的资源均遵循该NACL的规则。 但是,安全组的情况并非如此。 必须将安全组显式分配给资源。 此外,与 NACL 不同,安全组可以应用于跨子网甚至跨专区的多个资源。
NACL 为 无状态。
因为 NACL 不是 _有状态_的,所以如果要允许目标上的两种方式的流量,必须设置两个规则。
安全组指南
以下指南阐述了安全组的工作原理、规则应用方式,以及将其附加到网络接口的最佳实践。
规则
- 每个安全组都定义了不同的网络规则集,这些规则集用于控制虚拟网络接口的入站和出站流量。
- 要允许入站流量和/或出站流量,必须至少添加一个包含安全组规则、允许流量的安全组。
- 安全组规则只能是允许型的。 缺省情况下,流量是被阻止的。
- 对安全组规则的更改是自动应用的,并且可以随时修改。
- 安全组内规则的顺序无关紧要。 最不严格的规则优先级始终最高。
- 规则是有状态的。 在安全组变更之前建立的连接不会被改变。 新连接遵循建立连接时现有的规则。
- 安全组不会覆盖虚拟服务器上的操作系统防火墙。 即使操作系统上存在比安全组所应用的规则更严格的防火墙,仍将会强制实施操作系统的规则。
- 如果您的虚拟服务器需要访问内部服务(例如更新服务器、网络附加存储(NAS)或高级监控),请确保安全组规则允许这些内部服务的流量通过。
接口
- 一个或多个安全组可附加到网络接口上。
- 附加安全组中的所有规则将共同应用于该接口。
- 若附加了多个安全组,则根据所有组中限制最宽松的规则来允许或阻止流量。
定义安全组规则
每个安全组都由一组规则组成。 安全组在允许任何流量进入或离开实例之前,会检查其所有规则。 用于控制入站流量的规则独立于用于控制出站流量的规则。
创建新的安全组时,最初会限制所有入站流量,并且允许出站流量。 因此,必须向组添加规则以允许传入流量并对出站流量应用限制。
由于一个资源可以关联多个安全组,因此每个关联安全组中的所有规则都会合并为一组规则。 这套规则用于确定是否允许或拒绝流量进出该资源。 对于添加到安全组的每个安全规则,必须指定以下字段的值:
-
Direction-要强制实施的流量方向 (入站或出站)。
-
Protocol-指示此规则适用的协议。 值为
ICMP_TCP_UDP,或ANY,或 中的某一个IPv4 protocols。- 如果其值为
ANY,则表示该规则适用于ANY协议。 那么,指定端口范围 ( PortMin, PortMax ) 是不合法的。 - 如果协议是
tcp或udp,则规则还可以包含端口范围(PortMin, PortMax )。 设置两个端口或两个端口都不设置。 如果两者都未设置,那么将允许所有端口上的流量。 对于单个端口,必须将两个端口都设置为相同的值。 - 当协议为
icmp时,您可以选择指定type属性。 如果指定,那么仅允许指定 ICMP 类型的 ICMP 流量。 此外,如果指定type,那么可以选择指定代码属性以仅允许指定 ICMP 代码的流量。
- 如果其值为
-
远程-描述此规则允许流量的网络接口集 (或出站规则允许流量的网络接口集)。 可以将此值指定为 IP 地址,CIDR 块或单个安全组的所有标识 (标识,CRN 和名称)。 如果省略此值,那么将使用
0.0.0.0/0的 CIDR 块来允许来自任何源 (或针对出站规则的任何源) 的流量。
您可以为安全组规则命名。 然而,该系统并未将名称与规则配置建立关联。 例如,如果你将一条规则 inbound-https-from-my-subnet 命名为,系统不会验证该规则是否如其名称所暗示的那样运行。 您有责任管理安全组规则的名称和配置,以确保其一致性(如有必要)。
有关通过命令行界面设置安全组规则的更多信息,请参 阅命令列表速查表。 有关通过 API 设置安全组规则的详细信息,请参阅 《 通过 API 为虚拟服务器实例设置安全组 》。
限制
- 目前,ESP协议数据包仅在具有 Gen2 配置文件的实例上受支持。 在其他配置文件的实例上以及所有裸机服务器上,入站和出站的ESP数据包始终会被丢弃。 虽然可通过VPC API为ESP流量配置安全组规则,但此类规则仅影响具有 Gen2 配置文件的实例。 在控制 IBM Cloud 台中未显示ESP协议作为选项,以避免不同实例配置文件代际之间的混淆。 有关更多信息,请参阅 x86-64 实例配置文件。
入门
要开始操作,请决定是否要为资源创建新的安全组,然后 创建安全组。
安全组用例
创建安全组是用户应用用于过滤进出其资源的网络流量模式的规则的标准方法。 您执行以下操作的能力取决于您在帐户中的授权级别。 如果您对帐户授权有疑问,请与管理员联系。
用例 1: 更改资源的缺省安全组
每个 VPC 都有一个缺省安全组,这是为用户创建的安全组。 该缺省安全组还具有缺省规则。 此缺省规则是在通过添加或除去规则来定制安全组的设置之前分配给您创建的安全组的相同缺省规则。
缺省安全组与新安全组的缺省规则不同。 您可以自定义默认安全组的规则,以及分配给新安全组的默认规则。
例如,假设你属于某个组织,而某位拥有该组织账户访问权限的人修改了默认安全组的规则。 修改后,该规则与创建新安全组时默认生成的规则不同。 您的团队成员是非常有安全意识的客户,他们会更改缺省安全组设置以拒绝所有入站和出站网络流量。
在此示例中,当您创建资源时,该资源最初会被分配到您虚拟私有云(VPC)的默认安全组。 该默认安全组的规则因您那位注重安全的团队成员设置的拒绝规则,而禁止了所有入站和出站网络流量。 因此,进出您新资源的流量将应用相同的拒绝行为。
若您对默认安全组规则不满意,可创建具有自定义设置的全新安全组,并将其应用于您的资源。 另一个解决方案是更改缺省安全组上的规则。 创建另一个具有自定义设置的安全组是最简单的解决方案,因为您可以创建仅适用于目标资源的规则。 若您修改默认安全组的规则,这些更改不仅适用于您希望影响的资源,还适用于所有其他被分配到该默认安全组的资源。
在默认安全组上创建的任何新规则,都将应用于当前及未来所有分配到该默认安全组的资源。
有关更新缺省安全组的更多信息,请参阅 更新缺省安全组规则。
用例 2:在配置过程中自定义安全组和规则
下图说明了创建新资源时的潜在定制选项。 如果用户创建资源后未进一步指定要附加的安全组,则该新资源将被分配到 VPC 的默认安全组。 此默认安全组采用默认安全组规则,或遵循您账户成员先前配置的自定义规则。
如果用户决定将新资源分配给新的安全组,则该新安全组将自动分配给默认安全组规则。 然后,用户可以选择不采取进一步操作,或选择自定义规则,为其新建的安全组创建自定义安全组规则。 这些新规则也适用于创建并分配给新安全组的新资源:
用例 3: 允许安全组成员之间的流量
设置安全组的更常规方法是使用按 IP 地址和端口过滤的特定规则来控制进出目标的流量。
一种更灵活的安全组配置方式是:允许来自同一安全组内其他目标的所有入站流量。 当您允许安全组成员之间进行通信时,无需为安全组的每个现有成员与每个新成员单独设置权限。 当安全组中添加或删除资源时,权限将适用于所有成员。
例如,你可以将主机A和主机B置于一个安全组中,然后添加主机C。 通常,在将主机C添加到安全组后,您需要执行维护操作,才能允许主机A和主机B与主机C之间进行流量传输。
为了使此过程更容易,您可以定义一个规则,在此规则中,只要来自组的另一个成员,就允许所有流量。 当您向组中添加或移除成员时,规则会自动调整,允许组内成员之间相互发送流量。
以下是用于在安全组中定义规则以允许该安全组的成员之间的所有流量的 UI 指示信息:
- 从浏览器中,打开 IBM Cloud 控制台。
- 选择导航菜单
,然后单击基础架构
> 网络 > 安全组。
- 在安全组中,选择要修改的安全组对象。
- 在入站规则表中点击“创建+”。 此时将显示“创建入站规则”窗口。
- 在协议部分,选择 TCP-UDP-ICMP。
- 在 源类型 部分中,选择 安全组。
- 单击 创建 以应用这些更改。