update cdh Kerberos

This commit is contained in:
2025-08-25 09:51:20 +08:00
parent 1de56dcacb
commit 50ffd01538

View File

@@ -27,7 +27,7 @@ yum install krb5-server krb5-libs krb5-auth-dialog krb5-workstation openldap-cli
#### 修改/etc/krb5.conf配置 #### 修改/etc/krb5.conf配置
```bash\ ```bash\
vi /etc/krb5.conf vim /etc/krb5.conf
``` ```
- 配置文件内容 - 配置文件内容
@@ -48,18 +48,20 @@ renew_lifetime = 7d
forwardable = true forwardable = true
rdns = false rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
default_realm = A.COM default_realm = YLDEV.NET
#default_ccache_name = KEYRING:persistent:%{uid} #default_ccache_name = KEYRING:persistent:%{uid}
[realms] [realms]
A.COM = { YLDEV.NET = {
kdc = node-1 kdc = cdh-node-1
admin_server = noe-1 admin_server = cdh-node-1
default_domain = YLDEV.NET
} }
[domain_realm] [domain_realm]
.a.com = A.COM .example.com = YLDEV.NET
a.com = A.COM example.com = YLDEV.NET
``` ```
##### 配置参数 ##### 配置参数
@@ -74,24 +76,26 @@ a.com = A.COM
- 然后是[realms]部分这一部分会列出所有的realmkdc和admin_server两个配置是在告诉客户端哪台服务器在运行KDC以及kadmin进程。这两项配置可以在服务器上追加端口如果不指定则使用默认端口KDC是88admin server是749. - 然后是[realms]部分这一部分会列出所有的realmkdc和admin_server两个配置是在告诉客户端哪台服务器在运行KDC以及kadmin进程。这两项配置可以在服务器上追加端口如果不指定则使用默认端口KDC是88admin server是749.
- 最后一部分[domain_realm]是配置DNS名称和Kerberos Realm映射的。 .http://a.com = A.COM是在说所有在a.com域下的主机都会被映射到A.COM这个realm下而a.com = A.COM是说a.com它自己也会映射到A.COM这个realm。 - 最后一部分[domain_realm]是配置DNS名称和Kerberos Realm映射的。
#### 修改/var/kerberos/krb5kdc/kadm5.acl配置 #### 修改/var/kerberos/krb5kdc/kadm5.acl配置
将 */admin@YLDEV.NET 后缀的设为管理员
```bash ```bash
vi /var/kerberos/krb5kdc/kadm5.acl vim /var/kerberos/krb5kdc/kadm5.acl
``` ```
```bash ```bash
*/admin@A.COM * */admin@YLDEV.NET *
``` ```
#### 修改/var/kerberos/krb5kdc/kdc.conf配置 #### 修改/var/kerberos/krb5kdc/kdc.conf配置
```bash ```bash
vi /var/kerberos/krb5kdc/kdc.conf vim /var/kerberos/krb5kdc/kdc.conf
``` ```
```bash ```bash
@@ -99,36 +103,39 @@ vi /var/kerberos/krb5kdc/kdc.conf
kdc_ports = 88 kdc_ports = 88
kdc_tcp_ports = 88 kdc_tcp_ports = 88
[realms] [realms]
A.COM = { YLDEV.NET = {
#master_key_type = aes256-cts max_life = 24h # 单个票据的最大有效期
max_renewable_life= 7d 0h 0m 0s max_renewable_life= 7d 0h 0m 0s
renewable = true
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal 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 supported_enctypes = aes256-cts:normal aes128-cts:normal 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
} }
``` ```
#### 创建Kerberos数据库 #### 创建Kerberos数据库
```bash ```bash
kdb5_util create r http://A.COM -s kdb5_util create -r YLDEV.NET -s
``` ```
- 密码 hadoop - 密码 hadoop
#### 创建Kerberos的管理账号 #### 创建Kerberos的管理账号
admin/admin@A.COM admin/admin@YLDEV.NET
```bash ```bash
kadmin.local kadmin.local
addprinc admin/admin@A.COM addprinc admin/admin@YLDEV.NET
``` ```
- 密码/账号 admin/admin@A.COM - 密码/账号 admin/admin@YLDEV.NET
#### 将Kerberos服务添加到自启动服务并启动krb5kdc和kadmin服务 #### 将Kerberos服务添加到自启动服务并启动krb5kdc和kadmin服务
@@ -142,7 +149,7 @@ systemctl start kadmin
#### 测试Kerberos的管理员账号 #### 测试Kerberos的管理员账号
```bash ```bash
kinit admin/admin@A.COM kinit admin/admin@YLDEV.NET
``` ```
### 为集群安装所有Kerberos客户端包括Cloudera Manager ### 为集群安装所有Kerberos客户端包括Cloudera Manager
@@ -163,7 +170,7 @@ scp /etc/krb5.conf root@node-3:/etc/
### 在KDC中给Cloudera Manager添加管理员账号 ### 在KDC中给Cloudera Manager添加管理员账号
cloudera-scm/admin@A.COM cloudera-scm/admin@YLDEV.NET
执行命令 执行命令
@@ -177,8 +184,6 @@ list_principals
### 进入Cloudera Manager的“管理”->“安全”界面 ### 进入Cloudera Manager的“管理”->“安全”界面
-
# Kerberos 相关命令 # Kerberos 相关命令
@@ -187,10 +192,10 @@ list_principals
- hdfs 账号生成秘钥 - hdfs 账号生成秘钥
```bash ```bash
kadmin.local -q "xst -k /tmp/hdfs.keytab hdfs@A.COM -norandkey" kadmin.local -q "xst -k /tmp/hdfs.keytab hdfs@YLDEV.NET -norandkey"
kadmin.local -q "xst -k /tmp/hdfs.keytab hdfs@A.COM" kadmin.local -q "xst -k /tmp/hdfs.keytab hdfs@YLDEV.NET"
#生成密钥文件之后,密码失效,不想密码失效,加 '-norandkey参数 #生成密钥文件之后,密码失效,不想密码失效,加 '-norandkey参数
ktadd -k /tmp/hdfs.keytab -norandkey hdfs@A.COM ktadd -k /tmp/hdfs.keytab -norandkey hdfs@YLDEV.NET
# 或者执行上面的上面命令 # 或者执行上面的上面命令
``` ```
@@ -204,8 +209,8 @@ kinit -R
## 测试Keytable是否可用 ## 测试Keytable是否可用
```bash ```bash
kinit -k -t /root/admin.keytab admin/admin@A.COM kinit -k -t /root/admin.keytab admin/admin@YLDEV.NET
kinit -k -t /tmp/admin.keytab admin/admin@A.COM kinit -k -t /tmp/admin.keytab admin/admin@YLDEV.NET
``` ```
## 修改用户的密码 ## 修改用户的密码
@@ -219,7 +224,7 @@ kadmin.local -q "cpw -pw admin hdfs "
```bash ```bash
# 获取hdfs@A.COM账号的信息 # 获取hdfs@A.COM账号的信息
getprinc hdfs@A.COM getprinc hdfs@YLDEV.NET
modprinc -maxlife 720days -maxrenewlife 1000days +allow_renewable krbtgt/A.COM modprinc -maxlife 720days -maxrenewlife 1000days +allow_renewable krbtgt/A.COM
``` ```
@@ -306,5 +311,5 @@ kinit -r 参数后面指定的时间
## 获取特权keytab ## 获取特权keytab
创建 hdfs@A.COM 创建 hdfs@YLDEV.NET
获取密钥 然后认证 即可使用特权hdfs账号 操作 hdfs 文件系统 获取密钥 然后认证 即可使用特权hdfs账号 操作 hdfs 文件系统