美文网首页
etcd v3 java 客户端授权使用的坑

etcd v3 java 客户端授权使用的坑

作者: 爲誰而来 | 来源:发表于2023-02-05 16:52 被阅读0次

项目中使用 ectd 进行新建角色授权。

赋予角色指定目录的读写权限。

java 客户端 pom

<dependency>

    <groupId>io.etcd</groupId>

    <artifactId>jetcd-core</artifactId>

    <version>0.7.5</version>

</dependency>

授权方法

authClient.roleGrantPermission(

convert2ByteSequence(roleName),

convert2ByteSequence(key),

convert2ByteSequence(rangeEnd,

Permission.Type.READWRITE);

记录:

roleName角色名称

key 为要授权的目录,

rangeEnd 为目录的范围。

这个目录范围很有意思,以为是 “prefix=true”,设置之后 查看授权为

KV Read:

[/dsone001ET/, prefix=true )

KV Write:

[/dsone001ET/, prefix=true)

实际操作之后,发现这个权限限制有问题,目录/dsonef001ET 也能操作,这不符合角色的授权范围。

于是用 原生的 etcdctl 命令手动授权

etcdctl role grant-permission role_ds_test --prefix=true readwrite /dsone001ET/ --user=root:123456

发现授权之后的角色权限为:

KV Read:

[/dsone001ET/, /dsone001ET0) (prefix /dsone001ET/)

KV Write:

[/dsone001ET/, /dsone001ET0) (prefix /dsone001ET/)

与 java客户端授权的权限不一致。于是 把  rangeEnd 参数,手动改成 和 etcdctl 授权的角色范围一致

rangeEnd=“/dsone001ET0) (prefix /dsone001ET/”;

重新授权后,权限范围和ctl授权的一致,好使了。

相关文章

网友评论

      本文标题:etcd v3 java 客户端授权使用的坑

      本文链接:https://www.haomeiwen.com/subject/mgqzhdtx.html