美文网首页
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