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

项目中使用 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授权的一致,好使了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容