阿里云的专有网络目前没有网络的ACL,当前在专有网络中进行访问控制,依赖各个云产品的访问控制能力。在此为介绍云服务器 ECS 、云数据库 RDS 、负载均衡的访问控制功能。
ECS——安全组
安全组是一种虚拟防火墙,具备状态检测包过滤功能。安全组用于设置单台或多台云服务器的网络访问控制,它是重要的网络安全隔离手段,用于在云端划分安全域。
安全组是一个逻辑上的分组,这个分组是由同一个地域(Region)内具有相同安全保护需求并相互信任的实例组成。每个实例至少属于一个安全组,在创建的时候就需要指定。同一安全组内的实例之间网络互通,不同安全组的实例之间默认内网不通。可以授权两个安全组之间互访。
一个 VPC 类型的 ECS 实例只能加入本 VPC 的安全组。您可以随时授权和取消安全组规则。您的变更安全组规则会自动应用于与安全组相关联的ECS实例上。
默认只有同一个安全组的 ECS 实例可以网络互通。安全组可以根据出入方向的规则设置对安全组内部实例的出入方向网络流量进行访问控制。
- 入方向:授权/拒绝某个IP或CIDR通过某个协议类型访问安全组内部实例指定的端口范围
- 出方向:授权/拒绝安全组内部实例通过某个协议访问某个IP或CIDR的指定的端口范围
当访问控制规则冲突时,优先级高的规则生效,优先级相同时,“拒绝”的规则生效
安全组应作为白名单使用,且遵循“最小授权”原则
例如,用于运维管理的跳板机,该类实例一般具备很强的内网网络访问权限,需要暴露在公网并允许ssh登录。这类实例的风险较高,建议进行单独管理。安全组规则可以这样设计:
- 在跳板机实例所在的安全组中拒绝(deny)所有地址(0.0.0.0/0)对于该实例所有协议(all)端口(-1/-1)的访问(Ingress);
- 在该安全组中允许(allow)某运维人员的IP地址(xx.xx.xx.xx)对于该实例通过ssh(tcp,22端口)的方式登录(Ingress)跳板机;
由于相同安全组中的ECS内网互通,需要将不同业务环境、不同访问控制需求的服务器规划在不同的安全组中
- 提供公网服务的和内网服务放置在不同的安全组中
- 不同应用使用不同的安全组
- 不同的部署环境使用不同的安全组
当需要专有网络中的服务器内网互通时,有两种方式,可以配置安全组之间互相授权,也可以通过设置安全组规则对特定地址段的出入方向授权来实现。当安全组数量较少或网络规划不严格规划时,前者的配置相对简单;当安全组数量随着业务部署的复杂度增加时,在合理的规划服务器地址段的基础上,对地址段的授权能够有效的降低安全组的配置和管理成本。
更多安全组的配置可以参考:
云数据库 RDS 版——白名单
基于云数据库 RDS 版的白名单功能,用户可定义允许访问 RDS 的 IP 地址,指定之外的 IP 地址将被拒绝访问。在专有网络中使用RDS产品时,需要将云服务器的IP地址加入到需要访问的RDS的白名单后,云服务器才能访问RDS实例。
更多云数据库 RDS 版白名单的配置可以参考:
负载均衡——白名单
可以为负载均衡监听设置仅允许哪些 IP 访问,适用于应用只允许特定 IP 访问的场景。负载均衡是将访问流量根据转发策略分发到后端多台云服务器的流量分发控制服务。通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。一般对于外网或内网用户开放访问。当服务仅对指定用户开放,或仅用于内部访问时,通过白名单功能可以有效的对服务进行访问控制。在配置白名单时,将需要通过负载均衡服务访问后端服务器的用户IP地址或专有网络内部的云服务IP地址加入到负载均衡服务监听的访问控制白名单即可。
更多负载均衡白名单的配置可以参考: