MSE Nacos 配置变更审计平台使用指南

作者:孙立(涌月)、邢学超(于怀)、李艳林(彦林)

配置审计平台简介

Nacos [ 1] 作为一款业界主流的微服务注册中心和配置中心,管理着企业核心的配置资产,由于配置变更的安全和稳定诉求越来越高,因此我们提供了安全和可追溯性保障机制。

配置变更的途径主要包括控制台手动发布和使用 Nacos SDK 客户端等方式,为了配置变更的安全性,我们需要对这两种变更进行变更操作的通知和追溯;其中既包括这些变更操作的变更责任人、责任机器的追踪,也包括变更操作对于相关方的通知和告警。

配置变更审计平台核心目标

从变更内容方面,配置变更动作可分为配置的发布、删除、导入、修改等;从变更渠道划分,Nacos 配置变更可分为 在控制台进行的手动操作、使用 Nacos SDK 进行的操作。配置变更发生之后,我们需要进行变更的详细审计,其中主要包括呈现配置的变更细节、变更之后的消息通知。

由此可见,配置变更的目标主要是在配置变更后进行相应的附加处理,来提升配置的可靠性、精准性,从而提升系统整体的安全性、可用性。为了提供给用户一个完善的配置变更审计平台,我们在审计平台中提出了以下几个配置变更的审计点:

  • 配置变更操作责任人审计:

    在 MSE 中添加配置变更的操作责任人的信息,方便客户追溯配置变更的具体执行者;而对于未开启鉴权,未留下用户信息的用户,MSE Nacos 会将配置变更的来源 IP 记录下来,并且将其暴露给用户,从而保证整个审计链路的完整性和可追溯性;

  • 配置变更影响面审计:

    当有多个微服务应用监听该配置时,我们需要记录下有哪些应用和机器监听了该配置,当配置内容发生变化,我们需要将其推送行为、推送成功与否、是否影响业务等信息在变更审计平台上呈现给用户;

  • 配置变更内容审计:

    对所发布配置的内容进行记录,便于用户追溯配置历史的版本,以及每个历史版本的更新日期、所属应用、变更内容;

  • 配置变更通知和告警:

    在配置变更(含发布、修改、导入、删除操作)之后,配置使用水位的实时监控以及配置使用水位超过阈值之后的告警,能够保证用户的及时感知配置的变化情况。

配置变更审计平台原理

如下图所示,配置变更审计平台会将用户的变更操作完整记录,并且通过配置操作人追溯、推送轨迹、配置历史版本审查、变更通知及告警等功能向用户透出。

例如,当用户组织内,某变更操作执行人 A 发起“配置变更 1”操作时,MSE 会将其操作内容和影响面做完整的记录,如“A 执行了配置变更1操作,变更内容为 XXX,该配置监听者及可能的受影响者为 C”。这些信息会通过配置操作人追溯大盘、配置操作影响面追溯大盘等,统一汇总到变更的审计人 E;同时,审计人 E 也可以通过配置使用水位监控观测到配置中心当前的整体使用情况,当配置的使用量超出既定阈值时,MSE 会通过告警信息等方式将风险透出给配置变更审计者。

图片

由此,当用户组织内部的变更审计人需要对该变更进行审计和追溯时,便可以通过 MSE 配置变更审计平台,完整地看到该变更发行时间点、操作人、操作内容、影响面等各种信息,便于其进行团队和研发进度管理,界定风险责任。

配置操作人追溯

MSE Nacos 配置变更操作人追溯作为配置变更平台最主要的功能,用户可以在该追溯界面查看看到历次配置变更的详情和变更操作的责任人信息。

图片

如下图所示,该功能在记录和呈现配置的操作细节时,对于展示内容设置了多个优先级:

  • 当变更的操作来源为用户手动在 MSE 控制台进行发布变更时,配置变更责任人的内容为用户的账号信息,其中:
    • 若用户使用阿里云主账号登录,则记录并呈现主账号的 UID;
    • 若用户使用其所属的子账号登录,则记录并呈现登录使用的子账号的 UID。
  • 当变更的操作来源为用户使用 Nacos 的 Client 来进行配置的增删改查等操作时,MSE 会判断操作源是否携带身份信息:
    • 如果该操作源携带了身份信息,则将其识别并展示出来;
    • 否则,MSE 会自动识别该操作源的来源 IP 并展示在配置操作人追溯列表中,便于配置审计人更加准确和全面地履行审计职责。

图片

配置变更推送轨迹

同时,MSE Nacos 配置变更审计平台也呈现了配置中心的推送轨迹。如下图所示,在推送轨迹页面,用户可以通过推送轨迹查询某配置相关的变更事件,也可以根据 IP 查询所有和该 IP 地址相关的推送轨迹。其中配置中心配置变更和发布的各种详细问题都在推送轨迹界面有所展示,例如:

  • 配置发布异常;
  • 配置修改完发现某台机器不生效;
  • 需要查看配置中心变更及推送事件。

图片

其中,变更事件、DataId、Group 分别表示分别表示本次配置变更事件类型、该配置变更事件的配置、该配置变更事件的配置所属分组。在“详情”列可以看到详情图标可以看到本次变更事件详细信息,点击详情列跳转按钮可以切换到配置维度查询的入口查询当前配置在该时间点的推送事件。

配置监控大盘及告警

同时,MSE Nacos 也提供了变更之后的配置监控页面,主要监测指标包括:

  • 配置中心主要业务指标:配置数、配置监听者数;
  • 配置中心访问量指标:配置中心 TPS、QPS、写 RT、读 RT;
  • MSE 引擎整体的节点数、配置数、每秒查询数、每秒操作数和连接数等信息。

在这个监控大盘下,用户可以在配置变更之后,进行各项配置管理核心指标的校验,例如当配置管理业务上出现推送配置不及时时,可以通过读写 RT 指标快速定位当前配置中心的相应时间;

另外,在压测场景下,用户也可以通过该大盘进行配置数、配置监听者数、TPS 等指标的实时观测;

当配置数或配置使用水位超过既设阈值时,也会给配置变更的审计者发送报警信息。

图片

图片

配置变更审计最佳实践

下面介绍如何使用 MSE Nacos 提供的配置变更审计能力,并使用该能力增强配置变更的安全性和可追溯性。

整个最佳实践可以归纳为如下几个步骤:

1.开通微服务引擎 MSE

2.登录 MSE 控制台,并创建 Nacos 引擎实例

3.在 MSE Nacos 创建相关配置、修改相关配置并删除

4.在配置中心控制台查看配置操作人及配置变更历史

5.使用 Nacos Client SDK 进行配置创建和删除

6.在配置中心控制台查看配置操作人及配置变更来源 IP

7.对配置中心使用情况配置告警,当配置使用水位超过某一阈值的时候,对用户发送通知

1. 开通微服务引擎 MSE

您可登录微服务引擎 MSE [ 1] ,查看并开通 MSE。

2. 登录 MSE 控制台,并创建 Nacos 引擎实例

图片

登录微服务引擎 MSE 产品控制台,在左侧选项框中选择“注册配置中心”,点击“实例列表”,确定 region 后,选择“创建实例”。

3. 在 MSE Nacos 创建相关配置、修改相关配置并删除重建

您可在 MSE Nacos 控制台界面手动创建配置,并做多次修改、删除及重新创建等操作。

图片

4. 在配置中心控制台查看配置操作人及配置变更历史

由下图可见,配置变更的操作人已经呈现,点击“查看”也可以看到历次配置变更的详情和变更之前的历史版本内容。

图片

5. 使用 Nacos Client SDK 进行配置创建和删除

可参考 Nacos Client SDK 使用指南 [ 2] 进行 Nacos Client SDK 的依赖安装,并进行配置创建、修改、删除等操作。

6. 在配置中心控制台查看配置操作人及配置变更来源 IP

可以看到,使用 Nacos Client SDK 进行操作,即使在未开启鉴权的情况下,也留下了发布来源 IP。MSE Nacos 用户可以通过该 IP 追溯到配置变更的来源信息。

图片

7. 添加配置用量告警

此处我们添加配置水位大于 90% 时的告警,当配置使用水位超过该阈值时,会通过短信、电话等方式通知到配置变更的审计人。

图片

🔔 注意:

  1. 对于 Nacos Client SDK1.X(HTTP 版本),由于其IP信息并未携带在 HTTP 报文中,MSE Nacos 并未对其进行存储;若使用该 SDK 进行配置发布,本着配置操作人来源信息的准确性原则,并未透出该信息;

  2. 使用 Nacos Client SDK 发布,控制台可查看 IP 的功能支持需升级至 Nacos2.2.3.2 版本。但目前该版本尚在全网灰度发布中,预计 2 月中旬将全部灰度完毕,如果发现该版本尚未灰度至您所在地域,可以通过 MSE 工单解决。

MSE Nacos 配置变更审计平台未来展望

对于配置变更的发生位置主要分为变更前和后,上述功能主要发生在变更后。而在未来,我们将一方面对于配置变更发生之前的问题进行拦截和处理,协助 MSE 用户进行配置变更的防错性措施,主要包括文件检查、参数校验等,即防御式开发;另一方面继续保障配置变更发生之后的确认和验收性工作,保证变更的正确发生。

MSE Nacos 配置变更审计平台将致力于在配置变更的整个生命周期进行相应的附加处理,来提升配置的可靠性、精准性、安全性。我们主要提出三种未来将添加进入配置变更审计平台的功能:

文件内容校验和审批

此功能为事前校验、预防性的配置变更审计功能,在配置变更发生之前,MSE Nacos 将发起一个审批流程,交由用户组织内部的研发管理者或运维管理者判断文件上传的内容是否符合要求;

具体的落地方案是通过 MSE 控制台进行校验、预防;另外,为了防止存在偶发的漏放情况,MSE 将允许用户设计多层次的审批结构加强校验防护。

变更内容白名单与黑名单

此类需求也为事前拦截、预防性的需求,在配置变更发生之前,判断本次变更的具体内容是否在白名单或者黑名单(比如是否在 yaml 文件的指定 Key 范围)之内,来保证更加精细粒度的权限管理。

例如,当运维 A 只被授权修改某配置文件 yaml 中的“useLocalCache”字段时,如果该配置变更审批修改了其他的字段,则会被黑名单拦截;而如果该变更只局限于该字段,则会被放行。即,权限受限的操作人只允许规定的配置内容的修改和变更。

基于 WebHook 的配置变更通知

此类需求为事后感知类的需求,当配置变更发生之后,将配置变更的情况通过多渠道及时推送至客户,让用户明确所操作带来的后果是否符合预期。

现有的实现方案则是通过 listener 进行监听。但该方案缺点则是不便于清晰感知、同时需要用户进行二次开发,而采用 Webhook 方式,结合常用的办公应用,如钉钉,企业微信,则可将变更情况推送至群\个人,更加清晰地感知,便捷地接受。

相关链接:

[1] Nacos/微服务引擎 MSE

https://www.aliyun.com/product/aliware/mse?spm=5176.28508143.J_4VYgf18xNlTAyFFbOuOQe.107.e939154aPIGhMk&scm=20140722.S_product@@%E4%BA%91%E4%BA%A7%E5%93%81@@218483._.ID_product@@%E4%BA%91%E4%BA%A7%E5%93%81@@218483-RL_MSE-LOC_menuUNDproduct-OR_ser-V_3-P0_0

[2] Nacos Client SDK 使用指南

https://nacos.io/docs/v2/guide/user/sdk/

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

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

相关文章

聚醚醚酮(Polyether Ether Ketone)PEEK在粘接使用时使用UV胶水的优势有哪些?要注意哪些事项?

使用UV胶水在聚醚醚酮(Polyether Ether Ketone,PEEK)上进行粘接可能具有一些优势,但同时也需要注意一些事项。以下是使用UV胶水的优势和需要考虑的事项: 优势: 1.快速固化: UV胶水通常具有快速…

spark window源码探索

核心类: 1. WindowExec 物理执行逻辑入口,主要doExecute()和父类WindowExecBase 2. WindowFunctionFrame 窗框执行抽象,其子类对应sql语句的不同窗框 其中又抽象出BoundOrdering类, 用于判断一行是否在界限内(Bound), 分为RowBoundOrdering…

总结10(break和continue)

break break如果用于循环是用来终止循环 break如果用于switch,则是用于终止switch break不能直接用于if,除非if属于循环内部的一个子句(下图为举例) 例1: (该图中break与if没有关系,只终止for循…

3、css设置样式总结、节点、节点之间关系、创建元素的方式、BOM

一、css设置样式的方式总结: 对象.style.css属性 对象.className ‘’ 会覆盖原来的类 对象.setAttribut(‘style’,‘css样式’) 对象.setAttribute(‘class’,‘类名’) 对象.style.setProperty(css属性名,css属性值) 对象.style.cssText “css样式表” …

利用外卖系统源码构建高效的在线订餐平台

在当今数字化时代,外卖服务已成为人们日常生活中不可或缺的一部分。为了满足用户需求,许多创业者和企业都希望搭建自己的在线订餐平台。利用现有的外卖系统源码,可以快速构建一个高效、安全的在线订餐平台。本文将介绍如何利用外卖系统源码来…

Latex warning: Ignoring empty anchor,如何解决?

目录 一、解决办法: 二、另一种潜在的方法: 一、解决办法: 在\footnotetext{....}前添加:\makeatletter\def\HyWarning#1{}\makeatother \makeatletter\def\HyWarning#1{}\makeatother \footnotetext{*Address Correspondence…

SeaTunnel集群安装

环境准备 服务器节点 节点名称 IP bigdata1 192.168.1.250 bigdata4 192.168.1.251 bigdata5 192.168.1.252 Java环境(三个节点都需要) java1.8 注意:在安装SeaTunnel集群时,最好是现在一个节点上将所有配置都修改完&a…

AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提前方法分享)

Java可使用的OCR工具Tess4J使用举例 1.简介1.1 简单介绍1.2 官方说明 2.使用举例2.1 依赖及语言数据包2.2 核心代码2.3 识别身份证信息2.3.1 核心代码2.3.2 截取指定字符2.3.3 去掉字符串里的非中文字符2.3.4 提取出生日期(待优化)2.3.5 实测 3.总结 1.简…

# Redis 分布式锁如何自动续期

Redis 分布式锁如何自动续期 何为分布式 分布式,从狭义上理解,也与集群差不多,但是它的组织比较松散,不像集群,有一定组织性,一台服务器宕了,其他的服务器可以顶上来。分布式的每一个节点&…

搭建 prometheus + grafana + springboot3 监控

下载安装包 下载prometheus:https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.windows-amd64.zip 下载grafana: https://dl.grafana.com/enterprise/release/grafana-enterprise-9.4.1.windows-amd64.zip Spr…

Python中容器类型的数据

目录 序列 序列的索引操作 加和乘操作 切片操作 成员测试 列表 创建列表 追加元素 插入元素 替换元素 删除元素 元组 创建元组 元组拆包 集合 创建集合 修改集合 字典 创建字典 修改字典 访问字典视图 遍历字典 若我们想将多个数据打包并且统一管理&…

Cloudreve个人网盘系统源码 支持云存储(七牛、阿里云OSS、腾讯云COS、又拍云、OneDrive) 基于Go框架

现在的网盘动不动就限速,涨价,弄得很是心烦。今天分享一款开源免费的网盘项目,基于 Go 语言开发的 Cloudreve。Cloudreve基于Go框架云存储个人网盘系统源码支持多家云存储驱动(从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDr…

Win10 双网卡实现同时上内外网

因为需要同时上内网和外网,但公司做了网络隔离,不能同时上内外网,所以多加了块无线网卡,配置双网关实现同时上内外网,互不影响 打开 Windows PowerShell(管理员),输入:ro…

翻译: GPT-4 Vision通过量身定制的推荐来增强应用的用户体验 升级Streamlit五

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…

【新书推荐】3.2节 位运算之加减乘除

本节内容:二进制移位运算,以及逻辑运算与算术运算之间的转换。任何进制的位运算本质都是一样的。 ■二进制数移位运算:二进制数向左移位运算相当于做2的幂乘法运算,二进制数向右移位运算,相当于做2的幂除法运算。 ■十…

MySQL安全(一)权限系统

一、授权 1、创建用户 在MySQL中,管理员可以通过以下命令创建用户: namelocalhost IDENTIFIED BY password; name是要创建的用户名,localhost表示该用户只能从本地连接到MySQL,password是该用户的密码。如果要允许该用户从任何…

【深度优先搜索】【组合数学】【动态规划】1467.两个盒子中球的颜色数相同的概率

作者推荐 【动态规划】【字符串】【行程码】1531. 压缩字符串 本文涉及知识点 动态规划汇总 深度优先搜索 组合数学 LeetCode1467 两个盒子中球的颜色数相同的概率 桌面上有 2n 个颜色不完全相同的球,球上的颜色共有 k 种。给你一个大小为 k 的整数数组 balls …

启发式搜索(A*、IDDFS、IDA*)

我们在解决图问题的时候,通常需要使用DFS和BFS搜索,可是这两种搜索方式的效率较低,我们会遍历到很多空白节点,有没有办法可以优化这种低效问题呢?今天要推出我们的主角:启发式搜索。 一、A* 什么是A*算法…

MySQL索引原理以及SQL优化

案例 struct index_failure_t{int id;string name;int cid;int score;string phonenumber;}Map<int,index_failure>; 熟悉C的同学知道&#xff0c;上述案例中&#xff0c;我们map底层是一颗红黑树&#xff0c;一个节点存储了一对kv&#xff08;键值对&#xff09;&…

seata 分布式

一、下载安装seata 已经下载好的朋友可以跳过这个步骤。这里下载的是seata1.6.1这个版本。 1、进入seata官网 地址&#xff1a; https://seata.io/zh-cn/index.html 2、进入下载 3、点击下载地址 下载地址&#xff1a; https://github.com/seata/seata 二、配置seata 进入c…