所有nkey的私钥都是保存在本地的,nats服务端只是配置了公钥,包括jwt文件的内容也只有公钥的信息,通过这种方式,只要我本地的私钥没有泄露那就是安全的。
当时,我们不能百分百肯定nats没有程序上的漏洞,但是从设计上,它的这种安全性是有保障的。
那么怎样避免在极端条件下,比如说黑客,我本地的私钥被黑客窃取了,怎么样能在第一时间进行补救呢?
其实nats是有考虑到这种情况的,我们可以给operator和account添加多个专门用来签名的这种nkey,如果发现nkey私钥泄露的话,我们可以回收相应的这个nkey。
- 给operator和account增加多个nkey
$ nsc generate nkey --operator --store
OA4LEM5S6FWS7QJMVRJFFQRM2W4Z34TUQ6YOPH7X6RFWP7HWSY7FZIMP
operator key stored C:\Users\jiaweicheng\.local\share\nats\nsc\keys\keys\O\A4\OA4LEM5S6FWS7QJMVRJFFQRM2W4Z34TUQ6YOPH7X6RFWP7HWSY7FZIMP.nk
- 将这个nkey绑定到最近操作过的operator里
$ nsc edit operator --sk OA4LEM5S6FWS7QJMVRJFFQRM2W4Z34TUQ6YOPH7X6RFWP7HWSY7FZIMP
- 查看最近操作过的operator的详情
$ nsc describe operator
# 可以发现多了 Signing Keys属性和属性值
- 用上面新增的签名来添加一个account
$ nsc add account hr -K C:\Users\jiaweicheng\.local\share\nats\nsc\keys\keys\O\A4\OA4LEM5S6FWS7QJMVRJFFQRM2W4Z34TUQ6YOPH7X6RFWP7HWSY7FZIMP.nk
- 查看这个新增的account(新增的account会自带一个默认的私钥)
$ nsc describe account
- 给这个account再添加一个私钥
$ nsc generate nkey --account --store
ADJEWBPB5T37HNB3NDHYJTJSSCGMVUXZEKH3MPT2J5AZMVN74AOOGXVZ
account key stored C:\Users\jiaweicheng\.local\share\nats\nsc\keys\keys\A\DJ\ADJEWBPB5T37HNB3NDHYJTJSSCGMVUXZEKH3MPT2J5AZMVN74AOOGXVZ.nk
- 把上面生成的nkey绑定到最近操作过的account里
$ nsc edit account --sk ADJEWBPB5T37HNB3NDHYJTJSSCGMVUXZEKH3MPT2J5AZMVN74AOOGXVZ
- 查看最近操作过的account的详情
$ nsc describe account
# 可以发现多了 Signing Keys属性和属性值
- 用新的key,在account下新增个用户
$ nsc add user zr -K C:\Users\jiaweicheng\.local\share\nats\nsc\keys\keys\A\DJ\ADJEWBPB5T37HNB3NDHYJTJSSCGMVUXZEKH3MPT2J5AZMVN74AOOGXVZ.nk
- 因为之前给operator加了nkey,所以需要重新生成下服务端的启动配置文件
$ nsc generate config --nats-resolver > nats-full.conf
- 把新配置推到服务端去
$ nsc push -A
- 用第9步生成的creds文件来访问nats服务端
$ nats sub hello --creds creds文件路径
现在我们假设,刚刚绑到这个account的Signing Keys “ADJEWBPB5T37HNB3NDHYJTJSSCGMVUXZEKH3MPT2J5AZMVN74AOOGXVZ”,意外被黑客拿走了,这时候,我把这个key删除了,其下的用户还能不能正常订阅呢?
$ nsc edit account --rm-sk ADJEWBPB5T37HNB3NDHYJTJSSCGMVUXZEKH3MPT2J5AZMVN74AOOGXVZ
$ nsc push -A
这个时候,再使用第9步生成的creds文件来访问nats服务端,就会报认证错误。
假设,用户的私钥丢了怎么办?
- 回收用户的私钥
$ nsc revocations add-user --account oa --name cjzhao
$ nsc push -A
- 这个时候,再使用这个用户的creds文件来访问nats服务端,就会报认证错误。
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。