配置审计 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 配置告警策略 具体如何创建日志项目 project 及日志库 logstore 这里我就不再赘述 您可参考日志服务的文档进行操作。
本案例对应的日志项目为: aliyun-fc-cn-hangzhou-26064c43-65dc-5734-8175-3c0fdfc784df ? 日志库为: specific-config-alert ?。
配置审计 Config 的自定义规则是基于函数计算 FC 实现的。函数所属的地域是不受限制的。本案例选择地域为华东1 杭州 。
我是基于 alimebot-nodejs 模板创建的函数。
我们在 ConfigService 这个服务下面新建一个名为 specific-config-change-alert 的函数。
函数的内部的业务逻辑 我们进行如下设计
支持用户额外指定一个参数 arn 方便我们对某一个特定的资源进行报警 如果不指定 arn 则表示对该类型的资源变更都进行告警 调用日志服务 SLS 的SDK 将日志存入日志库 logstore代码逻辑如下
const ALY require( aliyun-sdk ); // 日志服务Nodejs SDK exports.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角色额外输入的securityToken endpoint: 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(函数规则额外传入的用户自定义参数), resultToken callback(null, event); return; const specificArn parsed.ruleParameters parsed.ruleParameters.arn; //函数规则允许用户传入的自定义的资源arn const 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 }
进入配置审计控制台- 规则- 新建规则- 新建自定义规则 自定义规则是将规则评估的逻辑交给函数计算 FC 。
设置基本属性
我们选择前面创建的函数 并配置规则名称 触发机制选择“配置变更” 表示我们希望在有新的配置发生变化时 就执行该自定义规则规则。
设置评估资源范围
资源类型选择SLB负载均衡 表示我们只希望对类型为SLB负载均衡的配置变更才触发函数执行。
参数设置
在前面进行函数设计时 我们增加了一个选项 允许用户在配置自定义规则时 表示只希望对某一个资源进行报警需求的支持。
由于在期望值那一栏 我没有输入任何值 则表示当资源类型为负载均衡 SLB 的所有资源发生变更时 都将触发函数执行 您也可以输入期望值 。
进入之前新建的日志服务 SLS 的日志项目(logstore) 设置一个查询条件 SELECT COUNT(1) AS C 查询后 点击另存为告警 则开始进行日志服务告警配置。
以下为我设定的告警配置 每隔5分钟 查询最近5分钟的日志数据 如果查询的结果 0 , 则触发短信告警。
我们添加一个SLB负载均衡的监听。稍等一会 我们就会发现一条配置变更已经写入到了 日志库 logstore 中。
报警通知直接通过短信通知到了我的手机上。
配置审计 Config 对资源变配触发自定义规则可以实现很多的客户场景 如自定义合规校验逻辑 参考文档 、自动化执行、甚至自动修复等。
本文主要结合日志服务 SLS 的告警帮助客户快速感知资源变化并报警。
如果您有其他更好的思路和想法 或者有其他关于产品的问题 欢迎加入我们的产品交流群。
2021年3月25日,亚马逊云科技今天在北京举行媒体沟通会,首次正式发布三驾马车,...
直达最佳实践:【 云上成本管理最优化实践 】 最佳实践频道:【 最佳实践频道 】...
在汹涌而至的信息化浪潮下 大数据技术不断更新迭代 数据管理工具得到飞速发展 相...
近日,全球领先的IT研究和咨询公司国际数据公司(IDC)最新发布《IDC MarketScape: ...
原文 | https://www.pulumi.com/blog/is_serverless_the_future_part_1/ 作者 | ...
00、BEGIN 提及 体系 二字,我的脑海里浮现出老板说的 对于工作的规划要从全局出...
如今,视频和访问控制的集成,云的使用以及智能分析的力量都在改变物理安全。 尽...
微服务和分布式的联系与区别什么?分布式只是一种手段把不同的机器分散在不同的地...
本文转载自微信公众号「前端思维框架」,作者水墨寒。转载本文请联系前端思维框...
TOP云 (west.cn)3月15日消息,近日抠抠集团宣布正式启用抠抠网新 域名 oomall....