logo资料库

CDH开启Kerberos+Sentry权限控制-实施配置指南.doc

第1页 / 共128页
第2页 / 共128页
第3页 / 共128页
第4页 / 共128页
第5页 / 共128页
第6页 / 共128页
第7页 / 共128页
第8页 / 共128页
资料共128页,剩余部分请下载后查看
1.前言
2.版本信息
2.1.文档版本
2.2.环境版本
2.3.CDH集群组件版本
3.前提
4.安装配置Kerberos
4.1.检查是否已经安装
4.2.安装Kerberos
4.2.1.Server节点安装Kerberos相关软件
4.2.2.Client节点安装Kerberos相关软件
4.3.配置Kerberos
4.3.1.kdc文件配置
4.3.2.krb5文件配置
4.3.3.同步krb5到Client(客户端)节点
4.3.4.生成Kerberos数据库
4.3.5.(可选)重新创建Kerberos数据库
4.3.6.创建Kerberos管理员主体/实例并授权
4.4.启动Kerberos并设置开机启动
4.4.1.Server节点启动Kerberos服务
4.4.2. Server节点设置开机启动Kerberos服务
4.4.3.检查启动情况
4.4.3.1.查看启动日志
4.4.3.2.Kinit管理员检查
4.4.3.3.客户端检查
4.5.常用命令
4.5.1.登录Kerberos
4.5.2.创建Kerberos主体
4.5.3.修改Kerberos主体密码
4.5.4.查询所有的Kerberos的主体
4.5.5.生成keytab密钥文件
4.5.6.删除Kerberos主体
4.5.7.主体认证
4.5.8.销毁凭证
4.5.9.启动重启停止Kerberos服务命令
4.6.安装和使用Kerberos异常问题
4.6.1.创建Kerberos数据库过程可能会在loading random data中等待很长时间
4.6.2.Kerberos启动后台日志提示异常:No such file or directory - whi
4.6.3.kinit通过keytab认证出现异常kinit: ???? while getting initi
4.6.4.kinit进行主体密码认证时候,明明密码正确,为什么一直提示密码错误
4.6.5.Kerberos创建数据库异常:Bad krb5 admin server hostname whi
4.6.6.进行kinit认证凭证异常:Cannot determine realm for host: hos
4.6.7.异常问题:Configuration file does not specify default r
4.6.8.异常问题:Incorrect net address
5.安装配置DNS本地域名
5.1.1.安装Dnsmasq
5.1.2. 配置Dnsmasq
5.1.2.1.查看dnsmasq的【配置路径】
5.1.2.2.修改dnsmasq.conf配置
5.1.3.修改resolv.conf配置
5.1.3.1.备份resolv.conf文件
5.1.3.2.修改resolv.conf配置
5.1.3.3.同步resolv.conf到其他节点
5.1.4.创建resolv.dnsmasq.conf文件并dns服务器的地址
5.1.5.创建dnsmasq.hosts文件
5.1.6.添加dnsmasq.hosts路径到dnsmasq.conf
5.1.7.同步dnsmsql.conf到其他节点
5.1.8.启动Dnsmasq并设置开机启动
5.1.9.测试Dnsmasq(每个节点)
5.1.10.本地域名检查(每个节点)
6.CDH集群添加Sentry组件
6.1.创建元数据库(Mysql)
6.2.准备Mysql驱动的Jar包并复制到Sentry
6.3.集群添加Sentry组件
7.CDH集群启动Kerberos
7.1.创建Kerberos管理员用户
7.2.删除掉Spark (Standalone)
7.3.集群中安装Spark服务(Spark On Yarn)
7.3.1.集群添加Spark服务
7.3.2.在Yarn服务中添加Gateway服务
7.3.3.在Hive服务修改spark_on_yarn_service为Spark
7.3.4.部署客户端配置重启集群
7.4.集群开启Kerberos
7.4.1.停止掉全部的服务
7.4.2.开启Kerberos
8.CDH集群配置修改
8.1.停止所有服务
8.1.1.停止CDH集群所有服务
8.1.2.停止Clodera Manage所有服务
8.2.Senter配置修改
8.2.1.管理员组添加admin用户和组,并删除其他用户
8.2.2.连接用户中添加admin用户和组
8.2.3.Sentry 服务高级配置代码段修改
8.3.HDFS配置修改
8.3.1.开启Hadoop安全身份验证
8.3.2.开启Hadoop安全授权
8.3.3.修改Hadoop组映射实现
8.3.4.启动访问控制列表
8.3.5.启动检查HDFS权限并启动Sentry同步
8.3.6.修改管理员用户和授权用户
8.4.Yarn配置修改
8.4.1.修改运行系统用户
8.4.2.修改最小用户ID
8.4.3.启用 ResourceManager AC
8.5.Hive配置修改
8.5.1.配置Sentry服务
8.5.2.HiveServer2关闭模拟
8.5.3.启动Hive仓库子目录继承权限
8.5.4.设置sentry.hive.testing.mode为false
8.5.5.设置hive.security.authorization.task.factory
8.5.6.设置Hive Metastor Server的hive-site.xml
8.6.HBase配置修改
8.6.1.设置HBasea安全身份证验证
8.6.2.启动HBase安全授权
8.6.3.启动HBase行级授权
8.7.Zookeeper配置修改
8.8.Kafka配置修改
8.8.1.设置Kafka安全身份验证
8.8.2.设置Kafka认证方式
8.8.3.配置kakfa.properties
8.8.4.Kafka支持命令行的Kinit认证
8.8.4.1.创建jaas文件
8.8.4.2.修改kafka-run-class.sh文件
8.8.5.生成producer.properties和consumer.properties文件
8.8.6.设置zookeeper.chroot
8.9.部署客户端配置并启动全部服务
9.集群各组件测试权限
9.1.创建各组件的Kerberos超级管理员的主体
9.1.1.创建admin主体 (用于Sentry的管理员)
9.1.2.创建hdfs主体
9.1.3.创建hbase主体
9.1.4.创建yarn主体
9.1.5.创建zookeeper主体
9.1.6.创建hive主体
9.1.7.创建kafka主体
9.1.8.创建spark主体
9.1.9.创建flume主体
9.2.测试用户准备
9.2.1.Linux创建用户
9.2.2.HDFS创建用户文件目录
9.2.3.Kerberos创建对应主体
9.3.HDFS权限检查测试
9.3.1.没有任何的Kerberos凭证情况下测试HDFS权限
9.3.2.通过身份凭证测试HDFS权限
9.4.Hive权限检测测试
9.4.1.创建Hive库的超级管理员
9.4.2.创建Hive测试数据库和测试表
9.4.2.1.创建Hive测试数据库
9.4.2.2.创建测试表
9.4.2.3.创建测试数据
9.4.2.4.导入测试数据到Hive测试表
9.4.3.给用户授权
9.4.3.1.库授权-给user1授权db1数据库的所有权限
9.4.3.2.库授权-给user2授权db2数据库的全部权限
9.4.3.3.表授权-给user3授权db2库下的table1表的全部权限
9.4.4.权限测试
9.4.4.1.管理员admin测试权限
9.4.4.2.用户user1测试
9.4.4.3.用户user2测试
9.4.4.4.用户user3测试
9.5.HBase权限授权测试
9.5.1.建立测试namespace
9.5.2.创建测试表
9.5.3.put测试数据到测试表
9.5.4.给用户授权
9.5.4.1.给user1授权namespace为test1_ns的读写创建删除权限
9.5.4.2.给user2授权namespace为test2_ns的只读权限
9.5.4.3.给user3授权namespace为test2_ns下的table1表读写权限(注意这样没有@了~)
9.5.5.权限测试
9.5.5.1.用户user1权限测试
9.5.5.2.用户user2权限测试
9.5.5.3.用户user3权限测试
9.6.Spark读取权限测试
9.6.1.测试user1用户通过Spark读取Hive的db1下面的表
9.6.2.测试user2用户通过SparkSql读取Hive的db1下面表
9.6.3.测试user3用户,它拥有db2下的table1的权限,但是没有table2的权限
9.7.Kafka权限测试
9.7.1.Kafka的super.users用户测试
9.7.1.1.管理员创建topic
9.7.1.2.创建生成生产者,并生成测试数据
9.7.1.3.创建消费者消费数据
9.7.2.Kafka的非super.users用户测试
9.7.3.(补充)如何添加Kafka授权
10.开启Kerberos后异常问题处理
10.1.Zookeeper集群启动异常
10.2.HBase的Master启动异常
10.2.1.异常1:com.google.protobuf.InvalidProtocolBufferExcep
10.2.2.异常2: A minimum HFile version of 3 is required to p
10.2.3.异常3:HBase file layout needs to be upgraded. You ha
10.2.4.异常4:因为 Service Monitor 未找到活动 Master
10.3.Spark异常问题
10.3.1.异常1: 授权用户(除了spark和hadopp)提交作业异常:ERROR spark.SparkC
10.3.2.异常2:a secret key must be specified via the spark.a
10.3.3.异常3:Spark部署客户端异常
10.3.4.异常4:yarn.YarnAllocator: Expected to find pending r
10.4.sentry 启动异常提示mysql的driver类找不到
10.5.Hive异常问题:Hive Metastore canary 创建数据库失败。
10.6.Kafka开启SASL验证后创建新的生产组报错
10.7.Kafka授权报错:KeeperErrorCode = NoAuth for /kafka-acl/
10.8.Kafka创建生产者异常:Failed to construct kafka producer
11.结语
CDH 开启 Kerberos+Sentry 权限控制 内部资料,注意保密 CDH 开启 Kerberos+Sentry 权限控制 实施配置指南 2017-11-20 1
CDH 开启 Krb5+Sentry 权限控制 1.前言 基于生成环境和公司集成环境的大数据 Hadoop 集群的安全问题越来越受到重视,必要 有一个比较完善的安全机制规避外界可能非安全性的接入、连接、操作,基于现有 Clouder a Manager 大数据集群管理进行安全隐患规避,从而引进相对的安全认证体现 Kerberos+Sen try 的权限控制体系。 通过 Kerberos+Sentry 的认证授权体现对 Cloudera Manager 集群的组件如 HBase 数据库、 Hive 数据仓库、HDFS 文件系统、Yarn 分布式计算框架、Spark、Kafka 等的外部接入、连接、 操作、提交计算命令等权限控制。可以有效的规避集群的安全性隐患,从而达到大数据集群 的相对安全,从而保障了维护和实施的数据安全和规避集群非法连接非法操作,是大数据集 群安全性保障的一种有效的手段。 本文档的前提是已经安装好 CDH 集群并且已经安装各组件包含 HDFS、Yarn、Sqoop2、 HBase、Hive、Spark、Kafka、Flume、Solr 等。 本文档针对群体包含大数据开发人员、大数据集群 Cloudera Manager 运维人员、大数 据组件授权管理人员等。 特别警告一定要在 CDH 集群搭建之处使用本文档进行配置,如果是生产环境已经投入 使用的集群参考此文档进行配置,出现问题一概与此文档无关, 特此声明!!! 2
CDH 开启 Krb5+Sentry 权限控制 2.版本信息 2.1. 文档版本 简介 目的 CDH 开启 Krb5+Sentry 权限控制-实施配置指南 本文宗旨对指导实施配置人员对大数据集群的权限配置、以及如何授权 2.2. 环境版本 CDH 5.7.1 Linux Kerberos Kafka Mysql CentOS 6.5 1.10.3-65.el6.x86 _64 KAFKA-3.0.0-1.3. 0.0.p0.40-el6.par cel.sha1 mysql-5.1.73-8.el 6_8.x86_64 备注:这里为什么单独列 Kafka 组件版本,是因为 Kafka 不是 CDH 集成的组件,需要单独安 装 Parcel,这列举的也是 Kafka 的 Parcel 的版本。至于 CDH 怎么完美集成 Kafka 请查看下面 文档: http://blog.csdn.net/u010077555/article/details/78338136 2.3. CDH 集群组件版本 Component Flume-ng Apache Hadoop Hbase Apache Hive Hue Apache Impala (Incubat ing) Package Version Flume-ng-1.6.0-cdh5.7.1 hadoop-2.6.0-cdh5.7.1 hbase-1.2.0-cdh5.7.1 hive-1.1.0-cdh5.7.1 hue-3.9.0-cdh5.7.1 impala-2.5.0-cdh5.7.1 3
CDH 开启 Krb5+Sentry 权限控制 Kite SDK Apache Oozie Apache Pig Cloudera Search Apache Sentry Apache Solr Apache Spark Apache Sqoop Apache Sqoop2 Zookeeper kite-1.0.0-cdh5.7.1 oozie-4.1.0-cdh5.7.1 pig-0.12.0-cdh5.7.1 search-1.0.0-cdh5.7.1 sentry-1.5.1-cdh5.7.1 solr-4.10.3-cdh5.7.1 spark-1.6.0-cdh5.7.1 sqoop-1.4.6-cdh5.7.1 sqoop2-1.99.5-cdh5.7.1 zookeeper-3.4.5-cdh5.7.1 备注:这里只是列举比较常用的,如果要看详细版本信息点击下面网址: https://www.cloudera.com/documentation/enterprise/release-notes/topics/cdh_vd_cdh_package_tarball_57.ht ml#concept_yo6_bin_yk 4
CDH 开启 Krb5+Sentry 权限控制 3.前提  大数据集群环境已经安装好了 CDH5.7.1 和 Cloudera Manager5.7.1  Mysql 已经安装 mysql-5.1.73-8.el6_8.x86_64 版本  Linux 环境都是按照 CDH 的安装进行配置完成  各节点的时钟已经同步  Yum 源已经安装  JDK 1.8  主机配置,此文档配置如下: 192.168.19.201 hadoop01 192.168.19.202 hadoop02 192.168.19.203 hadoop03 192.168.19.204 hadoop04 如果没有安装这些可以参考下面网址教程进行相关配置: http://blog.csdn.net/u010077555/article/details/78340141 这里就不做介绍。 注意:后续都不会出现 ip,只会以本地域名的 hostname 出现。 5
CDH 开启 Krb5+Sentry 权限控制 4.安装配置 Kerberos 如果您的 CDH 集群已经安装配置好了 Kerbers 此过程可以忽略跳过 4.1. 检查是否已经安装  检查 Kerberos 安装情况 rpm -qa | grep krb5 特别提醒:如果是公安内网(镜像文件已经安装好 Kerberos)谨慎进行下面卸载操作步骤  如果已经安装进行卸载,执行下面命令进行卸载 yum -y remove krb5 注意:如果是内网安装,请谨慎选择此卸载步骤。 4.2. 安装 Kerberos 如果已经内网环境已经安装好 Kerberos 不需要重新安装,可跳过此节内容 4.2.1.Server 节点安装 Kerberos 相关软件  通过下面命令进行安装 yum install -y krb5-server krb5-workstation krb5-libs ~~~~中间过程===省,直接看最后的安装结果 6
CDH 开启 Krb5+Sentry 权限控制 出现此结果证明已经安装成功!  查看安装结果 rpm -qa | grep krb5 注意:此文档选择了 hadoop01 节点作为 Krb5 的 Server 节点,具体安装时候可根据需求自己 选择 Server 节点. 4.2.2.Client 节点安装 Kerberos 相关软件  本文档的集群客户端节点有 3 个,此文图文只展示 hadoop02 的客户端节点 的安装,其他客户端节点安装过程完全一样。  执行下面命令进行 hadoop[02-04]节点安装 yum install -y krb5-workstation krb5-libs 中间过程省~~~~~~~~~~~ 7
CDH 开启 Krb5+Sentry 权限控制 看到此处证明安装成功!  查看安装结果 rpm -qa | grep krb5 注意:Client(客户端)节点是指除了 Server 节点以外的全部其他节点,比如我们集群有 4 个节点,hadoop01 作为 Kerberos 的 Server,那么其他 hadoop02-04 作为 Client(客户端) 节点。 4.3. 配置 Kerberos 需要配置的文件有两个为 kdc.conf 和 krb5.conf , 配置只是需要 Server 服务 节点配置,也就是 hadoop01 节点。 4.3.1.kdc 文件配置  查看 krb5 的配置文件路径 执行下面命令进行查看 whereis krb5  编辑修改 kdc.conf,执行下面命令 vim /var/kerberos/krb5kdc/kdc.conf  vi 编写修改内容如下 [kdcdefaults] 8
分享到:
收藏