Ranger 访问控制
openlookeng-ranger-plugin 是为 openLooKeng 开发的 Ranger 插件,用于全面的数据安全监控和权限管理。
从 Git 仓库检出 代码
进入代码根目录,执行 Maven 命令:
- 在上述 Maven 命令执行完成后,可以在 target 目录发现以下 TAR 文件:
ranger-<ranger.version>-openlookeng-<openlookeng.version>-plugin.tar.gz
1). 解压 ranger-<ranger.version>-admin-openlookeng-<openlookeng.version>-plugin.tar.gz,可以发现以下目录:
使用 Ranger Admin 提供的 REST API 向 Ranger 注册服务类型定义。注册后,Ranger Admin 将提供 UI 以创建服务实例(在以前的版本中称为存储库)和服务类型策略。Ranger 插件使用服务类型定义和策略来确定请求是否有访问权限以进行授权。如下示例所示,可以使用 curl 命令调用 REST API 接口注册服务:
Ranger的服务查询 REST API 示例:
Ranger的服务删除 REST API 示例:
curl -u admin:password -X DELETE http://ranger-admin-host:port/service/plugins/definitions/{service id}
3). 复制 openlookeng 目录到 Ranger Admin 安装目录下的 ranger-plugins 目录 (例子:ranger-<ranger.version>-admin/ews/webapp/WEB-INF/classes/ranger-plugins/)
安装 openLooKeng 插件
2). 适当的修改 install.properties 文件。如下示例所示,修改了部分参数值:
3). 执行 ./enable-openlookeng-plugin.sh
重启 Ranger Admin 服务:service ranger-admin restart
重启 openLooKeng 服务:./launcher restart
通过点击 Ranger Admin 服务管理界面的 OPENLOOKENG
列旁的加号来新增 openLooKeng 服务。目前服务支持的配置参数如下所示:
可以通过 Ranger Admin 的 openLooKeng 服务策略列表界面新增策略。openLooKeng 的 Ranger 插件目前支持 systemproperty、catalog、sessionproperty、schema、table 和 column 等资源的权限管理。
权限声明
- systemproperty
- alter:设置系统会话属性。
- catalog
- use:如果 catalog 没授予 use,所有 catalog 下操作都无权限。
- select:只有授予 select 权限,show catalogs 才能显示对应的 catalog。
- create:新建 schema。
- show:显示当前 catalog 或者指定 catalog 下的所有授权 schema。
- sessionproperty
- alter:设置 catalog 会话属性。
- impersonateuser
- impersonate : Kerberos或LDAP认证用户模拟openLooKeng查询用户。
- schema
- drop:删除已有 schema。
- alter:修改已有 schema 的定义。
- create:使用给定列新建表;通过 select 查询语句来新建视图。
- show:显示当前 schema 或者指定 schema 下的所有授权表。
- table
- drop:删除已有表、视图、列。
- alter:修改已有表的定义;设置表声明;更新给定条件下的行数据。
- insert:插入行数据。
- delete:删除行数据。
- grant:给特定授权人授予特定权限。
- revoke:取消特定授权人的特定权限。
- select:只有授予 select 权限,show tables 才能显示对应的表。
- show:显示指定表下的所有授权列的类型和其他属性。
- column
- select:检索数据;只有授予 select 权限,show columns 才能显示对应的列。
掩码类型 | 描述 |
---|---|
Redact | 小写字母转化为,大写字母转化为X ,数字转化为0 。 |
Partial mask: show last 4 | 显示最后四个字符;其他转化为’X’。 |
Partial mask: show first 4 | 显示前四个字符;其他转化为’X’。 |
Hash | 使用sha256得到的哈希值。 |
Nullify | 替换为NULL。 |
Unmasked (retain original value) | 不进行掩码。 |
Date: show only year | Date类型:只显示年份。 |
自定义。 例子: cast(concat({col}, “test”) as {type})。 |
行过滤
行过滤只适用于select
操作,指定用户只能获取过滤后的数据。通过将自定义过滤表达式作为SQL中的where
条件实现数据过滤。
- 基本策略:必须给相应的 catalog 授权
use
和select
权限。catalog 的show
和create
权限作为可选项以确定是否启用 show catalogs 和创建 schema 的权限。
- 如果需要获取 catalog 的元数据信息 (例如:show schemas/tables/columns),需要给相应 catalog 下的
information_schema
授予select
权限。
标签 | 描述 |
---|---|
Policy Name | 输入策略名称。 |
catalog | 选择相应的 catalog。 |
schema | 选择 。 |
table | (表示选择所有表) |
column | (表示选择所有列) |
- 新增系统会话属性权限管理策略。
- 新增 catalog 会话属性权限管理策略。
标签 | 描述 |
---|---|
Policy Name | 输入策略名称。 |
catalog | 选择相应的 catalog。 |
sessionproperty | 设定相应的 catalog 会话属性。 |