凌云时刻 · 技术

导读:本期为“玩转 ECS”系列第 5 讲,由阿里云智能技术专家王帝(丞浩)介绍如何正确使用安全组、最佳实践以及新特性。

嘉宾 | 王帝

整理 | 董智颖

来源 | 凌云时刻(微信号:linuxpk)

前言

近期,“凌云时刻”特别推出“阿里云玩转 ECS”系列课程,每周二、周四准时更新,欢迎关注。点击文末“阅读原文”可查看本系列所有已发布内容。

本次内容由阿里云智能技术专家王帝(丞浩)为大家介绍如何正确使用安全组、最佳实践以及新特性,详细了解安全组为何是云端的虚拟防火墙,以及为何是重要的网络隔离手段。

王帝(丞浩),阿里云技术专家,2017 年 10 月加入阿里云弹性计算团队,主要负责网络安全组的优化和演进。

以下内容根据演讲视频以及 PPT 整理而成。

使用过 ECS 的朋友一定不会对安全组陌生,它是 ECS 实例的虚拟防火墙。配置安全组是创建 ECS 实例或者发生网络属性变更必不可少的一步。下面我就为大家分享一下安全组的相关内容。

本次分享主要围绕以下三个部分:安全组的简介、基本操作和最佳实践。 

安全组简介

 ECS 网络访问控制

首先什么是安全组,阿里云 ECS 的网络访问控制,是由子网 ACL 和安全组两层实现的。大家知道阿里云提供 VPC 专有网络,是用户独有的云上私有网络。VPC 专用网络为用户独立出一块网络区域,使得用户可以自行规划自己的网段,在没有配置公网 IP 的情况下,VPC 是完全与外界隔离的。

交换机绑定网络 ACL,ACL 会对应一些控制规则,所有经过交换机的网络流量都需经过这些规则,一般配置的是黑名单规则(当然也支持指定白名单),例如不允许哪些网端的数据包流入或流出。

再往下一层就是我们今天要讲的安全组,相对于子网 ACL 是生效在交换机上,安全组实例级别的防火墙,生效在 ECS 上面。所有经过用户的 ECS 网络流量都需经过安全组。

安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。通过配置安全组规则,您可以控制安全组内 ECS 实例的入流量和出流量。

安全组是一个逻辑上的分组,由同一地域内具有相同安全保护需求并相互信任的实例组成。此外,安全组与子网 ACL 之间的明显区别是安全组具有状态,安全组会自动允许返回的数据流不受任何规则的影响,简单来说就是主动请求别人就一定会收到回包。而交换机则不是,入流量也会走一遍所设置的子网 ACL 规则,如果被拦截是收不到回包的。有些用户会将安全组与 iptables 对比,其实这两者是独立的。

阿里建议用户单独使用安全组,如果用户的场景需要配置 iptables,ECS 也是完全支持的。相对于子网 ACL 的黑名单方式,安全组一般是白名单。

ECS 或弹性网卡必须至少属于一个安全组,安全组组内默认互通可以配置规则控制网络联通。

安全组的基本操作

下面再给大家分享一下在阿里云 ECS 控制台是如何操作管理安全组的。

为了方便理解,我们把对安全组的操作暂时分为两类,组的操作和规则的操作。

组的操作是针对安全组本身的操作,比如创建、删除、改名字,以及可能导致安全组内 IP 发生变化的操作,还有组内添加实例网卡、替换组等。规则的操作则是改变组内规则的操作,比如添加,删除,修改,克隆等操作。

先说组的操作,比如组内加减实例,网卡等操作比较简单,我们就不特别介绍了,重点介绍一下替换组。

替换组:实例可以从组 A 替换到组 B,在替换过程中不会发生网络闪断或抖动的情况,用户只需保证新老组的规则是兼容的,在整个替换过程中不会对网络有任何的影响和抖动。

再说规则的操作,我们重点介绍一下还原,导出导入,Classic Link 和克隆组。

规则还原:对两组规则进行合并或替换,一般在做实验性质的网络变更之前可以先克隆出一个组,测试后可以通过规格还原功能恢复成原来的样子。下图为规格还原的页面,展示出哪些规格为新增哪些为删除。

导出导入:将安全组下载成 JSON 文件或是 CSV 文件用于备份。

Classic Link:通过添加一条安全组规则实现 VPC 和经典网络之间的网络联通。

克隆组:克隆组支持跨地域或跨网络类型的安全组复制,可以从经典网络到 VPC 或是到一个新 Regen 并快速复制一个组。

最佳实践

最后再给大家介绍一下比较好的安全组配置实践,比如如何合理的配置规则,如何使用五元组,如何基于安全组做断网演练。

 安全组规则格式

首先介绍一下安全组规则配置有两种方式:

CIDR:图中示例展示,授权 192.168.0.0/24 的地址 DR 机器访问 22 端口。

组织授权:图中示例展示,拒绝另一组访问的所有端口,完全切断两组之间的流量。

以上两个示例都为入方向规则,一般情况下不知道对方使用哪个端口接连自己,所以不限制,区别在于自己任选哪个端口对外暴露给任意对象。

相对于上图的四元组,阿里也支持五元组。

五元组为五个参数:源地址、源端口、目的地址、目的端口、传输层协议,相比四元组多了目的地址。以入方向规则为例,使用五元组可以实现不放行整个组,可单独放行某一个 IP 段,这样某些平台内网络服务为了防范第三方产品对用户 ECS 的实例发起非法访问,需要在安全组内设置五元组规则,更精确的控制出和入的流量。另外,如果用户组内联通策略是拒绝场景,想精确控制组内 ECS 之间的联通策略也需要使用五元组。五元组场景较为特殊,而绝大多数场景四元组是可以胜任的。

 规则配置建议

先规划对于分布式应用来说,不同的应用类型应放到不同组中。使用白名单方式管理安全组,不建议用户使用先加一条低优先级全通,再逐条拒绝的方式。要慎用 0.0.0.0/0 全通策略。遵守规则最小化配置原则。尽量使用 CIDR 段,因为单组容量有限,而且 CIDR 地址段更容易扩展和维护。不限制协议使用all,不是每个协议都配一遍。安全组规则变更非常高危,要认真写好备注以便于后续的维护。

 潜在高危安全组概览

阿里云 ECS 会定期检查用户的实例,如果实例暴露在公共环境并且开放高危端口,阿里会对用户做出预警,且用户在资源概览页面中可以查看自己的高危安全组。

 如何给应用划分安全组

为了避免测试环境和正式环境之间互相干扰,阿里会将测试环境和正式环境放在不同 VPC 中进行隔离。将有公网服务放在一组内网服务放在一组。不同应用类型应使用不同安全组,例如 Web 服务、应用服务、数据库或缓存,都应该放在不同安全组中。下图中的示例,由于都需使用跳板机,所以都授权了跳板机组 G1,Web 服务器需要联通应用服务器,应用服务器又需要联通数据库,所以分别做了组组授权。这样做完网络安全组的规划使得应用分层清晰,便于后续的维护,同时也满足了隔离性和安全性的要求。

 使用安全组进行断网演练

基于安全组可进行断网演练用于高可用容灾或混沌工程等场景,如下图中 case,演练数据挂掉时系统的表现,可以将此 DB 加入专门的断网组,断网组+全阻断规格来实现快速规模化断网。

 拆解断网过程

创建断网组:因为组内默认联通策略是组内互通的,所以先改为组内不互通。

加入实例:先将演练数据库加入断网组内,这时对业务无任何影响且正常运行。

添加规则:当真正进行断网演练时需要执行该步骤,给断网组出和入各加一条全阻断规则,加完后此时服务器的流量就会完全被切断。

删除规则:当演练完毕后,需要将全阻断规则删除,即可恢复业务。

如果需要不定期做容灾演练,只需重复步骤三、四即可。

 企业级安全组

传统安全组组内容量上限是 2000IP,如要进行更大规模则需使用企业组,企业组支持单组 60000 以上的 IP,未来支持的容量会更多。

典型的企业组场景例如阿里云的容器服务 ACK 或是用户自建 K8s 集群,其实 ECS 只是作为 S 层,ECS 之间只需网络互通即可。容器的网络访问控制并不是安全组实现的,而是通过 Network Policy 等方式来实现的。下图中的示例显示是较为常见的部署方式,VPC 下挂两个虚拟交换机分别在两个可用区做跨地域容灾,将所有实例放入一个组中,无需复杂的规则配置,只需配置内网全通和出方向全通就可实现 VPC 内互通。下图中只配置了三条规则,两条入方向全通和一条出方向全通,这是较为常见的容器服务安全组架构。如果用户不需要组组授权并且对组内的实例规模有要求,那么请使用企业级安全组。如果当前传统组想切换至企业组,有两种方式可实现,第一种新建一个企业组后采用替换组的方式将实例逐个挪入到企业组中,第二种是阿里协助用户将原来的传统组升级成企业组。

 云产品托管安全组

用户在使用阿里云云产品时,如云防火墙、NAT 网关等,云产品都会替用户创建安全组,为了避免用户误操作造成产品不可用,阿里采用了托管模式,托管组即用户可建不可操作,避免产生问题。

以上是对本次分享的全部,希望对大家有所帮助,谢谢各位。

END

往期精彩文章回顾

何万青:直呼其名——我与中国计算机学会十年命运交织

基于弹性计算网络能力提升容器密度最佳实践

申通完美支撑“双11”亿级包裹背后的云基础设施

技术人成长路径之我见

容器技术20年:容器引擎与江湖门派

如何保障“双11”期间亿万买家和卖家愉快地聊天

ECS自助服务之智能诊断和自动化修复

AI 云原生浅谈:好未来 AI 中台实践

云上高弹性、低成本解决方案

我眼中的解决方案架构师

饿了么技术往事(中)

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

弹性计算安全组最佳实践及新特性介绍相关推荐

  1. 玩转ECS第5讲 | 弹性计算安全组最佳实践及新特性介绍

    简介:本次内容由阿里云智能技术专家王帝(丞浩)为大家介绍如何正确使用安全组.最佳实践以及新特性:详细了解安全组为何是云端的虚拟防火墙,以及为何是重要的网络隔离手段. 演讲嘉宾简介:王帝(丞浩),阿里云 ...

  2. 玩转ECS第8讲 | 服务器迁移中心SMC最佳实践及新特性介绍

    简介:本次分享由阿里云技术专家白辉万(百宝)为大家介绍免费的服务器迁移上云最佳实践方案和新功能特性,包括一键迁云.自动定期同步.一键验证.本次分享内容将帮助企业上云客户越过高高的服务器迁移门槛,快速体 ...

  3. 实时计算 Flink 版 最佳实践

    简介: 实时计算 Flink 版 最佳实践目录 金融行业 行业背景 金融是现代经济的核心.我国金融业在市场化改革和对外开放中不断发展,金融总量大幅增长.金融稳定直接关系到国家经济发展的前途和命运,金融 ...

  4. Xcode9新特性介绍-中文篇

    背景: Xcode 9 新特性介绍: 1.官方原文介绍链接 2.Xcode9 be ta 2 官方下载链接 本文为官方介绍翻译而来,布局排版等都是按照官方布局来的. 与原文相比,排版上基本还是熟悉的配 ...

  5. Android 9(Pie) 新特性介绍

    Android 9(Pie) 新特性介绍 简述 Android 9.0(api 28)在今年的八月份发布了正式的版本.本文重点介绍面向开发者的新功能. 新功能 利用 Wi-Fi RTT 进行室内定位 ...

  6. 技术前沿资讯-Apache Flink 1.14 新特性介绍

    一.简介 1.14 新版本原本规划有 35 个比较重要的新特性以及优化工作,目前已经有 26 个工作完成:5 个任务不确定是否能准时完成:另外 4 个特性由于时间或者本身设计上的原因,会放到后续版本完 ...

  7. 蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器...

    SOFAStack Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里 ...

  8. jdk7和8的一些新特性介绍

    社区之星王海庆:速度激情,学习极客     Markdown轻松写博文     微信公众平台开发     天天爱答题 一大波C币袭来     读文章送好书     jdk7和8的一些新特性介绍 更多p ...

  9. Java 16 新特性介绍

    本文要点 Java 16 和即将发布的 Java 17 引入了大量特性和语言增强,有助于提高开发人员的生产力和应用程序性能 Java 16 Stream API 为常用的终端操作提供了很多新方法,有助 ...

  10. hadoop3.0新特性介绍

    hadoop3.0新特性介绍 1. 基于jdk1.8(最低版本要求) 2. mr采用基于内存的计算,提升性能(快spark 10倍) 3. hdfs 通过最近black块计算,加快数据获取速度(块大小 ...

最新文章

  1. 《C++primer》第二章--变量和基本内置类型
  2. Android 解决 No static method in class La/a/a/a; or its super classes
  3. php twig扩展,如何写一个自定义的 Twig 扩展
  4. 亿级流量峰值没在怕,“缓存”技术来减压!
  5. python拿什么做可视化界面好-用python打造可视化爬虫监控系统,酷炫的图形化界面...
  6. JAVA 泛型与反射
  7. 比特币现金被3.1万多家餐厅接受
  8. 面试必问!有没有比读写锁更快的锁?
  9. 信息系统项目管理知识--物联网
  10. java calendar field_Java Calendar详解
  11. 如何正确选择仓储物流供应商?
  12. 图像的灰度级数越多越好_MATLAB-数字图像处理 图像直方图归一化
  13. 动态给H5页面绑定数据,基本万能无错误!
  14. Mac 如何寻找Mac自带的IDLE
  15. C#LeetCode刷题之#641-设计循环双端队列(Design Circular Deque)
  16. GEETEST极验召集互联网大佬齐聚光谷,共同探讨交互安全问题
  17. SpringBoot动漫弹幕网站 cartoon.liuyanzhao.com
  18. 旺旺的计算机无法打开,电脑任务栏中点击阿里旺旺图标无法打开界面的解决方法...
  19. ffmpeg多种码率控制方式的实现
  20. 磁盘驱动器或Windows Home Server失败的情况挽救了我的婚姻

热门文章

  1. 你认识什么是前端吗?你是合格的前端吗?
  2. SQL Server触发器更新原理
  3. Go语言中的单引号、双引号、反引号
  4. java踩坑记-getResourceAsStream
  5. STM32L476应用开发之二:模拟量数据采集
  6. 正则表达式批量重命名
  7. 经典200例-003 为项目添加已有类
  8. JAVA学习网站收集
  9. 第13章 集成学习和随机森林 学习笔记下 随机森林和集成学习
  10. Python3入门机器学习经典算法与应用 第3章 读取数据和简单的数据探索