Kerberos知识点总结
Kerberos简介
Kerberos是一种计算机网络认证协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。
Kerberos认证原理
1)KDC(Key Distribute Center):密钥分发中心,负责存储用户信息,管理发放票据。
2)Realm:Kerberos所管理的一个领域或范围(一系列服务或用户),称之为一个Realm。
3)Rrincipal:Kerberos所管理的一个用户或者一个服务,可以理解为Kerberos中保存的一个账号,其格式通常如下:primary/instance@realm (用户名或服务名/主机名@域名)
4)keytab:Kerberos中的用户认证,可通过密码或者密钥文件证明身份,keytab指密钥文件。
Kerberos部署
安装Kerberos相关服务
选择集群中的一台主机作为Kerberos服务端,安装KDC
所有主机都需要部署Kerberos客户端
修改配置文件
服务端配置文件:realms
客户端配置文件:kdc、admin_server
初始化KDC数据库
启动Kerberos相关服务
启动KDC、启动Kadmin(KDC数据库访问入口)
创建Kerberos管理员用户
Kerberos使用
Kerberos数据库操作
1)登录数据库
本地登录(无需认证):kadmin.local
远程登录:kadmin
2)创建Kerberos主体:addprinc test
3)删除Kerberos主体:delprinc test
4)查看所有主体:list_principals
Kerberos认证操作
1)密码认证:kinit
2)生成密钥文件:xst -norandkey -k /root/test.keytab test@EXAMPLE.COM
-norandkey的作用是声明不随机生成密码,若不加该参数,会导致之前的密码失效
3)密钥文件认证:kinit -kt /root/test.keytab test
4)查看凭证:klist
5)销毁凭证:kdestroy
Hadoop开启Kerberos
创建Hadoop系统用户
为Hadoop开启Kerberos,需为不同服务准备不同的用户,启动服务时需要使用相应的用户。
hdfs:hadoop、yarn:hadoop、mapred:hadoop
为Hadoop各服务创建Kerberos主体
1)路径准备:存储密钥文件
2)管理员主体认证
3)登录数据库客户端
4)创建主体
addprinc -randkey test/test
xst -k /etc/security/keytab/test.keytab test/test
主体:nn/hadoop102、dn/hadoop103......jhs/hadoop102、HTTP/hadoop102......
修改Hadoop配置文件
1)core-site.xml
启用Kerberos、启用仅认证、主体到系统用户的映射
2)hdfs-site.xml
启用仅认证、指定各服务的Kerberos主体和密钥文件路径
3)yarn-site.xml
指定各服务的Kerberos主体和密钥文件路径
4)mapred-site.xml
指定各服务的Kerberos主体和密钥文件路径
配置HDFS使用HTTPS安全传输协议
1)生成 keystore的密码及相应信息的密钥库
2)修改keystore文件的所有者和访问权限
3)将该证书分发到集群中的每台节点的相同路径
4)修改hadoop配置文件ssl-server.xml.example
5)分发ssl-server.xml文件
配置Yarn使用LinuxContainerExecutor
默认为DefaultContainerExecutor,区别在于DefaultContainerExecuto 启动Container的用户为NodeManager的启动用户
而LinuxContainerExecutor 启动Container的用户为提交job的用户
修改特定本地路径权限
启动HDFS
需要注意的是,启动不同服务时需要使用对应的用户
修改HDFS特定路径访问权限
启动Yarn、HistoryServer
Hadoop安全集群使用说明
用户要求
1)集群中的每个节点都需要创建该用户
2)该用户需要属于hadoop用户组
3)需要创建该用户对应的Kerberos主体
访问HDFS集群文件
1)认证
2)执行命令
3)注销认证
Hive开启Kerberos
前置要求
1)Hadoop集群启动Kerberos认证
2)创建Hive系统用户和Kerberos主体
创建系统用户、创建Kerberos主体并生成keytab文件、修改keytab文件所有者和访问权限
配置认证
1)修改hive-site.xm:
HiveServer2和Metastore启用认证并指定Kerberos主体和密钥文件路径
2)修改/hadoop/core-site.xml:使用hive代理用户
启动hiveserver2
使用hive用户启动
Hive Kerberos认证使用说明
认证
使用beeline客户端连接hiveserver
!connect jdbc:hive2://hadoop102:10000/;principal=hive/hadoop102@EXAMPLE.COM
数仓全流程
用户准备
1)在各节点创建hive用户
2)为hive用户创建Keberos主体
创建主体、生成keytab文件、修改keytab文件所有者和访问权限、分发keytab文件
注意:此处用户供脚本使用,所以使用密钥文件认证
数据采集通道脚本修改
用户行为日志
a1.sinks.k1.hdfs.kerberosPrincipal=hive@EXAMPLE.COM
a1.sinks.k1.hdfs.kerberosKeytab=/etc/security/keytab/hive.keytab
业务数据
kinit -kt /etc/security/keytab/hive.keytab hive
数仓各层脚本修改
kinit -kt /etc/security/keytab/hive.keytab hive
修改HDFS特定路径所有者
认证为hdfs用户,执行以下命令并按提示输入密码
修改数据采集目标路径
修改数仓表所在路径
修改hive家目录/user/hive
修改spark.eventLog.dir路径
启动Azkaban
在各节点创建azkaban用户
将各节点Azkaban安装路径所有者改为azkaban用户
使用azkaban用户启动Azkaban
注意:azkaban不需要直接和Hadoop交互,不需要kerberos主体