Ranger 2.1.0版本开始支持配置Security Zone功能,可以将资源划分到不同的Security Zone中,给每个Security Zone分配不同的管理员进行权限管理,即可以将资源分类交由不同的管理员管理。本文以EMR-4.9.0版本(Ranger 2.1.0)为例,介绍如何创建Ranger Security Zone管理员用户,以及如何配置Security Zone。

背景信息

例如,某公司有部门A和部门B两个部门,部门A主要使用Hive database a,以及HDFS路径/a,部门B主要使用Hive database b,以及HDFS路径/b。如果要使用Security Zone功能,可以将Hive database a和HDFS路径/a划分到Zone a当中,将Hive database b和HDFS路径/b划分到Zone b当中,并分别设置管理员,统一配置Zone中资源的权限。

Zone a和Zone b配置如下。
Zone: a
  service: emr-hive; path=/a/*,
  service: emr-hdfs; database=a
  
Zone: b
  service: emr-hive; path=/b/*,
  service: emr-hdfs; database=b

Security Zone的管理员有权限配置Zone中资源的权限,如果配置属于其他Zone的资源的权限,则将不会生效。当Ranger Plugin鉴权时,首先会判断资源属于哪个Security Zone,然后只会使用该Security Zone中配置的权限进行鉴权。如果没有找到资源所属的Security Zone,则会使用未划分Security Zone的权限进行鉴权。

前提条件

使用限制

仅EMR-4.5.x及后续版本和EMR-5.x系列版本,支持配置Security Zone功能。

注意事项

没有划分到Security Zone中的资源的权限配置,需要取消Security Zone的选择后,再在对应的Service中配置才能生效。

单击 Security Zone右侧的 delete图标,取消选中的Security Zone。 delete_Zone

创建Security Zone管理员用户

  1. 访问Ranger WebUI,详情请参见访问Ranger UI
  2. 在Ranger WebUI页面上方,选择Settings > Users/Groups/Roles
    Setting
  3. User页签,单击Add New User
    Add User
  4. User Detail页面,填写用户信息,设置Select RoleUser
    注意 Select Role必须设置为 User,设置为 Admin将会使得该用户成为超级管理员。超级管理员能够配置任何Security Zone的权限,就无法实现Security Zone管理员仅配置属于Zone的资源权限的功能。
    User Detail

配置Security Zone

您可以按照以下步骤配置Zone a和Zone b。

  1. 访问Ranger WebUI,详情请参见访问Ranger UI
  2. 在Ranger WebUI页面,单击上方的Security Zone
  3. Security Zone页面,单击Security Zones区域的add图标。
    Add Zone
  4. Create Zone页面,配置相关参数。
    Zone Edit
    参数 描述 示例
    Zone Name Security Zone的名称。 a
    Admin Users Security Zone的管理员用户。该用户需要在Settings中进行创建,用户角色需要为User,详情请参见创建Security Zone管理员用户 admin、admin_a
    Auditor Users 允许查看Security Zone审计日志的用户。 admin、admin_a
    Select Resource Services 选择Security Zone中的Service。 emr-hive、emr-hdfs
    Resource 填写属于该Security Zone的资源。 database=a、path=/a/*
  5. 单击Save
    完成Zone a的配置。
  6. 重复步骤3~步骤5,完成Zone b的配置。
    create b

测试

  1. 使用admin_a用户登录Ranger WebUI,详情请参见访问Ranger UI
  2. 在Ranger WebUI页面,在右上角的Security Zone区域,选择a
  3. 单击emr-hive,查看emr-hive Service中的权限。
    只能查看和修改Zone a中配置的权限,无法查看和修改Zone b中配置的权限。您可以配置一个属于Zone b的资源的权限,例如给test用户配置b.test表的select权限。使用Beeline进行测试,该权限配置是不会生效的,因为database=b属于Zone b,在鉴权时只会检验Zone b中配置的权限。在Zone a中配置database=b资源的权限是不会起作用的。 zone a
  4. 使用admin_b用户登录Ranger WebUI,详情请参见访问Ranger UI
  5. 在Ranger WebUI页面,在右上角的Security Zone区域,选择b
  6. 单击emr-hive,查看emr-hive Service中的权限。
    只能查看和修改Zone b中配置的权限,无法查看和修改Zone a中配置的权限。您可以配置一个属于Zone b的资源的权限,例如给test用户配置b.test表的select权限。使用Beeline进行测试,该权限配置可以生效。 zone b