热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:配置ZookeeperACL权限

本文由编程笔记#小编为大家整理,主要介绍了配置Zookeeper ACL权限相关的知识,希望对你有一定的参考价值。==背景==阿里云ECS服务器提示“ZooKeeper未授权访问高危风险&
本文由编程笔记#小编为大家整理,主要介绍了配置Zookeeper ACL权限相关的知识,希望对你有一定的参考价值。

==背景==

阿里云ECS服务器提示“ZooKeeper未授权访问高危风险”

 

==相关组件及版本==

Linux:Centos 8.0

Zookeeper:3.5.6

Hadoop:2.8.3

Flink:1.10.0

 

==Zookeeper ACL介绍==

网上随便找一个网站看看就应该可以了解了,我看的是:https://blog.csdn.net/qq_34021712/article/details/82871976

 

【ACL 权限控制】

使用:scheme:id:perm 来标识,主要涵盖 3 个方面:

权限模式(Scheme):授权的策略

授权对象(ID):授权的对象

权限(Permission):授予的权限

其特性如下:

ZooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限

每个znode支持设置多种权限控制方案和多个权限

子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点

 

《scheme》

采用何种方式授权

world:默认方式,相当于全部都能访问

auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)

digest:即用户名:密码这种方式认证,这也是业务系统中最常用的。用username:password 字符串来产生一个MD5串,然后该串被用来作为ACL ID。

认证是通过明文发送username:password 来进行的,当用在ACL时,表达式为username:base64 ,base64是password的SHA1摘要的编码。

ip:使用客户端的主机IP作为ACL ID 。这个ACL表达式的格式为addr/bits ,此时addr中的有效位与客户端addr中的有效位进行比对。

 

《ID》

给谁授予权限

授权对象ID是指,权限赋予的用户或者一个实体,例如:IP 地址或者机器。


























授权模式授权对象
IP 通常是一个IP地址或IP段,例如“192.168.29.100”或“192.168.29.100/110”
Digest自定义,通常是“username:BASE64(SHA-1(username:password))”,例如"foo:kWN6aNsbjcKWpqjiV7cg0N24raU="
Word只有一个ID:“anyone”
Super与Digest模式一致

 

《permission》

授予什么权限

CREATE   c 可以创建子节点

DELETE   d 可以删除子节点(仅下一级节点)

READ       r 可以读取节点数据及显示子节点列表

WRITE     w 可以设置节点数据

ADMIN     a 可以设置节点访问控制列表权限

注意:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限

 

==设置ACL权限(Digest模式)==

语法:

digest:username:BASE64(SHA1(password)):cdrwa

 

1、生成密文

提前准备好用户名和密码的密文: 

echo -n zk_admin:RexelZkAdmin#982 | openssl dgst -binary -sha1 | openssl base64

技术图片

生成的密文为:

ohtM2mRqgIWcdWOUvA6Cc9lUQrY=

 

2、启动Zookeeper

在3个节点上分别执行命令:

sh /home/radmin/zookeeper-3.5.6/bin/zkServer.sh start

 

3、进入zkCli命令行

在任意一个几点上执行命令,启动zk客户端

sh /home/radmin/zookeeper-3.5.6/bin/zkCli.sh

 

4、查看目标节点的Acl

目标节点:/hadoop-ha

技术图片

 

5、创建节点并设置ACL

命令:

setAcl /hadoop-ha digest:zk_admin:ohtM2mRqgIWcdWOUvA6Cc9lUQrY=:cdrwa

 

6、验证ACL

setAcl之后,可以尝试getAcl查看权限,会发现权限失败,通过addauto为当前session添加授权信息之后,就可以查看了。

命令:

getAcl /hadoop-ha
addauth digest zk_admin:RexelZkAdmin#
982
getAcl
/hadoop-ha

技术图片

 

==设置Hadoop Zookeeper ACL==

1、配置core-site.xml

在原有配置基础之上,增加以下4个配置:

ha.zookeeper.auth
ha.zookeeper.acl
ha.zookeeper.parent
-znode
ha.zookeeper.session
-timeout.ms

 

配置之后的core-site.xml如下:



hadoop.tmp.dir
/home/radmin/data/hadoop/tmp


fs.defaultFS
hdfs://ns


dfs.journalnode.edits.dir
/home/radmin/data/hadoop/journal


ha.zookeeper.quorum
vm1:2181,vm2:2181,vm3:2181


ha.zookeeper.auth
@/home/radmin/hadoop-2.8.3/etc/hadoop/zk-auth.txt


ha.zookeeper.acl
@/home/radmin/hadoop-2.8.3/etc/hadoop/zk-acl.txt


ha.zookeeper.parent-znode
/hadoop-ha


ha.zookeeper.session-timeout.ms
5000


 

zk-auth.txt内容如下:

digest:zk_admin:RexelZkAdmin#982

 

zk-acl.txt内容如下:

digest:zk_admin:ohtM2mRqgIWcdWOUvA6Cc9lUQrY=:cdrwa

 

【小贴士】

可以通过以下命令来获取acl。命令:

java -cp /home/radmin/zookeeper-3.5.6/lib/*:/home/radmin/zookeeper-3.5.6/lib/zookeeper-3.5.6.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider zk_admin:RexelZkAdmin#982

技术图片

 

2、重新启动Hadoop集群

##hadoop首次启动(需要按顺序)
[
1]hdfs zkfc -formatZK
[
1][2][3]hadoop-daemon.sh start journalnode
[
1]hdfs namenode -format
[
1]hadoop-daemon.sh start namenode
[
2]hdfs namenode -bootstrapStandby
[
2]hadoop-daemon.sh start namenode
[
1][2]hadoop-daemon.sh start zkfc
[
1][2][3]hadoop-daemon.sh start datanode
[
1][2]yarn-daemon.sh start resourcemanager
[
1][2][3]yarn-daemon.sh start nodemanager
##hadoop正常启动(需要按顺序)
[
1][2][3]hadoop-daemon.sh start journalnode
[
1][2]hadoop-daemon.sh start namenode
[
1][2]hadoop-daemon.sh start zkfc
[
1][2][3]hadoop-daemon.sh start datanode
[
1][2]yarn-daemon.sh start resourcemanager
[
1][2][3]yarn-daemon.sh start nodemanager

 

3、确认Yarn和Hdfs的web页面是否可用。

http://192.168.29.100:8088

http://192.168.29.100:50070

 

==Flink Zookeeper ACL==

1、修改flink-conf.xml的配置

配置项:

high-availability.zookeeper.client.acl: open

技术图片

 

2、启动Flink集群

命令:

cd /home/radmin/flink-1.10.0/bin/
.
/start-cluster.sh

 

3、确认集群状态

查看Web页面:http://192.168.29.100:8081

运行样例程序,以确认程序可以正常运行。

 


推荐阅读
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文详细介绍了 Charles 工具的下载、安装、配置及使用方法,特别针对 HTTP 和 HTTPS 协议的数据抓取进行了说明。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
author-avatar
姜亦珊边_135
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有