这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战
前言
在Kerberso中,所有租户的账号密码都存储在Account Database(简称AD)中,这样当用户每次使用kinit认证的时候,KDC就会去AD中查询用户是否存在。
Account Database
新建Account Database
在服务器端使用下面命令创建AD。
1 | css复制代码kdb5_util create -s -r [realm] |
- 执行成功之后,在/var/kerberos/krb5kdc目录下生成一系列的服务端配置文件
- -s表示生成stash file,并在其中存储master server key,-r指定realm
添加Database Administrator
每个数据库需要添加一个管理员,AD也不例外。Database Administrator也是一个principal,不过是一个能够管理database的principal
使用以下命令来创建数据库管理员的principal:
1 | lua复制代码kadmin.local-q"addprinc admin/admin" |
设置AD的ACL(Access ControlList)权限
在kadm5.ac文件中l写入 /admin@HADOOP.COM。
- kadmin daemon会使用该文件来管理对AD的访问权限
- 名称匹配*/admin@EXAMPLE.COM的principal,都认为是admin,权限是 *
- 这些admin可以操作其他的principal
启动deamon:
①. systemctl startkadmin.service
②. systemctl startkrb5kdc.service
安装客户端
安装软件
1 | 复制代码yum install -y krb5-workstation krb5-libs krb5-auth-dialog |
配置文件
拷贝服务器的/etc/krb5.conf放到客户机上
AD操作
进入AD
- root用户,KDC服务器可以通过kadmin.local直接登录(aroot/admin@BDX.SD.CM)
- Client先使用kinit进行验证,Kinit admin/admin,再使用kadmin登录
kadmin命令
- addprinc test:添加principal
- delprinc test:描述principal
- listprincs:查看principal列表
在kadmin中生成keytab文件
通过执行下面命令来生成每个用户所需要的keytab文件。
1 | bash复制代码xst-k/path/name.keytabprincipal |
kinit
kinit -R:延长TGT的过期时间,如果不能,可能renewlife设置为0day了
- ticket过期后,如果想延长,一种方法是重新申请(需要输入密码),另一种是renew(不需要输入密码),每renew一次,就延长一个lifetime
- renew操作本身也有lifetime,即在ticket renew lifetime。在此lifetime之内,才能进行renew操作
- 如果max_renewable_life=0,那么在客户端 ticket_lifetime 结束时就会获取一个新的 ticket
- kinit -R xxx.keytab:在renewable_life内来续约
本文转载自: 掘金