前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Byzer 权限控制插件介绍

Byzer 权限控制插件介绍

作者头像
用户2936994
发布2023-03-09 20:31:50
5470
发布2023-03-09 20:31:50
举报
文章被收录于专栏:祝威廉祝威廉

Byzer 目前提供了一个简单的权限控制扩展。

1. 项目地址为: byzer-extension/byzer-simple-auth at master · byzer-org/byzer-extension

安装

三步即可。

1. 通过下载地址 byzer-simple-auth 下载 Byzer 扩展包。将其拷贝到 Byzer 的插件目录($BYZER_HOME/plugin)。

2. 修改配置文件 ${BYZER_HOME}/conf/byzer.properties.overwrite, 添加如下配置:

代码语言:javascript
复制
# Configure entry class for authentication 
streaming.plugin.clzznames=tech.mlsql.plugins.auth.simple.app.ByzerSimpleAuthApp
# Configure authentication implementation class 
spark.mlsql.auth.implClass=tech.mlsql.plugins.auth.simple.app.ByzerSimpleAuth 
# Configure the directory of the auth configuration file
spark.mlsql.auth.simple.dir=./conf/simple-auth/

3. 启动/重启 Byzer ( ${BYZER_HOME}/bin/byzer.sh restart ) 即可生效。

管理员初始化

在 byzer-simple-auth 现阶段是以 "资源" 为主体的。

我们可以通过如下命令赋予 allwefantasy 用户进行权限管理的权限:

代码语言:javascript
复制
!simpleAuth resource add _ -type mlsql_system -path __auth_admin__ -allows allwefantasy;
!simpleAuth admin reload;

上面表示我们只允许 allwefantasy 用户使用 !simpleAuth 命令。第二条语句是对操作进行刷新。

专家模式

除了上面提到的命令行模式,也支持通过 YAML 文件描述资源控制:

代码语言:javascript
复制
!simpleAuth resource add '''

apiVersion: auth.byzer.org/v1
kind: Auth
userView: []

resourceView:
  - metadata:
      resources:
        - name: "file"
          path: "s3a://bucket2/jack"
    rules:
      - rule:
          verbs:
            - "load"
          users:
            allows:
              - name: allwefantasy
                role: testRole
            denies:
              - name: jack
                role: testRole

''';

资源控制

现阶段(2023-03-08)支持的资源类型为:

1. file

2. jdbc

3. delta

4. hive

5. 特殊资源,比如前面 mlsql_system.__auth_admin__ 就是一个特殊资源。还有比如 mlsql-shell等插件也是映射特殊资源来对待,来保证只有授权用户才能使用 mlsql-shell提供的扩展能力。用户可以参考对应插件的文档。

FILE

通过下面命令我们可以控制只有 allwefantasy 访问 s3a://bucket7/tmp/jack 以及对应的子目录。

代码语言:javascript
复制
!simpleAuth resource add _ -type file -path "s3a://bucket7/tmp/jack" -allows allwefantasy;

如果确认,可以通过如下命令使得刚才添加的指令生效:

代码语言:javascript
复制
!simpleAuth admin reload;

如果你希望撤销这条指令,可以通过如下方式完成:

代码语言:javascript
复制
!simpleAuth resource delete _ -type file -path "s3a://bucket7/tmp/jack" -allows allwefantasy;

如果你希望查询某个资源的配置情况:

代码语言:javascript
复制
!simpleAuth resource query _ -type file -path "s3a://bucket7/tmp/jack";

如果你希望使用黑名单而不是白名单的话,那么可以这么用:

代码语言:javascript
复制
!simpleAuth resource add _ -type file -path "s3a://bucket7/tmp/jack" -denies user1,user2

如果用户同时配置了 -allows 和 -denies, 系统会先检查当前用户是不是在 -allows里,如果不是,则会检查是不是在-denies里,如果不在,则允许访问。如果用户只配置了 -allows 则只有在名单里的才会允许访问,同理如果只配置了 -denies,只要不在 -denies里的,则会允许访问。

JDBC

目前JDBC 数据源无法按实例来区分,只能按库表名称区分。

代码语言:javascript
复制
!simpleAuth resource add _ -type jdbc -path "wow.vega_datasets" -denies allwefantasy;
!simpleAuth admin reload;

对于上面的例子,我们不允许 allwefantasy 访问库表名称为 wow.vega_datasets的资源。如果在两个不同的MySQL 实例有相同的库表,那么当前是无法区别的,在权限系统里会被视为同一个资源。

DELTA

代码语言:javascript
复制
!simpleAuth resource add _ -type delta -path "demo.table1" -denies allwefantasy;
!simpleAuth admin reload;

Hive

代码语言:javascript
复制
!simpleAuth resource add _ -type hive -path "default.table1" -denies allwefantasy;
!simpleAuth admin reload;

总结

通过 byzer-simple-auth, 我们可以快速的对访问的资源按用户进行控制。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 管理员初始化
  • 专家模式
  • 资源控制
  • FILE
  • JDBC
  • DELTA
  • Hive
  • 总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档