NSX 支持在环境中设置多租户时创建组和策略。

项目的组和防火墙规则仅适用于项目中的虚拟机,即连接到项目中网络的虚拟机。项目中的规则(包括对 DFW 应用“任意”的规则)不会影响项目外部的工作负载。
注: /infra 空间中的分组和防火墙规则适用于 NSX 部署中的每个虚拟机,包括项目中的虚拟机。例如,基于标记的组包含具有与成员相同标记的所有虚拟机,包括项目内部和外部的虚拟机。

系统会为您创建的每个项目创建一个默认组。默认组代表项目本身。系统会将项目中创建的所有分段添加到项目的默认组中。仅连接到组分段的那些虚拟机才会添加到组中。默认组有助于将规则的范围限制到特定项目。

默认组具有一个组范围表达式用于定义组范围的路径。管理员只能将 /infra 空间中的规则直接应用于默认组下的项目,或者通过 /infra 空间内组中的静态成员资格来应用。

您创建的任何其他组都支持以下内容:

  • 静态成员 - 虚拟机、分段、分段端口、IP 地址
  • 动态成员 - 虚拟机
执行以下 API 调用以创建组:
PATCH /policy/api/v1/orgs/default/projects/<project-id>/infra/domains/default/groups/<group-id>
创建基于虚拟机的组的示例请求:
URL:
PATCH https://{{nsx-manager-ip}}/policy/api/v1/orgs/default/projects/project-1/infra/domains/default/groups/group-1
正文:
{
  "expression": [
  {
    "member_type": "VirtualMachine",    
    "key": "Name",
    "operator": "CONTAINS",
    "value": "App",
    "resource_type": "Condition"
  }
  ],
  "description": "my group",
  "display_name": "g1",
  "_revision": 0
}

分布式防火墙

组织内的项目支持紧急、基础架构、环境和应用程序 DFW 类别。/infra 策略的优先级最高,其次是项目策略。/infra 空间中的 DFW 规则可以扩展到项目。

  • 默认情况下,在 /infra 空间下创建的规则将应用于环境中的所有工作负载。
    • 要定义规则的范围,请在 NSX UI 上选择应用对象的相应选项。例如,您可以使用应用对象选项将规则限制为特定工作负载。
    • 您还可以将应用对象选项用于在 /infra 空间下创建的组或由系统生成且包含项目中所有虚拟机的项目默认组 (ORG-default-PROJECT-<name-of-project>)。
  • 以下内容适用于在 /infra 空间中创建的组:
    • 动态成员资格评估系统的所有虚拟机,包括项目中的虚拟机。例如,如果组成员资格包含标记有 web 的所有虚拟机,则组将包括项目内部和外部带有 web 标记的虚拟机。
    • 对于静态成员资格,您可以通过明确引用虚拟机(成员 > 虚拟机)或使用项目默认组 (ORG-default-PROJECT-<name-of-project>) 来添加连接到项目的工作负载。/infra 空间中的组不支持在项目下创建的其他资源。

创建项目时,系统会创建一些默认策略。默认策略有助于将策略的范围限制到特定项目。

对于项目策略,如果将范围设置为“任意”,则策略将仅限于该项目。项目规则仅有权访问项目中的组以及已与项目共享的组。

进行以下 API 调用以应用安全策略:
PATCH /policy/api/v1/orgs/default/projects/<project-id>/infra/domains/default/security-policies/<security-policy-id>

示例请求:

URL:
PATCH https://{{nsx-manager-ip}}/policy/api/v1/orgs/default/projects/project-1/infra/domains/default/security-policies/web-db
正文:
{
  "resource_type": "SecurityPolicy",
    "description": "web-db",
    "display_name": "web-db",
    "rules": [
    {
      "resource_type": "Rule",
      "description": "web-db-rule-1",
      "display_name": "web-db-rule-1",
      "sequence_number": 1,
      "source_groups": [
        "/orgs/default/projects/project-1/infra/domains/default/groups/group-1"
      ],
      "destination_groups": [
        "/orgs/default/projects/project-1/infra/domains/default/groups/group-1"
      ],
      "services" : ["/infra/services/HTTP"],
      "action" : "ALLOW",
      "_revision": 0
    }
  ],
  "sequence_number": 1,
  "_revision": 0
}