Kerberos
1、 几个概念
- KDC:秘钥分发中心
- Realm:kerberos管理的领域标识
Principal:用户/服务 向kdc注册时候的身份,形式为,主名称/实例名@领域名
* 主名称:可以是用户名/服务名字 * 实例名:可以是用户组/主机ip(host)
2、KDC
Key Distribute Center。
Database(zhangsan/supergroup hdfs/haddop1)
AS: Authentication Server(认证服务器)
用于初始化认证,并生成Ticket Granting Ticket (TGT)
TGS: Ticket Granting Server(票据授权服务器)
在TGT的基础上生成Service Ticket。一般情况下AS和TGS都在KDC的Server上
3、搭建
1 | //重要的三个配置文件 |
部署
- 安装KDC
1 |
|
修改配置
1、服务端配置
- 位置:
1
2
3* 可以配置多个realms,一般建议配置一个,大写
* 配置support_enctype去掉```aes-2560cts:normal```,否则需要下载jar支持这个加密算法。
* ```max_life=1d```(kinit 后一天内不用认证,超过1d会走的那个认证) ```max_renewable_life=7d```(7d后需要再kinit)
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
HADOOP.COM = { #是设定的 realms。名字随意。Kerberos 可以支持多个 realms,会增加复杂度。大小写敏感,一般为了识别使用全部大写。这个realms跟机器的host没有大关系。
#master_key_type = aes256-cts
#和supported_enctypes默认使用aes256-cts。由于,JAVA使用aes256-cts验证方式需要安装额外的jar包(后面再做说明)。推荐不使用,并且删除aes256-cts。
kadmind_port = 749
acl_file = /var/kerberos/krb5kdc/kadm5.acl #标注了admin的用户权限,需要用户自己创建。文件格式是:Kerberos_principal permissions [target_principal] [restrictions] 支持通配符等。最简单的写法是*/admin@HADOOP.COM ,代表名称匹配/admin@HADOOP.COM 都认为是admin,权限是 *。代表全部权限。
dict_file = /usr/share/dict/words
database_name = /var/kerberos/krb5kdc/principal
key_stash_file = /var/kerberos/krb5kdc/.k5.HADOOP.COM
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab #KDC 进行校验的 keytab
max_life = 24h
max_renewable_life = 10d #涉及到是否能进行ticket的renwe必须配置
default_principal_flags = +renewable, +forwardable
supported_enctypes = des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal #支持的校验方式.注意把aes256-cts去掉
}1
2
3
4
5
#### 2、客户端配置
> 每个客户端都需要配置
* 位置:```/etc/krb5.conf
1 | # Configuration snippets may be placed in this directory as well |
3、创建Kerberos数据库
在 kdc安装的机器上运行1
2
3
4
5
#### 4、启动
* 开启kdc:```systemctl start krb5kdc
开启可远程登陆:
start kadmin``` 1
* 开机自启动 ```systemctl enable krb5kdc```、 ```systemctl enable kadmin
检查是否开启自启动:
is-enabled krb5kdc```、```systemctl is-enabled kadmin``` 1
2
3
4
#### 5、数据库登陆方式(类似mysql登陆)
* kdc本地登陆(用户名&密码):```kadmin.local- 远程登陆()
6、kdc 账号操作
- 新增(默认的域可以省略) :addprinc hf/hfgrioup[@HADOOP.COM]
- 删除:delprinc hf
7、kerberos 主体认证 (互斥)
- 用户名+密码:
hf``` 1
* 秘钥
// 生成秘钥
xst -k /home/username/user.keytab user/ugroup
// 认证
kinit -kt /home/username/user.keytab user/ugroup1
2
3
4
5
6
7
* 退出 : quit
## CDH 启用kerberos准备
* 为CDH创建管理员主体
kadmin.local -q “addprinc cloudrea-scm/admin”
输入密码
1 |
|
vim /var/kerberos/krb5kdc/kadm5.acl
`
- 在CDH的管控台开启Kerberos。