安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。通过添加安全组规则,您可以控制安全组内ECI实例的入流量和出流量。
安全组概述
安全组定义
安全组是一个逻辑上的分组,由同一地域内具有相同安全保护需求并相互信任的实例组成。通过添加安全组规则,安全组可以允许或拒绝安全组内ECI实例对公网或者私网的访问,以及管理是否放行来自公网或私网的访问请求。
一个安全组可以管理同一个地域内的多台ECI实例。
一台ECI实例必须且仅支持属于一个安全组。
安全组类型
安全组分为普通安全组和企业安全组,创建时默认添加的安全组规则如下:
入方向:放行80、443、22、3389及ICMP协议,可修改。
出方向:允许所有访问请求。
两种安全组主要的功能差异如下表所示。
功能 | 普通安全组 | 企业安全组 |
未添加任何规则时的访问策略 |
|
|
能容纳的私网IP地址数量 | 2000 | 65536 |
同一个安全组内实例之间的网络连通策略 | 默认内网互通 | 默认内网隔离,需要您手动添加安全组规则 |
授权给其它安全组 | 支持组组授权 | 不支持组组授权 |
如果您对整体规模和运维效率有较高需求,建议您使用企业安全组。相比普通安全组,企业安全组大幅提升了组内支持容纳的实例数量,简化了规则配置方式。
安全组规则
安全组通过配置规则来控制出入流量。一条安全组规则由规则方向、授权策略、协议类型、端口范围、授权对象等属性确定。关于安全组规则,请注意以下事项:
每个安全组的入方向规则与出方向规则的总数不能超过200条。
添加规则时遵守最小授权原则。例如:
选择开放具体的端口,如80/80,避免开放端口范围,如1/80。
谨慎授权全网段访问源,即0.0.0.0/0。
更多信息,请参见安全组概述。
指定安全组
创建ECI实例时,必须要指定安全组,将ECI实例加入到安全组中。
ECI实例不支持修改安全组。如果想要变更安全组,需要重新创建ECI实例。
Kubernetes方式
在Kubernetes场景中通过Virtual Node使用ECI时,集群中所有ECI实例将默认加入到Virtual Node设置的安全组中。如果有特殊需求,您也可以为某个ECI实例指定其它安全组。
集群
您可以通过kubectl edit命令修改eci-profile配置文件,在data中修改ECI实例默认使用的安全组ID。
说明Virtual Node版本为v2.0.0.90-15deb126e-aliyun及以上时,支持修改eci-profile实现配置热更新。如果您的Virtual Node版本低于该版本,建议您升级Virtual Node。
kubectl edit configmap eci-profile -n kube-system
修改data中的securityGroupId字段,示例如下:
data: enableClusterIp: "true" enableHybridMode: "false" enablePrivateZone: "false" resourceGroupId: "" securityGroupId: sg-2ze0b9o8pjjzts4h**** #指定安全组ID selectors: "" vSwitchIds: vsw-2zeet2ksvw7f14ryz****,vsw-2ze94pjtfuj9vaymf**** vpcId: vpc-2zeghwzptn5zii0w7****
ECI实例
对于单个ECI实例,您可以在Pod metadata中添加Annotation来指定安全组。配置示例如下:
apiVersion: apps/v1 kind: Deployment metadata: name: demo labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: annotations: k8s.aliyun.com/eci-security-group: "sg-bp1dktddjsg5nktv****" #设置安全组 labels: app: nginx spec: containers: - name: nginx image: nginx:latest
OpenAPI方式
调用CreateContainerGroup接口创建ECI实例时,您可以通过SecurityGroupId参数来指定安全组。SecurityGroupId的参数说明如下表所示。更多信息,请参见CreateContainerGroup。
名称 | 类型 | 示例值 | 描述 |
SecurityGroupId | String | sg-uf66jeqopgqa9hdn**** | 指定安全组ID。 |
控制台方式
通过弹性容器实例售卖页创建ECI实例时,您可以指定一个安全组。
添加安全组规则
对于安全组内的ECI实例,您可以添加安全组规则来控制其出入流量。例如:
当您的ECI实例需要与所在安全组之外的网络进行通信时,您可以添加允许访问的安全组规则,实现网络互通。
当您在运行ECI实例的过程中,发现部分请求来源有恶意攻击行为时,您可以添加拒绝访问的安全组规则,实现网络隔离。
关于如何添加安全组规则,请参见添加安全组规则。