配置审计(Config)变配报警设置

简介: 本文作者【紫极zj】,本篇将主要介绍通过配置审计的自定义规则等服务,对负载均衡进行预警行为的相关介绍。

前言

配置审计(Config)将您分散在各地域的资源整合为全局资源列表,可便捷地搜索全局资源,并通过规则对资源配置进行评估,过滤出不符合业务要求的资源变配操作。

 

本文为您介绍如何通过配置审计(Config)的自定义规则和日志服务(SLS)报警配合,对指定的负载均衡(SLB)变配进行报警,帮助企业快速感知变配内容并及时做出相应对策。

 

背景

云上账号主要有阿里云主账号、RAM子账号、RAM角色,阿里云主账号对所有资源都有完整的控制能力,一些被赋予高级权限的RAM子账号、RAM角色等也同样可以控制资源。如何在变更操作之前阻断该行为,是服务控制策略(SCP)的范畴(该服务限制只能是企业认证账户,并且开通了资源目录(Resource Directory)才可实施),本文暂不讨论。如何在变配后快速感知到变化也非常重要。公司A的运维同学向我们提了一个问题:公司的核心业务部署在阿里云上,采用的架构是弹性计算ECS+负载均衡(SLB)+关系型数据库RDS,每天都担心核心服务异常变配导致业务中断,希望变配后及时收到消息通知,想问问有没有什么方案。

 

我们为他们推荐了配置审计(Config)结合日志服务(SLS)的报警。那这个产品组合是如何实现以上目标的呢?

 

流程图

 

整个方案的流程图如上所示。员工A修改了企业某核心业务负载均衡(SLB)的配置。资源变配数据会被配置审计(Config)感知并存储,同时会触发监听该类资源变动的规则进行评估。规则引擎接收的入参包含了资源变动的 Diff 数据,如果该规则为自定义规则,规则引擎会执行配置好的函数计算(FC)的函数。函数过滤出目标资源的变更,并将变更数据写入日志服务(SLS)中。日志服务通过配置告警策略,触发告警并通知管理员。

 

另外两条实线表示管理员可以前往配置审计(Config)查看资源时间线以及通过日志服务(SLS)查看资源具体的配置变更信息。

 

新建一个日志库(logstore)

新建日志库(logstore),用于存储目标资源的变配数据,同时我们可以基于这个日志库(logstore)配置告警策略;具体如何创建日志项目(project)及日志库(logstore),这里我就不再赘述,您可参考日志服务的文档进行操作。

 

本案例对应的日志项目为: aliyun-fc-cn-hangzhou-26064c43-65dc-5734-8175-3c0fdfc784df  ,日志库为: specific-config-alert  。

 

新建函数计算(FC)的函数

配置审计(Config)的自定义规则是基于函数计算(FC)实现的。函数所属的地域是不受限制的。本案例选择地域为华东1(杭州)

 

我是基于 alimebot-nodejs 模板创建的函数。

 

我们在 ConfigService 这个服务下面新建一个名为 specific-config-change-alert 的函数。

 

函数的内部的业务逻辑,我们进行如下设计:

  1. 支持用户额外指定一个参数 arn ,方便我们对某一个特定的资源进行报警;如果不指定 arn,则表示对该类型的资源变更都进行告警;
  2. 调用日志服务(SLS)的SDK,将日志存入日志库(logstore);

 

代码逻辑如下

const ALY = require('aliyun-sdk'); // 日志服务Nodejs SDKexports.handler = function (event, context, callback) {const sls = new ALY.SLS({"accessKeyId": context.credentials.accessKeyId,            //阿里云访问密钥AccessKey ID。更多信息,请参见访问密钥。阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维。 "secretAccessKey": context.credentials.accessKeySecret,    //阿里云访问密钥AccessKey Secret。 "securityToken": context.credentials.securityToken,        //RAM角色额外输入的securityTokenendpoint: 'http://cn-hangzhou.log.aliyuncs.com',           //日志服务的域名。更多信息,请参见服务入口。此处以杭州为例,其它地域请根据实际情况填写。apiVersion: '2015-06-01'                                   //SDK版本号,固定值。});// -------------------------------// put logs// -------------------------------const projectName = "aliyun-fc-cn-hangzhou-26064c43-65dc-5734-8175-3c0fdfc784df";       //刚刚创建的日志项目const logStoreName = "specific-config-alert";                                           //刚刚创建的日志库const parsed = JSON.parse(event);                                                       //将入参转化为js对象      if (!parsed || !parsed.invokingEvent) {                                                 //配置审计调用时传入的参包含: invokingEvent(变更数据), ruleParameters(函数规则额外传入的用户自定义参数), resultTokencallback(null, event); return;}const specificArn = parsed.ruleParameters && parsed.ruleParameters.arn;                 //函数规则允许用户传入的自定义的资源arnconst transformData = Object.keys(parsed.invokingEvent).map(function(k) { return { key: k, value: JSON.stringify(parsed.invokingEvent[k])}});// 日志服务需要的格式const logGroup = {logs : [{time:  Math.floor(new Date().getTime()/1000),contents: transformData}],topic: 'special-config-change'};const resourceArn = parsed.invokingEvent && parsed.invokingEvent.configurationItem && parsed.invokingEvent.configurationItem.arn;if (!specificArn || specificArn === resourceArn) {   // 如果规则中未指定具体资源arn,则默认所有过滤到的资源类型都写到日志服务(SLS)sls.putLogs({projectName: projectName,logStoreName: logStoreName,logGroup: logGroup}, function (err, data) {if (err) {callback(err);return;}callback(null, data);});} else {callback(null);}
}

函数是以指定的RAM角色来执行的,所以需要给指定的RAM角色进行授权,本案例需要给RAM角色授权能够写指定日志库的权限。

{"Version": "1","Statement": [{"Action": ["log:PostLogStoreLogs","log:PutLogs"],"Resource": "acs:log:*:*:project/aliyun-fc-cn-hangzhou-26064c43-65dc-5734-8175-3c0fdfc784df/logstore/*", // 具体可根据自己函数的实际业务逻辑进行授权"Effect": "Allow"}]
}

 

新建配置审计(Config)规则

进入配置审计控制台->规则->新建规则->新建自定义规则,自定义规则是将规则评估的逻辑交给函数计算(FC)。

 

设置基本属性

我们选择前面创建的函数,并配置规则名称,触发机制选择“配置变更”,表示我们希望在有新的配置发生变化时,就执行该自定义规则规则。

 

设置评估资源范围

资源类型选择SLB负载均衡,表示我们只希望对类型为SLB负载均衡的配置变更才触发函数执行。

 

参数设置

在前面进行函数设计时,我们增加了一个选项,允许用户在配置自定义规则时,希望对某一个资源进行报警需求的支持。

 

由于在期望值那一栏,我没有输入任何值,则表示当资源类型为负载均衡(SLB)的所有资源发生变更时,都将触发函数执行;您也可以输入期望值,期望值位目标资源的 arn。

 

配置日志服务报警

进入之前新建的日志服务(SLS)的日志项目(logstore),设置一个查询条件 SELECT COUNT(1) AS C ,查询后,点击另存为告警,则开始进行日志服务告警配置。

以下为我设定的告警配置:每隔5分钟,查询最近5分钟的日志数据,如果查询的结果 >0 , 则触发短信告警。

 

 

 

验证效果

我们添加一个SLB负载均衡的监听。稍等一会,我们就会发现一条配置变更已经写入到了 日志库(logstore)中。

 

报警通知直接通过短信通知到了我的手机上。

 

 

总结

配置审计(Config)对资源变配触发自定义规则可以实现很多的客户场景, 如自定义合规校验逻辑(参考文档)、自动化执行、甚至自动修复等。

 

本文主要结合日志服务(SLS)的告警帮助客户快速感知资源变化并报警。

原文链接

本文为阿里云原创内容,未经允许不得转载。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

漫画:什么是 “元宇宙” ?

作者|小灰来源|程序员小灰什么是更高的自由度呢?或许有人觉得,我们在网络游戏当中,不是也很自由吗?想怎么玩就怎么玩。但是,无论一款网络游戏的元素有多么丰富,游戏当中的角色、任务、职业、道具、场景&…

程序员写好技术文章的几点小技巧

简介: 去年成为了内网技术分享平台的年度作者,受邀写一篇关于“如何写好文章”的文章。我本身并不喜欢写字,去年写的几篇文章,涉及的话题自带流量,所以阅读量多了一些,谈不上有多擅长。不过还是决定分享一下…

雅虎、领英接连退出中国,GitHub 会受到影响吗?

整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)继半个月前微软宣布关闭领英(即 LinkedIn)在华业务后,本周二,雅虎也宣布了最新消息:自 2021 年 11 月 1 日起,用户将无法从中国大…

高德打车构建可观测性系统实践

简介: 互联网工程的高速发展,分布式、微服务、容器化架构的流行,互联网已全面进入云原生时代。构建系统的方式由最初的单体大应用演变为分布式架构,一台服务器可能仅存几小时甚至几分钟,这种复杂性大大增加了把系统运行…

java script 代码放在jsp 还是放在servlet_ServletContext JSP

会话:四种:1 :Session–保存在服务器上默认的30分2:Cookie 客户端的,maxAge3:重写 url - > url;jsessionidxxxxxxx - > response.encodeRedirectUri(url);4:隐藏表单 1:Serv…

飞猪基于 Serverless 的云+端实践与思考

简介: 过去两年,飞猪前端一直在积极地进行 Serverless 建设和实践,2019 年 - 2020 年我们和集团 Node 架构组、研发平台一起完成了基础能力的建设和业务试点,成为集团率先落地 Serverless 实践的 BU,2020 年 - 2021 年…

unc 目录不受支持_Shopify平台对于店铺模版都提供哪些支持

在自定义Shopify模版之前,请确保您了解可用的支持级别。如果您要进行基本的自定义,则可以从模版开发人员处获取支持。如果您要对模版进行大量更改,请参阅我们的模版支持的其他资源列表。若要了解 Shopify 不支持的自定义,请参阅我…

CSS——定位、CSS高级技巧、修饰属性

1、定位 作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 定位模式&#xff1a;position边偏移&#xff1a;设置盒子的位置 leftrighttopbottom 1.1 相对定位 position&#xff1a;relative <!DOCTYPE html> <html lang"en"> <…

Hologres如何支持亿级用户UV计算

简介&#xff1a; 本文将介绍阿里云Hologres如何基于RoaringBitmap进行UV等高复杂度计算的方案&#xff0c;实现亿级用户万级标签亚秒级分析&#xff0c;帮助用户从Kylin平滑迁移到Hologres&#xff0c;实现更实时、开发更灵活、功能更完善的多维分析能力。 背景介绍 在用户行…

location 拦截所有_电脑广告拦截软件 Adguard Premium

每日一谈我们上个网的时候经常会遇到很多烦人的广告、在线跟踪等&#xff0c;不仅导致你的网站加载速度非常的慢&#xff0c;并且还可能会导致你遇到一些恶意软件和威胁。为了避免这种情况的产生&#xff0c;今天我为大家推荐这款广告拦截软件来阻止你浏览器中的广告&#xff0…

事务消息应用场景、实现原理与项目实战(附全部源码)

简介&#xff1a; 从应用场景出发&#xff0c;给出解决方案与实现原理&#xff0c;并提供整套工业级实现源码。 作者&#xff1a;丁威 活动中心场景介绍 在电商系统上线初期&#xff0c;往往会进行一些“拉新”活动&#xff0c;例如活动部门提出新用户注册送积分、送优惠券活…

request用法_3分钟短文:说说Laravel页面会话之间的数据保存Session用法

引言我们知HTTP请求是没有状态的&#xff0c;两个请求之间没有直接的关联关系。但大多数情况下&#xff0c; 我们需要保持用户的会话间数据的连续性&#xff0c;这时&#xff0c;为了数据安全起见&#xff0c; 有必要在服务器上临时存储一些上下文数据了。这就是 session 设计的…

调研邀请:我们到底需要什么样的低代码平台?

《乔布斯传》中有这样一段话&#xff1a;“有人会说&#xff0c;顾客想要什么产品就提供什么产品&#xff0c;但这并不是我的做事方式。我的职责是在人们还没有意识到需求之前&#xff0c;就研发出他们想要的&#xff0c;我们的任务是搞定那些还没有形成“定论”的事情。”这段…

面向K8s设计误区

简介&#xff1a; K8s 取其精华去其糟粕&#xff0c;是我们程序员应该做的事情。 K8s设计模式 Kubernetes是一个具有普遍意义的容器编排工具&#xff0c;它提供了一套基于容器构建分布式系统的基础依赖&#xff0c;其意义等同于Linux在操作系统中的地位&#xff0c;可以认为是…

电脑word在哪_word是什么?小学生:单词,大学生:论文排版工具

word是什么&#xff0c;对于不同人会有不同的理解&#xff0c;它可能只是一个单词&#xff0c;它也可能是一个排版工具。今天就以我自己的经历给大家讲述一下&#xff0c;人生的不同阶段&#xff0c;word分别是什么。一、小学阶段&#xff0c;好像是一个单词我们那个时候的小学…

Kubernetes 稳定性保障手册:洞察+预案

简介&#xff1a; 稳定性保障是个复杂的话题&#xff0c;需要有效、可迭代、可持续保障集群的稳定性&#xff0c;系统性的方法或许可以解决该问题。 作者 | 悟鹏 来源 | 阿里巴巴云原生公众号 《Kubernetes 稳定性保障手册》系列文章&#xff1a; ​ Kubernetes 稳定性保障手…

为啥学java要看那么多东西_编程语言那么多,为啥学Java的人那么多?

Java一直都是稳居排行榜第一的语言&#xff0c;在未来10年Java都会是最热门的语言之一&#xff0c;因为Java技术具有卓越的通用性、高效性、安全性和平台移植性&#xff0c;它可以跨平台的应用到不同的领域&#xff0c;工作需求足够大。为什么选择学习Java编程语言&#xff1f;…

墨奇科技:生物识别进入可信发展驱动的新阶段

编辑 | 宋慧 供稿 | 墨奇科技 头图 | 付费下载于视觉中国 在好莱坞电影大片中&#xff0c;经常有“换脸”或者指纹开锁的情节&#xff0c;戏中角色通过“戴上”足以以假乱真的“面皮”&#xff0c;或者按下“盗取”的指纹&#xff0c;顷刻之间就改变了身份&#xff0c;从而影…

安卓游戏开发用什么引擎_游戏开发学习第一天————用什么软件

今天开始了虚幻学习的第一天&#xff01;好的&#xff0c;那我们就开始学习做游戏吧&#xff01;始学习做游戏吧学习做游戏吧习做游戏吧做游戏吧游戏吧戏吧吧等等&#xff0c;要学做游戏啊。。。。。。第一步要做什么&#xff0c;我还完全不知道啊喂&#xff01;于是&#xff0…

360浏览器收藏夹_换了一台电脑,浏览器收藏的网站不见了,咋办?

导语&#xff1a;大家知道&#xff0c;用浏览器上网时&#xff0c;重要的网站要及时收藏&#xff0c;方便下次打开。但如果换电脑以后&#xff0c;收藏的网站就不见了。下面以360浏览器为例来说明一下工具&#xff1a;网络收藏夹、360浏览器说明&#xff1a;360的收藏夹就是网络…