日志审计:多账号下VPC Flow日志的采集与监控

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
日志服务 SLS,月写入数据量 50GB 1个月
简介: VPC流日志的采集和监控在日志审计下的功能介绍及最佳实践

1.背景

1.1 日志审计

日志审计服务App是阿里云日志服务SLS(Simple Log Service)旗下的一款产品,它在继承了日志服务SLS的全部功能以外,还有强大的多账号管理及跨地域采集功能,支持通过资源目录(Resource Directory)的方式有组织性地统一地管理和记录多账号下云产品实例的日志信息,可以便于用户进行统一分析,问题排查,回溯复盘等操作。日志审计APP可以自动化、中心化地采集云产品日志并进行审计,其服务覆盖基础(操作审计、k8s)、存储(OSS、NAS)、网络(SLB、API网关、VPC)、数据库(RDS、PolarDB-X1.0,PolarDB)、安全(WAF、DDOS、SAS、CPS)等产品,还支持审计所需的存储、查询及信息汇总等功能。

1.2 VPC Flow 日志

VPC提供流日志功能,可以记录VPC网络中弹性网卡ENI(Elastic Network Interface)传入和传出的流量信息,帮助您检查访问控制规则、监控网络流量和排查网络故障。对于通过VPC 流日志公测申请的账号,日志审计默认对VPC创建流日志,则会捕获VPC中所有弹性网卡的流量,包括在开启流日志功能后新建的弹性网卡。流日志功能捕获的流量信息会以流日志记录的方式写入日志服务中。其日志字段主要内容参见VPC流日志功能,日志审计在保留全部日志字段的基础上,还富化了一个region字段,用以表示VPC实例所属地域。

2 开启VPC Flow 日志采集

2.1. 使用限制

流日志功能正在公测中,您可以使用阿里云账号开启公测申请,开启后会产生流量和日志存储费用,费用详情请参见流日志功能计费

图1 开启VPC 流日志采集

对于VPC Flow日志而言,并不是VPC内所有的ECS实例都支持捕获流日志信息,其中不支持捕获Flow日志信息的ECS实例族如下:

ecs.c1、ecs.c2、ecs.c4、ecs.ce4、ecs.cm4、ecs.d1、ecs.e3、ecs.e4、ecs.ga1、ecs.gn4、ecs.gn5、ecs.i1、ecs.m1、ecs.m2、ecs.mn4、ecs.n1、ecs.n2、ecs.n4、ecs.s1、ecs.s2、ecs.s3、ecs.se1、ecs.sn1、ecs.sn2、ecs.t1、ecs.xn4

如果弹性网卡绑定的ECS实例属于以上实例规格族的实例时,亦不支持开启该弹性网卡的流日志捕获。

2.2 多账号及跨域、自动采集能力

2.2.1 多账号汇总

日志审计对资源目录和自定义鉴权的支持使得其天然具备同时采集多账号下的VPC流日志信息的能力,下图是同时采集多个账号下VPC流日志的一个示例。

图2 日志审计采集VPC 流日志的多账号能力

2.2.2 跨域与中心化

在日志审计下开启VPC流日志采集之后,如果开启中心化,日志审计将自动将多账号、多地域下的流日志通过数据加工汇总到是sls下名为slsaudit-center-${center_account}-${region} 的project的vpc_log中。如果不开启中心化功能,则对于不同地域的VPC流日志将自动采集到对应region的对应project的slsaudit-region-${center_account}-${region}的vpc_log中,下图是一个VPC流日志跨域采集汇总的一个示例。

中心化选择

VPC实例所属地域A

审计中心所属地域C

区域A是否有日志

是否创建

数据加工

中心是否有日志

日志存储时间

开启中心化

A与C同地域

区域A有

不会创建

中心C有

取决中心化TTL

A与C不同地域

会创建

关闭中心化

A与C同地域

不会创建

中心C无

取决区域化TTL

A与C不同地域

表1 中心化和区域化区别

图3 日志审计采集VPC 流日志的跨地域功能

开启中心化后,日志审计在slsaudit-center-${center_account}-${region}下会创建3个VPC相关的内置报表,分别是VPC流日志概览、VPC流日志Reject中心、VPC流日志Traffic中心。如果关闭中心化,在日志审计仪表盘主页面对于每个有VPC实例的地域将会分别创建以上3个内置报表,如下图所示。

图4 左图中心化仪表盘Tree,右图关闭中心化仪表盘Tree

2.2.3 自动采集能力

日志审计开启VPC流日志采集功能之后,对于新创建的VPC实例,将会自动自动对齐开通流日志功能,并对满足条件的VPC下的所有ENI的流量信息会以流日志记录的方式写入日志审计。

2.3 精细化日志采集粒度

日志审计支持对VPC实例进行精细化采集粒度控制,用户可以通过账号、地域、实例ID、实例名、标签等属性进行精准采集设置。具体的采集策略可以参考日志审计采集策略一节。

图5 配置精准VPCFLowlog采集策略

云产品

采集对象

属性

说明

VPC

VPC实例

账号:account.id

VPC实例所属的阿里云账号ID

地域:region

VPC实例所属的地域,例如:cn-shanghai

实例ID:instance.id

VPC实例ID

实例名:instance.name

VPC实例名

标签:tag.*

用户自定义的标签名。

tag.*中的星号(*)替换为您自定义的标签名,

例如tag.level=high, tag.env=test

表2 采集策略说明

下面将进行几个简单的采集策略示例帮助用户理解如何进行精细化VPC流日志的采集。


# --------------example 1 ----------------

#only scan cn region

keep region == "cn-*"


# accept by default

accept "*"



#-------------example 2-------------------

# accept all high level instances and if not only accept vpc that name starts with test


accept tag.level == "high"


# only scan vpc name start with “test”

keep instance.name == "test*"


# accept by default

accept "*"

3.报表分析与展示

日志审计VPC流日志内置3种报表,一个是VPC Flow日志概览,一个是VPC Reject中心,一个是VPC Traffic中心。

3.1 VPC Flow 日志概览


图6 VPC流日志概览-Action统计、Accept和Reject统计、ENI详情等

图7 VPC流日志概览-Top字节数的源地址、目的地址、每分钟Action次数等

图8 VPC流日志概览-Action源地址运营商分布、Top目标端口、各协议的每分钟包数等

3.2 VPC Reject 中心

图9 Reject 信息汇总

图10 Reject Action详情

3.2 VPC Traffic 中心

图11 Traffic信息概览

图12 Traffic 每分钟字节数及各ENI分钟字节数和包数

4.最佳实践

4.1 VPC内ECS互相访问流量查看

本章节以下图场景为例,例如ECS1和ECS3是同一个VPC(vpc-bp1vh***********9l3e)内不同交换机下的2台云服务器。ECS1(172.16.2.*)和ECS3(172.16.1.*)之间存在一定的的互访流量,假设用户想要查看两者之间的流量随时间变化的详情,可以使用如下sql语句。

图13 VPC内不同交换机下ECS互相访问示意图


eni-id: eni-bp********8ze and dstaddr: "172.16.1.**" | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, dstaddr,sum(bytes*8/("end"-start)) as bandwidth group by time,dstaddr order by time asc limit 100


该SQL语句定义了时间time、带宽bandwidth(bps)、目的地址dstaddr三个参数,time和dstaddr为聚合列,并按time从小到大排序,取100条日志。其中参数eni-id的值为ECS1的弹性网卡实例ID,dstaddr的值为ECS3的私网IP地址。

图14 VPC内ECS1访问ECS3的流量带宽变化统计图

4.2 排查公网NAT网关中不同ECS的流量变化

首先登录公网NAT网关,创建NAT网关,在该网关下选择已经创建的VPC( vpc-bp1vh***********9l3e),该VPC下已经创建了交换机vsw-bp1s*******00mj(172.16.2.0/24)和vsw-bp19******kov2(172.16.1.0/24)

在该NAT网关下新购弹性公网IP (114.**.**.**7)并绑定,在公网NAT网关页面,找到刚才创建的NAT网关,并设置SNAT,然后创建SNAT条目,配置条目粒度为交换机粒度,选中vsw-bp1s*******00mj(172.16.2.0/24)和vsw-bp19******kov2(172.16.1.0/24),然后在公网IP地址列表选择刚刚创建的EIP(114.**.**.**7)。

图 15 公网NAT连接示意图


dstaddr: "114.**.**.**7" and action: ACCEPT and srcaddr: 172.16.1.* | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, srcaddr,sum(bytes*8/("end"-start)) as bandwidth group by time,srcaddr order by time asc limit 1000


输入以上SQL语句对日志进行聚合和排列,查看去往某一特定EIP地址的不同ECS实例的流量。其中dstaddr是指刚刚创建的公网EIP地址,srcaddr是指以上ECS几个实例的私网网段,生成流图时x轴为time,y轴为bandwidth,聚合列为srcaddr。其结果如下图所示:

图16 一小时内访问公网EIP的不同ECS源IP的流量示意图


4.3 跨区域跨VPC访问流量查看

如下图所示,首先登录云企业网控制台创建地域为上海的一个云企业网CEN实例(cen-o6lf*****f3kh),然后在此CEN实例下加载网络实例,选择同账号下分别位于青岛和上海的两个VPC实例进行加载。此时系统会自动创建的SLR角色AliyunServiceRoleForCEN,该角色允许转发路由器在目标VPC实例上创建ENI,作为VPC发往转发路由器的流量入口。

图17 CEN下加载不同地域VPC实例示例

图18 同CEN下不同VPC实例之间互相访问示意图


输入以下SQL进行查询, 其中vpc-uf6*****93kf是上海所在的VPC实例,srcaddr是青岛vpc-m5e*****ngyd实例下的交换机挂载的ECS实例i-m5eh******70mn的网段(172.31.*.*)


vpc-id: vpc-uf******93kf  and srcaddr : "172.31.*.*" and action: ACCEPT | select date_format(from_unixtime(__time__ - __time__% 60), '%H:%i:%S') as time, sum(bytes*8/("end"-start)) as bandwidth from (select * from log where "end"!=start) group by time order by time asc limit 10


图18 同CEN下不同区域不同VPC实例下的ECS互相访问流量查看示例

5.参考链接

日志审计服务 https://help.aliyun.com/document_detail/164065.html

日志服务SLS https://help.aliyun.com/document_detail/48869.html

资源目录 https://help.aliyun.com/document_detail/94475.html

VPC流日志 https://help.aliyun.com/document_detail/127150.html

开启流日志公测申请 https://page.aliyun.com/form/act1463681010/index.htm

流日志功能计费 https://help.aliyun.com/document_detail/127150.html#title-cdd-pr7-r8m

VPC流日志字段 https://help.aliyun.com/document_detail/127150.html#title-wat-lmx-z21

日志审计采集策略 https://help.aliyun.com/document_detail/170316.html

公网NAT网关https://vpc.console.aliyun.com/nat/cn-hangzhou/nats

云企业网CEN https://cen.console.aliyun.com/cen/list?spm=a2c4g.11186623.0.0.7503558d6gRqA5

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
2月前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
3月前
|
存储 Kubernetes Java
在k8S中,容器内日志是怎么采集的?
在k8S中,容器内日志是怎么采集的?
|
3月前
|
数据采集 监控 Kubernetes
Job类日志采集问题之iLogtail以减小容器发现和开始采集的延时如何优化
Job类日志采集问题之iLogtail以减小容器发现和开始采集的延时如何优化
|
3月前
|
数据采集 Kubernetes Java
Job类日志采集问题之在日志中添加容器的元信息标签,如何操作
Job类日志采集问题之在日志中添加容器的元信息标签,如何操作
|
3月前
|
存储 容器
Job类日志采集问题之DaemonSet采集方式的参数以减小采集延时如何调整
Job类日志采集问题之DaemonSet采集方式的参数以减小采集延时如何调整
|
3月前
|
容器
Job类日志采集问题之ECI产品采集方式对于弹性扩缩容是如何支持的
Job类日志采集问题之ECI产品采集方式对于弹性扩缩容是如何支持的
|
12天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
121 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
220 3
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1630 14

相关产品

  • 日志服务