Guardian ABAC策略使用之IP地址黑名单

  其他常见问题
内容纲要

概要描述


ABAC简介

ABAC全名是 Attribute Based Access Control,顾名思义是根据一些上下文标签来在运行时判断权限信息,用来控制对资源的访问。

Guardian ABAC功能介绍

Guardian提供了策略(Policy)页面来设置ABAC权限,每条策略定义了一个权限规则。

Guardian目前支持的标签有如下5种,日后会扩展,包括支持用户自定义标签:

  1. SourceIp:访问服务的用户的源地址ip
  2. UserName:访问服务的用户的用户名
  3. GroupName: 访问服务的用户所属的组
  4. RoleName: 访问服务的用户所属的角色
  5. CurrentTime: 访问服务的时间

Resource: 访问服务的资源名字,例如对于inceptor表,表示方法为default.alice_tbl;对于hdfs目录则为 /user/alice等

局限:目前支持ABAC的插件只有Incpetor/Argodb的插件,其他服务的插件正在开发中

详细说明


权限

拥有PERM ADMIN或者SUPER ADMIN系统角色的用户才可以操作策略,例如admin用户拥有SUPER-ADMIN系统角色,可以操作策略。可以到 首页->系统设置->系统权限 中设置用户的系统角色。

配置

policy相关的配置在组件(如Inceptor)的guardian-site.xml中:

  • guardian.abac.authorization.enabled,用来控制是否开启ABAC功能,true表示开启,默认false表示不开启
  • guardian.client.cache.update.period,用来控制本地策略缓存更新的频率(单位为毫秒),默认是30秒(30000毫秒)更新一次。

注:为了加快权限判断速度,本地都会缓存策略数据库,更新频率默认是30s,也就是更新策略之后,最多需要等待30s,组件的策略才会更新。

以Guardian 3.2.6 版本为例举例说明:

1. 修改guardian参数guardian.abac.authorization.enabled

从false修改为true,然后配置服务,重启guardian

2. Quark服务刷新guardian插件

刷新完成之后,检查 /etc/quark1/conf/guardian-site.xml 文件是否更新了配置:

[root@kv1/etc/quark1/conf]# grep abac guardian-site.xml -C 1

    guardian.abac.authorization.enabled
    true

3. Guardian页面新增策略配置

说明:该policy是一个DENY类型的Policy,唯一的条件是 Sourceip 是 172.22.130.2,整个policy的含义是,如果请求是从172.22.130.2过来的,那么访问Quark1的 default.emp表 的 SELECT 操作将会被拒绝。

4. 查询验证

我们通过lkw这个用户,在ip为 172.22.130.2 的windows 电脑上,通过waterdrop查询 SELECT * FROM default.emp; 查询失败,报错 SQL 错误 [20388] [42000]: COMPILE FAILED: Internal error HiveAccessControlException: [Error 20388] Permission denied: Principal [name=lkw, type=USER] does not have following privileges for operation QUERY [[SELECT] on Object [type=TABLE_OR_VIEW, name=default.emp]]

需要注意,如果用户是该表的owner或者该用户是ADMIN角色,则仍然可以访问表中的数据。因为owner或者admin是提前判断的。另外策略层目前是在原始的RBAC层之前的,如果ABAC没有返回ALLOW或者DENY即ABAC没有策略可以使用,权限判断将会退化到RBAC层判断。

FAQ 如何通过quark-server.log日志排查策略信息?

需要开启server的DEBUG级别日志才能够看到,在高版本quark上可以 SET inceptor.log.level=debug; server级开启 (参考修改quark日志级别的几种方式

查询关键字: tailf quark-server.log | grep -Ei '(SourceIp=172.22.130.2|The evaluation result for statement|PolicyEngine)'

本地策略的刷新日志,一般默认是30秒(30000毫秒)更新一次,每次测试建议等策略更新后再操作:

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。