【OpenStack】Quantum(G版)中的安全组

声明:
本博客欢迎转发,但请保留原作者信息!
新浪微博:@孔令贤HW;
博客地址:http://blog.csdn.net/lynn_kong
内容系本人学习、研究和总结,如有雷同,实属荣幸!


更新记录:

2013.06.27  增加在ovs plugin使用安全组以及在Nova使用Neutron安全组时需要的配置说明

1.介绍

在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. 每个租户的默认安全组,允许租户的虚拟机之间内部通信;允许租户虚拟机对外通信;不允许外界数据流进入租户的虚拟机。

2.使用流程

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的信息创建虚拟机

3.实现

其实,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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值