译者简介:郑敏先,就职于诺云系统(上海)有限公司。工作地点为南京的诺云研发中心。担任解决方案工程师。
概览
基于我之前的文章中的相关内容,本文通过使用OVN访问控制列表(ACL)来实现基本的网络安全功能。
OVN访问控制列表和地址集介绍
OVN中的ACL规则存储于北向数据库的ACL表中,并且可以使用ovn-nbctl的acl命令进行配置。目前,ACL只能应用于逻辑交换机,但是未来将支持应用到逻辑路由器。
在出站和入站方向都支持使用ACL:
入站:从工作负载(to-lport)进入逻辑端口出站:从逻辑端口出去到工作负载(from-lport)。
此外,为每个ACL分配一个优先级,以确定它们的匹配顺序,最高优先级首先被匹配。另外ACL可以被赋予相同的优先级。 然而,在两个具有相同优先级并且都匹配同一个分组的ACL的情况下,将仅匹配一个ACL。确切地说,哪一个ACL最终将被匹配是不确定的,你不能真正地确定哪个规则将应用于给定的情况。所以我建议:在大多数情况下尽量使用不同的优先级。
ACL中的匹配规则基于OVS中的流语法,对于具有编程背景的人都会觉得很熟悉。该语法在ovn-sb手册页的“Logical_Flow表”部分中进行了说明。它值得一读,特别是介绍“!=”匹配规则的那部分内容。
另外值得强调的一点是,您不能在具有type = router的端口上创建ACL匹配规则。为了减少ACL表中的条目数量,可以使用定义相同类型地址组的地址集。例如,一组IPv4地址/网络,一组MAC地址或一组IPv6地址可以放置在一个可命名的地址集内。为了减少ACL表中的条目数,可以使用定义相同类型地址组的地址集。 例如,一组IPv4地址/网络,一组MAC地址或一组IPv6地址可以放置在命名地址集内。 然后地址集可以被ACL的match子句内的“name”引用(以$ name的形式)。
下面举个例子:
Java
1
2
3
4
5
6
7
8
#允许来自交换机“ls1”上端口“ls1-vm1”的所有ip流量,同时允许相关回包通过
ovn-nbctlacl-addls1from-lport1000"inport == "ls1-vm1" && ip"allow-related