首页 > 其他分享 >防盗、防泄露、防篡改,我们把 ZooKeeper 的这种认证模式玩明白了

防盗、防泄露、防篡改,我们把 ZooKeeper 的这种认证模式玩明白了

时间:2024-08-07 17:28:10浏览次数:7  
标签:防盗 配置 ZooKeeper 认证 篡改 SASL MSE 客户端

作者:子葵

你的 ZooKeeper 安全吗?

在当下网络安全事件频发的背景下,安全防护的构建成为日常开发与运维工作中的重中之重。ZooKeeper 存储着系统敏感实例信息与配置数据,但传统的使用方式并未为 ZooKeeper 配备强制身份验证机制,从而使得其内部数据面临暴露在网络空间中的风险。稍有不慎,任何具备网络访问能力的实体都能读取甚至篡改 ZooKeeper 中的数据,具有较大安全隐患。

用户案例

某企业自建 ZooKeeper 客户就曾在使用 ZooKeeper 时忽略了对内部敏感数据设置适当的访问控制列表(ACL)和使用身份认证能力,同时没有禁用那些具备潜在安全风险的“四字命令”,ZooKeeper 数据完全暴露于网络中,任何能够访问此网络的人员都能够连接并操作 Zookeeper 中的数据,在这种使用场景中由于存在巨大的安全隐患,被安全团队要求限期整改。

图片

图片

自行改造升级 ZooKeeper 安全能力,复杂程度高,风险大

1. 普通 ACL 方式修改繁琐,管理复杂

ZooKeeper 本身具备身份认证和细粒度的访问控制列表(ACL)能力。即便在默认配置下,它也能够支持多种身份认证模式,包括 Digest、IP 和 World 等。开发者可以在初始化连接时提供认证信息,并针对特定的 Znode 设置相应的 ACL,这样一来就能有效地限制客户端访问 Znode 的权限范围。然而,这套机制虽然强大,但是实际使用起来比较复杂。针对每个 Znode 单独配置 ACL 意味着随着 Znode 数量的增加,尤其是在业务逻辑较为复杂时,管理工作将变得异常繁重并且容易出错。

2. SASL 方式手动配置风险高,运维复杂

ZooKeeper 还提供了对 SASL(简单认证和安全层)身份认证模式的支持,该模式通过简单的服务器和客户端配置就能实现基于用户名和密码的认证机制。SASL 是一种支持身份验证过程和数据安全传输的协议,在 Java 中已经有一套基于该协议的接口实现,借助这些接口实现,ZooKeeper 实现了 SASL 认证功能,并且该功能可通过配置文件动态读取与应用,使得开发者可以无缝集成 SASL 认证机制,无需修改现有代码即可提升 ZooKeeper 的安全性。

图片

采用 SASL 认证模式时,客户端与服务端通过相关配置实现安全连接:仅允许持有有效认证信息的客户端与ZooKeeper 服务器建立连接并执行数据操作。这有效增强了数据的安全性,避免了将 ZooKeeper 中的数据暴露于整个网络。

但是,实际部署 SASL 认证机制需手动完成服务端的配置工作,其配置规则较为复杂,容易在设置过程中出现错误导致节点异常。此外,SASL 认证所需的身份信息配置也需持续手动维护,增加了运维工作的难度和复杂性。

使用 MSE 标准化流程,简单快速加固集群安全能力

MSE 通过标准化流程集成了 SASL 配置管理能力,屏蔽底层集群和客户端配置的复杂度,使得用户只需要通过白屏化配置和客户端配置引入即可接入 SASL 身份认证能力。

图片

MSE 集成 SASL 管理能力,方便用户快捷接入,提升集群安全能力

为了让用户更加便捷地利用 SASL 身份认证功能,MSE 简化了复杂的服务端配置步骤,将其抽象成简单的白屏操作。用户只需在 MSE 控制台几步操作,即可轻松启动服务端的 SASL 认证功能。同时 MSE 控制台会自动生成客户端配置,以及引导用户简单配置参数即可让应用接入 SASL 能力,无需深入繁琐的技术细节即可提升ZooKeeper 的安全能力。

图片

通过在 MSE 控制台一键配置 SASL 用户信息,屏蔽 ZooKeeper 本身的复杂配置

图片

通过参数配置,一键开启集群强制校验 SASL 身份信息以及禁用敏感信息四字命令

在开启了服务端和客户端强制 SASL 身份认证能力之后,未配置用户信息或者用户信息错误的客户端将无法再连接到 ZooKeeper Server。同时 MSE 提供用户管理,密码轮转等能力,在必要时刻能够快速轮转,和用户禁用。

通过以上配置,集群将会开启强制认证客户端 SASL 身份认证,无法通过身份认证的客户端将无法对服务端发起请求,从而有效降低了 Zookeeper 集群内部数据泄漏的风险,并且降低了手动运维的风险和复杂度。

兼容多种使用场景

1. Dubbo

使用 Dubbo 支持通过此种方式配置 SASL 身份认证能力,在 Dubbo 的使用场景中,需要确保使用的 ZooKeeper 依赖版本在 3.4.x 及以上版本才支持,配置过程和一般使用 ZooKeeper 客户端的方式相同。

2. SpringCloud

SpringCloud 使用的 spring-cloud-starter-zookeeper-discovery 依赖默认全部版本都支持,配置过程和一般使用 ZooKeeper 客户端的方式相同。

3. Kafka

kafka 所有版本依赖的 Zookeeper 客户端都支持使用 sasl 身份认证,配置过程和一般使用 ZooKeeper 客户端的方式相同。

4. 大数据生态

支持 Hadoop,Hbase,Hive 等依赖 ZooKeeper 的大数据组件(需要这些组件依赖的 ZooKeeper 版本在 3.4.x 及以上版本)。

5. 基于 ZooKeeper Java 客户端的所有场景

应用中使用 ZooKeeper java SDK 的其他场景都支持接入 SASL(需要依赖的ZooKeeper 版本在 3.4.x 及以上版本)。

小结

ZooKeeper 作为应用的核心中间件在业务流程中存储着敏感数据,具有关键作用。正确且规范的使用方法对确保数据安全至关重要,否则可能会因操作不当而导致内部数据泄露,进而带来严重的安全风险。因此,在日常的 ZooKeeper 运维和使用过程中,标准化和安全的操作对于加强企业安全防护和能力建设显得格外关键。为了实现这一目标,MSE 提供了一整套标准化流程,帮助用户以更安全、更简便的方式使用 ZooKeeper,从而加速企业安全能力的提升同时最大程度地降低在变更过程中可能出现的风险。

标签:防盗,配置,ZooKeeper,认证,篡改,SASL,MSE,客户端
From: https://www.cnblogs.com/alisystemsoftware/p/18347505

相关文章

  • zookeeper集群+kafka集群
    目录zookeeper集群概念数据流向图zookeeper集群实验架构实现步骤kafka集群概念消息队列的模式kafka的组件kafka的工作流程kafka集群实验创建主题生产者发布信息消费者订阅,消费信息查看topic当中的主题查看主题的详细信息删除主题修改分区数总结zookeepe......
  • linux centos7部署zookeeper以及kafka
    一、部署zookeeper集群1.服务器配置,最好是在同一网段的IP服务器IP地址主机名node1192.168.116.6zknode1node2192.168.116.16zknode2node3192.168.116.26zknode31.1改主机名临时改主机名命令hostnametest1永久修改主机名hostnamectlset-hostnamezknode1注:要想更改后......
  • Zookeeper未授权访问漏洞
    Zookeeper未授权访问漏洞Zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。Zookeeper的默认开放端口是2181。Zookeeper安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内进......
  • Zookeeper之HA
    HA步骤配置之前先拍摄快照(重要)快照名称设置为Zookeeper配置免密登录#在node1节点执行ssh-keygen-trsa#三次回车之后ssh-copy-idnode1ssh-copy-idnode2ssh-copy-idmaster关闭所有Hadoop#关闭Hadoopstop-all.sh在core-site.xml中添加如下配置:--注......
  • charles教程与篡改接口数据
    charles简介Charles是一款常用的网络代理工具,可以用来监控、调试和分析网络请求和响应数据。它可以截取HTTP和HTTPS流量,在代理服务器和目标服务器之间建立连接,允许用户便捷地查看和记录网络通信数据,包括请求URL、请求头部、请求体、响应头部、响应体等信息。使用Ch......
  • 大数据场景下的Zookeeper集群的搭建
    本篇文件将介绍如何搭建zookeeper集群,并集合大数据相关组件介绍zookeeper的功能一、Zookeeper是做什么的,我们搭建它有什么用处Zookeeper是一个分布式的服务管理框架,它负责存储和管理大家都关心的数据,基于观察者涉及模式,Zookeeper接受观察者的注册,一旦这些数据的状态发生了变......
  • zookeeper未授权访问(CVE-2014-085)
    漏洞描述默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据漏洞影响ApacheZooKeeper漏洞复现Ap......
  • zookeeper、kafka单机版安装 https://www.cnblogs.com/dogleftover
    zookeeper、kafka单机版安装前提已经安装了jdk1.8、zookeeper3.6.3主机名:master映射:192.168.128.129master安装zookeeper单机版#将apache-zookeeper-3.6.3-bin.tar.gz上传到服务器#解压tar-zxvfapache-zookeeper-3.6.3-bin.tar.gz#移动mv/home/apache-zookeeper-3......
  • nginx灰度发布、网站限速和防盗链
    一、灰度发布(金丝雀发布)灰度发布时使用比较平稳的过渡方式升级或者替换产品项目的方法统称主要作用及时发现项目问题尽早获取用户反馈的信息,以改进产品如果项目产生问题,可以将问题影响控制到最小范围【1】、基于不同IP进行灰度发布proxy代理web01开启80端口开启8......
  • BGP(Border Gateway Protocol,边界网关协议)劫持是指恶意或非法地篡改BGP路由信息的行为
    BGP(BorderGatewayProtocol,边界网关协议)劫持是指恶意或非法地篡改BGP路由信息的行为。BGP是互联网上用来交换路由信息的主要协议之一,它负责决定网络数据包应该如何从一个网络路由到另一个网络。BGP劫持可以分为两种主要类型:前缀劫持(PrefixHijacking):在前缀劫持中,攻击者发送......