第 19 章 配置安全组


安全组是一组 IP 过滤规则,它们控制网络和协议对实例的访问,如 ICMP,允许您 ping 实例,以及 SSH 允许您连接实例。安全组规则应用到项目中的所有实例。

所有项目都有一个名为 default 的默认安全组,当您没有为实例指定安全组时使用。默认情况下,默认安全组允许所有传出流量,并拒绝来自同一安全组中实例以外的任何来源的所有传入流量。您可以将规则添加到 default 安全组,也可以为项目创建新的安全组。您可以在实例创建过程中将一个或多个安全组应用到实例。要将安全组应用到正在运行的实例,请将该安全组应用到与实例连接的端口。

在创建安全组时,您可以在 ML2/OVN 部署中选择有状态或无状态。

注意

ML2/OVS 部署中不支持无状态安全组。

默认情况下,安全组是有状态的,在大多数情况下,有状态安全组可以更好地控制管理开销。

无状态安全组可以提供显著的性能优势,因为它会绕过底层防火墙中的连接跟踪。但是无状态安全组需要比有状态安全组更多的安全组规则。在某些情况下,无状态安全组还会提供较少的粒度。

无状态安全组优点
  • 无状态安全组可能会比有状态安全组更快
  • 无状态安全组是将 OpenFlow 操作卸载到硬件的应用中唯一可行的安全组选项。
无状态安全组的缺陷
  • 无状态安全组规则不会自动允许返回流量。例如,如果您创建一个规则来允许来自无状态安全组中的端口的传出 TCP 流量,您还必须创建一个允许传入回复的规则。有状态安全组会自动允许传入的回复。
  • 对这些传入回复的控制可能并不准确,因为有状态安全组提供的控制。

通常,使用默认的有状态安全组类型,除非应用高度敏感,或者使用 OpenFlow 操作的硬件卸载。

注意

您无法在实例创建过程中将基于角色的访问控制 (RBAC) 共享安全组直接应用到实例。要将 RBAC 共享安全组应用到实例,您必须首先创建端口,将共享安全组应用到该端口,然后将该端口分配给实例。请参阅向端口添加安全组

19.1. 创建安全组

您可以创建新的安全组,以应用到项目中的实例和端口。

流程

  1. 可选: 要确保您所需的安全组尚不存在,请查看可用的安全组及其规则:

    $ openstack security group list
    $ openstack security group rule list <sec_group>
    • 将 < sec_group > 替换为您从可用安全组列表中检索的安全组的名称或 ID。
  2. .创建安全组:

    $ openstack security group create [--stateless] mySecGroup
    • 可选:包含-- stateless 选项,以创建无状态安全组。安全组默认是有状态的。

      注意

      只有 ML2/OVN 部署支持无状态安全组。

  3. 在您的安全组中添加规则:

    $ openstack security group rule create --protocol <protocol> \
    [--dst-port <port-range>] \
    [--remote-ip <ip-address> | --remote-group <group>] \
    [--ingress | --egress] mySecGroup
    • &lt;protocol> 替换为您要允许与您的实例通信的协议名称。
    • 可选:将 <port-range > 替换为为协议打开的目标端口或端口范围。IP 协议 TCP、UDP 和 SCTP 是必需的。设置为 -1 以允许指定协议的所有端口。使用冒号分隔端口范围值。
    • 可选: 您可以使用 --remote-ip 指定远程 IP 地址块( or- -remote-group ) 来只允许从指定的 IP 地址访问,以指定该规则只适用于来自远程组的成员的接口的数据包。如果使用 --remote-ip,请将 & lt;ip-address > 替换为远程 IP 地址块。您可以使用 CIDR 表示法。如果使用 --remote-group,请将 替换为 现有安全组的名称或 ID。如果未指定选项,则允许访问所有地址,因为远程 IP 访问范围默认为 (IPv4 默认: 0.0.0.0/0 ;IPv6 默认: ::/0)。
    • 指定协议规则应用到的网络流量的方向,可以是传入(入口)或传出(egress)。如果没有指定,则默认为 ingress

      注意

      如果您创建了无状态安全组,并且创建了一条规则来允许来自无状态安全组中的端口的外向 TCP 流量,您还必须创建一个允许传入回复的规则。

  4. 重复步骤 3,直到您已经为要允许访问实例的所有协议创建了规则。以下示例创建了允许 SSH 连接到安全组 mySecGroup 中的实例的规则:

    $ openstack security group rule create --protocol tcp \
     --dst-port 22 mySecGroup
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.