kerberos使用

42 篇文章 3 订阅
5 篇文章 0 订阅

理论上,通过kerberos认证后又没开启sentry,可以随意访问服务,但有的服务还有额外的acl权限限制,比如hdfs和hbase,需要额外进行授权,sentry只能管hive,hdfs和hbase用的是acl,当然,sentry可以通过acl来管理hdfs。

缩写

add_principal,addprinc,ank
delete_principal,delprinc
ktadd,xst
change_password,cpw

登录kadmin

kadmin.local
非kadmin节点使用admin权限的prin认证后,输入kadmin后输入密码

生成随机key的principal,这种principal只能用来生成keytab使用

addprinc -randkey root/master1@EXAMPLE.COM

ktadd -k keytab位置 prin名

这种方式生成keytab时,缺省会生成长串随机密码来覆盖原来的密码。覆盖后,就不能用原来密码登录了,只能用keytab,如果想要继续使用密码登录,需要使用-norandkey参数来避免生成长串随机密码。
-norandkey表示不用很长的随机密码,使用自己设置的密码,意味着可以同时用密码和keytab认证
ktadd -norandkey -k /keytab/root.keytab root/master1@EXAMPLE.COM host/master1@EXAMPLE.COM

生成指定密码的principal,执行后会提示输入密码

addprinc admin/admin

为principal生成keytab,可同时添加多个

ktadd -norandkey -k /keytab/root.keytab root/master1@EXAMPLE.COM host/master1@EXAMPLE.COM

klist -ket xxx.keytab  查看参数keytab里面包含的的认证信息

在一个节点上,有可能多个脚本并行执行,kinit的认证有可能被覆盖,所以在kinit之前,需要把产生的pubkey暂存起来

场景:有个脚本,连续2天,每天调度跑的时候就报错,然后手动调一次就能跑过
被覆盖之后脚本报错
在这里插入图片描述

export KRB5CCNAME=/tmp/krb5_udp_dev
kinit -kt xxx xxx

klist -e = klist

查看当前用户认证信息

# klist -ket xxx.keytab

Keytab name: FILE:xxx.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   7 2018-07-30T10:19:16 hbase-flink@demo.com (des-cbc-md5) 
   7 2018-07-30T10:19:16 hbase-flink@demo.com (aes128-cts-hmac-sha1-96) 
   7 2018-07-30T10:19:16 hbase-flink@demo.com (aes256-cts-hmac-sha1-96) 
   7 2018-07-30T10:19:16 hbase-flink@demo.com (des3-cbc-sha1) 
   7 2018-07-30T10:19:16 hbase-flink@demo.com (arcfour-hmac)

查看principal

listprincs

修改admin/admin的密码

change_password -pw xxxx admin/admin  
cpw

删除principal

delete_principal admin/admin

lab

1. 使用密码创建一个principal后,如果用ktadd生成随机密码的keytab(默认),会用一个很长的随机密码覆盖原来手动设置的密码,那么原来的密码就不能用了。如果使用 -norandkey,可以密码和keytab同时使用

addprinc test1
ktadd -norandkey -k /opt/keytabs/test1.keytab test1

此时用密码和keytabs都可以认证

2. 2个生命周期

Kerberos ticket 有两种生命周期,ticket timelife (票据生命周期) 和 renewable lifetime (可再生周期)。

当 ticket lifetime 结束时,该 ticket 将不再可用。
如果 renewable lifetime > ticket lifetime ,那么在票据生命周期内可以续期,直到达到可再生周期。
当时间达到 renewable lifetime 后,ticket lifetime结束后将不能继续续期,续期时将会报错 KDC can’t fulfill requested option while renewing credentials,之后需要重新kinit申请新的ticket

与使用较长的生命周期的票据相比,可再生票据的优点是KDC可以拒绝续期请求(例如,如果发现帐户被破坏,并且可再生票据可能在攻击者手中)。???

例如:
ticket_lifetime = 1d
renew_lifetime = 7d
在登陆后的24h内可以对ticket进行续期,直到第一次登陆的7天后将不再允许续期。
在24h内如果没有续期,将无法续期。
对 ticket 进行一次续期后,ticket_lifetime 将恢复到24h。==》
第一次kinit后,从kinit时间到tl期间内可以renew,renew后,start time刷新。直接第一次的st到rl后,不能再刷新

实际场景中,开发告诉运维3天开发完,但3天大概率开发不完,这时候就可以续期,而不用重新输密码或用keytab。

kerberos可以用kinit得到一个ticket(又叫tgt), 在这个ticket生效期间不用输入密码, ticket可以不停续期, 有一个expire日期,下面的例子是12月07到12月08的一天时间, 但是生效期内可以通过 kinit -R 来续期这个ticket, 但是还有个renew until, 表示最长可以续期多久, 下面例子表示15年12/12号以后, kinit -R 就不能续期了.

kinit -R会把当前认证的prin的Valid starting时间刷新为当前,Expires时间自然也就顺延。但renew until时间仍然是第一次认证时确定的时间。

这个ticket和keytab无关, keytab是一个密码文件, 加密了你的密码而已.

Execute a klist command to verify the values that the system actually granted you.

Ticket cache: FILE:/tmp/krb5cc_1234
Default principal:someuser@UCAR.EDU
Valid starting Expires Service principal
12/07/15 13:00:05 12/08/15 13:00:01 krbtgt/UCAR.EDU@UCAR.EDU
renew until 12/12/15 15:48:44

The ticket will expire like an ordinary ticket in 24 hours, but you
can renew multiple times before its expiration, until the final
expiration date (Dec 12 in the example above). You must do the kinit
command interactively because you will have to provide your Kerberos
passphrase; this cannot be put into a cron job or other unattended
situation.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Kerberos使用的是对称加密。 原因是Kerberos需要在客户端和服务器之间进行大量的加密和解密操作,而对称加密的计算量比非对称加密小得多,因此使用对称加密可以显著降低网络和计算负担。另外,Kerberos使用了时间戳和序列号等机制来确保通信的安全性,从而弥补了对称加密可能存在的安全性问题。 ### 回答2: Kerberos使用对称加密。 Kerberos是一种网络身份验证协议,旨在提供安全的身份认证服务。在Kerberos中,对称加密被用于加密通信内容,确保通信的机密性。 对称加密是一种加密方式,其中使用相同的密钥来加密和解密数据。这种加密方式的优势在于速度快,适合加密大量数据。在Kerberos中,由于身份验证过程中的通信量通常不是很大,因此使用对称加密可以提供高效的加密和解密过程。 Kerberos的基本工作原理是通过TGT(Ticket Granting Ticket)和服务票证对用户进行身份认证。当用户登录后,Kerberos服务器会生成一个TGT并使用用户的密码对其进行加密,然后将加密后的TGT返回给用户。用户在随后的通信中,使用TGT向Kerberos服务器请求特定服务的票证。 对称加密在Kerberos的身份验证过程中发挥重要作用,因为用户对TGT数据进行解密以获得访问特定服务的票证。同时,服务票证也使用对称加密进行保护,确保只有具有正确密钥的服务才能够解密和验证票证。 所以,Kerberos使用对称加密,通过对TGT和服务票证的加密和解密,确保用户的身份验证和通信内容的机密性。 ### 回答3: Kerberos使用的是对称加密。 Kerberos是一个网络认证协议,其目的是通过域控制器(KDC)来验证用户的身份,并为用户在网络中访问资源提供安全的认证机制。在Kerberos中,包含了三个实体,即用户、服务和KDC。用户通过KDC获取访问资源所需的“票据”,然后将该票据提供给服务来获取资源访问权限。 Kerberos中的票据主要包括两个部分,即票据授权票(Ticket Granting Ticket,TGT)和服务票据(Service Ticket)。为了确保传输过程中的安全性,Kerberos使用了加密算法。而对称加密算法在Kerberos中被应用于票据的加密。 对称加密是一种加密方式,使用相同的密钥进行加密和解密操作。在Kerberos中,用户和KDC之间传输的TGT需要进行加密,以确保第三方无法窃取和篡改该票据。因此,对称加密算法被用来加密和解密TGT,保护其机密性。 相比之下,非对称加密算法则用于票据中的服务票据。服务票据是为了向服务提供方证明用户的身份,并获取相应资源的权限。这涉及到用户和服务之间的通信,因此需要更高级别的安全性。非对称加密算法通过使用一对密钥,即公钥和私钥,来实现加密和解密操作。用户使用服务提供方的公钥加密服务票据,而服务提供方使用自己的私钥解密该票据。 综上所述,Kerberos在票据传输过程中使用对称加密算法保护TGT的安全性,而使用非对称加密算法确保服务票据的安全性。这样可以保证Kerberos协议的安全性和可靠性,从而实现网络用户的身份认证和资源访问控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值