赞
踩
声明:
本博客欢迎转发,但请保留原作者信息!
新浪微博:@孔令贤HW;
博客地址:http://blog.csdn.net/lynn_kong
内容系本人学习、研究和总结,如有雷同,实属荣幸!
更新记录:
2013.06.27 增加在ovs plugin使用安全组以及在Nova使用Neutron安全组时需要的配置说明
在Grizzly版中,安全组从Nova移植到了Quantum。有几个特性:
1. 后向兼容。从F版升级到G版,仍然可以用F版Nova的API进行安全组的操作。
2. 同时支持ingress和egress(即入口和出口规则),但通过Nova API仅支持ingress规则。
3. 安全组作用于Quantum中的Port,而不再是原来Nova中的虚拟机。
4. 允许在虚拟机运行期修改安全组
5. 每个租户(tenant, 在G版的Keystone中又叫project)都有默认的安全组
安全组行为:
1. 如果没有指定ingress规则,则不允许任何数据包进入;
2. 如果没有指定egress规则,则不允许任何数据包出去;
3. 新建一个安全组时,会自动增加一条规则,允许所有的数据包出去
4. 每个租户的默认安全组,允许租户的虚拟机之间内部通信;允许租户虚拟机对外通信;不允许外界数据流进入租户的虚拟机。
1. Quantum
a. 创建一个port
b. 给port关联一个安全组
c. 如果要创建的虚拟机有多个网卡,那么可以重复a,b
d. 创建虚拟机,指定上面创建的port
e. 现在,你有了一个虚拟机,并且虚拟机上的网卡通信受安全组规则的约束
2. Nova
a. 用户要通过Nova的API创建一个虚拟机,并且为虚拟机关联安全组
b. Nova调用Quantum创建port,为port关联安全组
c. Nova使用port的信息创建虚拟机
其实,Quantum的安全组实现(在LinuxBridge和OVS上),与F版的实现基本一样,都是通过iptables。
G版中为安全组增加了两个新的资源:security_group和security_group_rule,同时为Port增加一个新的属性:security_group。为了保证兼容,在创建network、创建port、创建安全组时都会先看租户是否有默认的安全组,如果没有则新建,并且在新建的默认安全组中同时会新建两条规则:允许同一个安全组内的成员通信;允许安全组内的成员对外通信。对于租户新创建的安全组也会做同样的事情。
先来看下安全组相关的类的设计,以OVS安全组实现为例:
server端有三个主要的类:
OVSBridgePluginV2:接口业务处理
AgentNotifierApi:是plugin与agent通信的帮助类
OVSRpcCallbacks:负责处理agent的请求
而蓝色的框是上述三个类为了实现安全组功能需要继承的父类。
agent端有两个主要的类:
OVSQuantumAgent:处理server端发来的请求
OVSPluginApi:是agent与plugin通信的帮助类
同样,蓝色的框是上述两个类为了实现安全组功能需要实现的父类。SecurityGroupA
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。