NSX 支持在环境中设置多租户时创建策略。
项目的防火墙规则仅适用于项目中的虚拟机,即连接到项目中网络的虚拟机。项目中的规则(包括对 DFW 应用“任意”的规则)不会影响项目外部的工作负载。
注: /infra 空间中的分组和防火墙规则适用于 NSX 部署中的每个虚拟机,包括项目中的虚拟机。例如,基于标记的组包含具有与成员相同标记的所有虚拟机,包括项目内部和外部的虚拟机。
项目的分布式防火墙
组织内的项目支持紧急、基础架构、环境和应用程序 DFW 类别。/infra
策略的优先级最高,其次是项目策略。/infra
空间中的 DFW 规则可以扩展到项目。
- 默认情况下,在
/infra
空间下创建的规则将应用于环境中的所有工作负载。- 要定义规则的范围,请在 NSX UI 上选择应用对象的相应选项。例如,您可以使用应用对象选项将规则限制为特定工作负载。
- 您还可以将应用对象选项用于在
/infra
空间下创建的组或由系统生成且包含项目中所有虚拟机的项目默认组 (ORG-default-PROJECT-<project-name>
)。
- 以下内容适用于在
/infra
空间中创建的组:- 动态成员资格评估系统的所有虚拟机,包括项目中的虚拟机。例如,如果组成员资格包含标记有 web 的所有虚拟机,则组将包括项目内部和外部带有 web 标记的虚拟机。
- 对于静态成员资格,您可以通过明确引用虚拟机(
ORG-default-PROJECT-<project-name>
) 来添加连接到项目的工作负载。/infra
空间中的组不支持在项目下创建的其他资源。
)或使用项目默认组 (
默认规则
创建项目时,将在项目中的策略列表底部创建一个“应用程序”类别的默认安全策略。默认策略定义项目中的虚拟机在未遇到任何其他规则时的行为。
默认策略包含以下规则:
- 允许与 DHCP 通信的规则。
(src:ANY dst:ANY services:DHCP Client|DHCP Server Action Allow)
- 允许在项目中的工作负载之间进行通信的规则。
(src:Project default groups (ORG-default-PROJECT-<project-name> dst:Project default groups (ORG-default-PROJECT-<project-name> services:ANY Action Allow)
- 拒绝所有其他通信的规则。
(src:ANY dst:ANY services:ANY Action Deny)
默认策略可确保项目中的虚拟机只能访问同一项目(包括 DHCP)中的其他虚拟机。与项目外部的虚拟机或与系统创建的其他 IP 地址的通信将被阻止,只能通过添加规则或修改默认安全策略中的规则来允许通信。
为项目添加分布式防火墙
对于项目策略,如果将范围设置为“任意”,则策略将仅限于该项目。项目规则仅有权访问项目中的组以及已与项目共享的组。
进行以下 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 }