kerberos总结 - wbwangk/wbwangk.github.io GitHub Wiki
- principal(主体),某实体在系统中的身份。实体可能是用户或服务。
用户主体类似[email protected];服务主体类似hdfs/[email protected];特殊主体类似root/[email protected]。 - KDC(Key Distribution Center密钥分发中心),存储和分发密钥。常见的KDC有MIT KDC和域控制器(AD)。
- REALM(领域)是一组主机的集合。一般是大写字母的域名。
- Ticket(门票)由KDC发放,表明实体身份的一组字符串。门票的有效期一般10-24小时。可以理解为表示会话的令牌。
门票缓存:以文件形式把门票存放在客户端存储中。linux中一般路径是/tmp/krb5cache
。 - 凭据(credential)由主体和密码构成,表示实体身份。
- Keytab(密钥表)由凭据生成的一个文件,等同于凭据,用于无法输入密码的自动执行场景,如服务主体。
linux中一般存放在/etc/security/keytabs/
目录中。
- kinit 登录
$ kinit root/[email protected]
$ Kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs-<集群id>@AMBARI.APACHE.ORG
- klist 列出门票缓存
$ klist
$ klist -kt /etc/security/keytabs/hdfs.headless.keytab (特殊用途:列出keytab中的主体)
- kdestroy 登出
- ktutil 工具,可用于生成密钥表(keytab)
$ ktutil
ktutil: addent -password -p root/admin -k 1 -e RC4-HMAC
ktutil: wkt root.keytab
- kpasswd 改密码
linux下一般是/etc/krb5.conf
(Mac OS X中的配置文件位置是 /Library/Preferences/edu.mit.kerberos
)。简化的配置文件内容:
[libdefaults]
default_realm = AMBARI.APACHE.ORG
[realms]
AMBARI.APACHE.ORG = {
kdc = c7301.ambari.apache.org
}
HOME.LANGCHAO.COM = {
kdc = jtjndc008.home.langchao.com
}
上面基本上是最小配置了。定义了两个领域(REALM),每个领域一个KDC。还指定了一个为默认领域。
- GSSAPI 供其他应用调用,用于交换令牌。目的是共享安全会话,实现单点登录。windows的kerberos实现不知道GSSAPI,而是一个自定义协议SSPI。
- SPNEGO 简单和受保护的GSSAPI谈判机制(SPNEGO)。使kerberos支持HTTP协议(negotiate认证)。
服务器端参考Kerberos管理(admin)
客户端参考Kerberos使用(client)
- hadoop各服务的命令行
- curl
- REST
kerberized集群下HBase REST服务器的启动和测试
Knox的HadoopAuth(SPNEGO和基于委派令牌的认证) - 浏览器
windows下用kerberos客户端和火狐登录HDP域 - Java应用
JAAS认证
java使用SPNEGO认证
一个安全HDFS客户端的例子
java连接HBASE(kerberized集群)