Kerberos01:Kerberos基本概念和服务端安装

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

前言

在大数据中,为了实现多租户环境下的数据、资源隔离,通常使用Kerberos认证来保证。常用于HDFS、Yarn、Kafka等大数据组件中。

基本概念

首先先了解一下Kerberos中常用的基本概念。

Kinit

请求缓存当前Principal的TGT,可以使用密码或者Keytab。

kinit -kt/path/to/keytabname@realm
复制代码

kdestroy

删除对当前缓存的TGT

Realm

Kerberos的一个认证管理域,其约束条件如下。

  1. 同一个域的用户使用同样的认证方案
  2. 在属于一个认证服务的边界内,这个认证服务才有权利认证一个用户,也有交叉认证
  3. realm的名字都用大写字母,通常realm名字和DNS域名一致
  4. 这个realms跟机器的host没有大关系

Principal

客户端和服务器唯一的名字,密码只有自己和认证服务器AS知道

  1. 用于引用认证服务数据库(AD)中的一个条目,密码存于AD和keytab
  2. 用户:Name[/Instance]@REALM
  3. 服务:Service/Hostname@REALM第一个是service名字,第二个是提供这个服务的机器的完全主机名(FQDN),DNS对应用服务器的IP地址进行逆向解析后得到的主机名
  4. 特例:krbtgt/REALM@REALM:TGT服务,用于申请Session Ticket

Keytab

以文件的形式呈现,存储了一个或多个Principal的长期的key用途和密码类似,用于kerberos认证登录;其存在的意义在于让用户不需要明文的存储密码,和程序交互时不需要人为交互来输入密码。

使用步骤

  1. 配置好krb5.conf(可以设置Ticket更新时间)
  2. 在KDC.conf中添加好principal,将密码dump回本地存为keytab给服务

服务器端安装

安装软件

yum install krb5-server krb5-libs krb5-auth-dialog
复制代码

配置文件/etc/krb5.conf

  1. bdx.sd.cmcc = BDX.SD.CMCC:所有在bdx.sd.cmcc此domain下host都被归属为BDX.SD.CMCC这个realm中,个人认为domain是hosts中的全名
  2. bdx.sd.cmcc = BDX.SD.CMCC:所有hostname包含bdx.sd.cmcc归属后面realm
  3. realm中default_domin这个属性是将krb4中的xx.hostname的service principal转换成krb5中xx/hostname.domain的形式

Guess you like

Origin juejin.im/post/7034535303062913031