如何控制 hadoop 的用户访问权限
Hadoop 默认所有人均可访问操作,这个漏洞可以通过设置“安全访问参数”堵上。
版本基于CDH5.14
2. 解决思路和方法
首先要设置 hadoop.security.authorization = true 开启ServiceLevel Authorization:

这里打完勾后,应该要重启下 scm:sudo systemctl restart cloudera-scm-server
2.1. 控制 hdfs 访问权限
登陆 CDH
在主页上,点 “配置”,选高级代码段
搜索 “hadoop-policy.xml 的 HDFS 服务高级配置代码段(安全阀)”,添加一行,内容如下:

保存后,重启 hdfs 服务即可
还有,别指望用命令行来处理。。。CM 是个黑盒,很多配置都是直接从数据库读取(页面配置存入数据库而不是配置文件),然后动态生成配置文件分配给各个客户端使用的。
检测方式:
使用一个不在列表中的用户登陆服务器,然后执行 hdfs 查询命令:
hdfs dfs -ls /
# 使用列表中的用户应该能正常列出根目录的内容
# 如果使用 列表外的用户 报错提示:
# User xxx (auth:SIMPLE) is not authorized for protocol interface org.apache.hadoop.hdfs.protocol.ClientProtocol: denied by configured ACL
# 就说明配置成功了
至此,安全漏洞补上了,下面的 yarn 权限控制属于可选项。。。根据实际需要配置。
2.2. 控制 yarn 任务提交权限
2.2.1. 接口连接访问权限(还没搞定)
有请大神帮忙看下。。。
我具体处理如下:
# 在 hadoop-policy.xml 处,添加以下内容:
key = security.job.client.protocol.acl value = sa_cluster,mapred,yarn
# 也尝试过废弃的 key = security.job.submission.protocol.acl value = sa_cluster,mapred,yarn
# 配置完,重启 yarn
然而,并没什么卵用,我使用自建的一个账号 cfcs 依然可以的提交任务(当然,前提是给 cfcs 这个账号添加了 hdfs 访问权限,否则提交任务时,会被卡在 hdfs 的访问控制上)。
2.3. 提交队列访问权限(这个搞定了)
1、在 CDH 的 yarn 主页,点击资源池:

2、然后点击 “编辑” 并在上面配置对应的控制列表,包括 提交访问控制 和 管理访问控制,按字面意思理解就行

3、保存完注意 要点一下 刷新配置
4、分别使用在列表中的用户和不在列表中的用户提交一个任务看看
测试代码:
hadoop jar /data/sa_cluster/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/jars/hadoop-mapreduce-examples-2.6.0-cdh5.14.4.jar wordcount /tmp/mr/imput /tmp/mr/output/21
# 最后两个参数:/tmp/mr/imput 和 /tmp/mr/output/21 需要你在 hdfs 上创建对应目录并配置测试用户的访问权限
# 如果实在不清楚提交过程的,看看这个:http://hadoop.apache.org/docs/r1.0.4/cn/streaming.html
# 使用 列表中的用户应该能正常提交并执行任务
# 使用 不在列表中的用户会报以下错误:
# Failed to submit application_1569556636858_0001 to YARN : User xxx cannot submit applications to queue root.users.xxx
更多推荐


所有评论(0)