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主体

 

 

posted @ 2022-05-18 17:01  1243741754  阅读(545)  评论(0编辑  收藏  举报