全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:配置安全组

更新时间:Dec 05, 2022

安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。通过添加安全组规则,您可以控制安全组内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实例的过程中,发现部分请求来源有恶意攻击行为时,您可以添加拒绝访问的安全组规则,实现网络隔离。

关于如何添加安全组规则,请参见添加安全组规则