graylog grn介绍

grn 是graylog 的资源名称,属于一种urn,从功能上类似aws 的 arn 主要用来进行权限以及资源分配管理

参考格式

grn:<cluster>:<tenant>:<scope>:<type>:<entity>

graylog 解析处理

核心是slit,然后拆分处理

static GRN parse(String grn, GRNRegistry grnRegistry) {
    final List<String> tokens = SPLITTER.splitToList(grn.toLowerCase(Locale.ENGLISH));
 
    if (tokens.size() != 6) {
        throw new IllegalArgumentException(String.format(Locale.US, "<%s> is not a valid GRN string", grn));
    }
    if (!tokens.get(0).equals("grn")) {
        throw new IllegalArgumentException(String.format(Locale.US, "<%s> is not a grn scheme", tokens.get(0)));
    }
    final String type = tokens.get(4);
    final Builder builder = grnRegistry.newGRNBuilder(type)
            .cluster(tokens.get(1))
            .tenant(tokens.get(2))
            .scope(tokens.get(3))
            .entity(tokens.get(5));
 
    return builder.build();
}

权限部分对于type 的使用

public boolean isPermissionApplicable(String permission) {
    // ENTITY_OWN is applicable to any target
    return permission.startsWith(RestPermissions.ENTITY_OWN) ||
            permission.startsWith(grnType().permissionPrefix()) ||
            // TODO Dashboard code still uses `view:` permissions
            (grnType().equals(GRNTypes.DASHBOARD) && permission.startsWith(GRNTypes.SEARCH.permissionPrefix()));
}

说明

基于urn 的权限管理是一个很不错的选择,比如shiro 就基于了urn 但是扩展了不少,graylog 好多东西都基于了此能力

参考资料

https://github.com/Graylog2/graylog2-server/tree/master/graylog2-server/src/main/java/org/graylog/grn
https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog2/shared/security/RestPermissions.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog/grn/GRNTypes.java
https://github.com/Graylog2/graylog2-server/blob/626be1f0d80506705b5ba41fbea33c2ec0164bc0/graylog2-server/src/main/java/org/graylog/security/permissions/GRNPermission.java
https://shiro.apache.org/permissions.html

posted on   荣锋亮  阅读(77)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-10-01 debezium 数据变更工具使用

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示