热门标签 | 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

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

 


推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
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社区 版权所有