Neutron/SecurityGroups
< Neutron
Neutron 安全组
概述
- 与 Nova 安全组向后兼容 (EC2 & 现有的 nova 部署)
- 允许指定入站和出站规则 (Nova 安全组仅定义入站规则)
- 安全组应用于 neutron 端口 (Nova 安全组适用于实例)
- 允许在运行时更改安全组 (在启动实例后)
提案
- https://blueprints.launchpad.net/quantum/+spec/quantum-security-groups
- Folsom Summit http://www.slideshare.net/delapsley1/20120417-osdesignsummitsecuritygroupsdlapsleyfinal
行为
Neutron 安全组的基本特性是
- 对于入站流量 (到实例)
- 只有与安全组规则匹配的流量才会被允许。
- 如果没有定义规则,所有流量都会被丢弃。
- 对于出站流量 (从实例)
- 只有与安全组规则匹配的流量才会被允许。
- 如果没有定义规则,所有出站流量都会被丢弃。
- 当创建一个新的安全组时,会自动添加允许所有出站流量的规则。
- 为每个租户定义了“默认安全组”。
- 对于默认安全组,默认情况下定义了一条允许与默认安全组关联的主机之间相互通信的规则。
- 因此,默认安全组中的所有出站流量和内部通信都允许,并且默认情况下所有来自默认安全组外部的入站流量都会被丢弃 (在默认安全组中)。
工作流场景
以下是使用 Neutron 安全组与 Nova 的一些选项。如果有其他场景,请添加它们。
- (A) 直接使用 Neutron 安全组
- 创建一个 neutron 端口
- 将安全组与端口关联
- 如果需要多个 vNIC,则重复上述步骤。
- 传递 neutron 端口的 port-id 启动 VM
- 现在我得到了应用了 sg 规则的 VM。
- (B) 使用 nova 安全组代理 (与传统的 Nova 方法相同)
- 用户请求 nova 启动实例,并指定关联的安全组。
- Nova 创建 neutron 端口。
- Nova 将 neutron 安全组与端口关联
- Nova 使用创建的端口启动实例。
- 比较
- 在场景 (B) 中,我们需要考虑如何为每个 vNIC 指定安全组。一种选择是将公共安全组应用于所有 vNIC。
- 要使用完整的 neutron 安全组功能,如 IP 重叠或出站过滤,需要场景 (A)。
实现
- Linux Bridge 插件 (使用 iptables) https://blueprints.launchpad.net/quantum/+spec/quantum-security-groups-iptables
- OVS 插件 (使用 iptables)
- NVP 插件 https://blueprints.launchpad.net/quantum/+spec/security-groups-nvp
- NEC 插件 https://blueprints.launchpad.net/quantum/+spec/nec-security-group
- PLUMgrid 插件 https://blueprints.launchpad.net/neutron/+spec/plumgrid-plugin-security-groups
参考文献
- Amazon VPC 安全组: http://docs.amazonwebservices.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html
- Amazon VPC FAQ http://aws.amazon.com/vpc/faqs/#S1