教程:使用企业安全性套餐在 HDInsight 中配置 Apache HBase 策略

了解如何为企业安全性套餐 (ESP) Apache HBase 群集配置 Apache Ranger 策略。 将 ESP 群集连接到域,可允许用户使用域凭据进行身份验证。 本教程将创建两个 Ranger 策略来限制对 HBase 表中不同列系列的访问。

在本教程中,你将了解如何执行以下操作:

  • 创建域用户
  • 创建 Ranger 策略
  • 在 HBase 群集中创建表
  • 测试 Ranger 策略

开始之前

连接到 Apache Ranger 管理 UI

  1. 在浏览器中,使用 URL https://<ClusterName>.azurehdinsight.cn/Ranger/ 连接到 Ranger 管理用户界面。 请记住将 <ClusterName> 更改为 HBase 群集的名称。

    备注

    Ranger 凭据与 Hadoop 集群凭据不同。 若要防止浏览器使用缓存的 Hadoop 凭据,请使用新的 InPrivate 浏览器窗口连接到 Ranger 管理 UI。

  2. 使用 Azure Active Directory (AD) 管理员凭据登录。 Azure AD 管理员凭据与 HDInsight 群集凭据或 Linux HDInsight 节点 SSH 凭据不同。

创建域用户

访问使用企业安全性套餐创建 HDInsight 群集,以了解如何创建 sales_user1marketing_user1 域用户。 在生产方案中,域用户来自你的 Active Directory·租户。

创建 HBase 表并导入示例数据

可以使用 SSH 连接到 HBase 群集,并使用 Apache HBase Shell 来创建 HBase 表以及插入和查询数据。 有关详细信息,请参阅 Use SSH with HDInsight(对 HDInsight 使用 SSH)。

使用 HBase shell

  1. 从 SSH 运行以下 HBase 命令:

    hbase shell
    
  2. 创建包含列系列 NameContact 的 HBase 表 Customers

    create 'Customers', 'Name', 'Contact'
    list
    
  3. 插入一些数据:

    put 'Customers','1001','Name:First','Alice'
    put 'Customers','1001','Name:Last','Johnson'
    put 'Customers','1001','Contact:Phone','333-333-3333'
    put 'Customers','1001','Contact:Address','313 133rd Place'
    put 'Customers','1001','Contact:City','Redmond'
    put 'Customers','1001','Contact:State','WA'
    put 'Customers','1001','Contact:ZipCode','98052'
    put 'Customers','1002','Name:First','Robert'
    put 'Customers','1002','Name:Last','Stevens'
    put 'Customers','1002','Contact:Phone','777-777-7777'
    put 'Customers','1002','Contact:Address','717 177th Ave'
    put 'Customers','1002','Contact:City','Bellevue'
    put 'Customers','1002','Contact:State','WA'
    put 'Customers','1002','Contact:ZipCode','98008'
    
  4. 查看表的内容:

    scan 'Customers'
    

    HDInsight Hadoop HBase shell 输出

创建 Ranger 策略

sales_user1marketing_user1 创建 Ranger 策略。

  1. 打开“Ranger 管理 UI” 。 在“HBase”下,单击“<ClusterName>_hbase”。

    HDInsight Apache Ranger 管理 UI

  2. “策略列表”屏幕将显示针对此群集创建的所有 Ranger 策略。 可以列出一个预先配置的策略。 单击“添加新策略”。

    Apache Ranger HBase 策略列表

  3. 在“创建策略”屏幕上输入以下值 :

    设置 建议的值
    策略名称 sales_customers_name_contact
    HBase 表 客户
    HBase 列系列 名称、联系人
    HBase 列 *
    选择组
    选择用户 sales_user1
    权限 读取

    主题名称中可以包含以下通配符:

    • * 表示字符出现零次或多次。
    • ? 表示单个字符。

    Apache Ranger 策略创建 sales

    备注

    如果“选择用户” 中未自动填充域用户,请等待片刻时间让 Ranger 与 Azure AD 同步。

  4. 单击“添加”保存策略。

  5. 单击“添加新策略” ,然后输入以下值:

    设置 建议的值
    策略名称 marketing_customers_contact
    HBase 表 客户
    HBase 列系列 联系人
    HBase 列 *
    选择组
    选择用户 marketing_user1
    权限 读取

    Apache Ranger 策略创建 marketing

  6. 单击“添加”保存策略。

测试 Ranger 策略

根据配置的 Ranger 策略,sales_user1 可以查看 NameContact 列系列中的列的所有数据。 marketing_user1 只能查看 Contact 列系列中的数据。

以 sales_user1 的身份访问数据

  1. 打开与群集的新 SSH 连接。 使用以下命令登录到群集:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.cn
    
  2. 使用 kinit 命令更改为所需用户的上下文。

    kinit sales_user1
    
  3. 打开 HBase shell,并扫描表 Customers

    hbase shell
    scan `Customers`
    
  4. 请注意,sales 用户可以查看 Customers 表的所有列,包括 Name 列系列中的两个列,以及 Contact 列系列中的五个列。

    ROW                                COLUMN+CELL
     1001                              column=Contact:Address, timestamp=1548894873820, value=313 133rd Place
     1001                              column=Contact:City, timestamp=1548895061523, value=Redmond
     1001                              column=Contact:Phone, timestamp=1548894871759, value=333-333-3333
     1001                              column=Contact:State, timestamp=1548895061613, value=WA
     1001                              column=Contact:ZipCode, timestamp=1548895063111, value=98052
     1001                              column=Name:First, timestamp=1548894871561, value=Alice
     1001                              column=Name:Last, timestamp=1548894871707, value=Johnson
     1002                              column=Contact:Address, timestamp=1548894899174, value=717 177th Ave
     1002                              column=Contact:City, timestamp=1548895103129, value=Bellevue
     1002                              column=Contact:Phone, timestamp=1548894897524, value=777-777-7777
     1002                              column=Contact:State, timestamp=1548895103231, value=WA
     1002                              column=Contact:ZipCode, timestamp=1548895104804, value=98008
     1002                              column=Name:First, timestamp=1548894897419, value=Robert
     1002                              column=Name:Last, timestamp=1548894897487, value=Stevens
    2 row(s) in 0.1000 seconds
    

以 marketing_user1 的身份访问数据

  1. 打开与群集的新 SSH 连接。 使用以下命令以 marketing_user1 身份登录:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.cn
    
  2. 使用 kinit 命令更改为所需用户的上下文

    kinit marketing_user1
    
  3. 打开 HBase shell,并扫描表 Customers

    hbase shell
    scan `Customers`
    
  4. 请注意,marketing 用户只能查看 Contact 列系列的五个列。

    ROW                                COLUMN+CELL
     1001                              column=Contact:Address, timestamp=1548894873820, value=313 133rd Place
     1001                              column=Contact:City, timestamp=1548895061523, value=Redmond
     1001                              column=Contact:Phone, timestamp=1548894871759, value=333-333-3333
     1001                              column=Contact:State, timestamp=1548895061613, value=WA
     1001                              column=Contact:ZipCode, timestamp=1548895063111, value=98052
     1002                              column=Contact:Address, timestamp=1548894899174, value=717 177th Ave
     1002                              column=Contact:City, timestamp=1548895103129, value=Bellevue
     1002                              column=Contact:Phone, timestamp=1548894897524, value=777-777-7777
     1002                              column=Contact:State, timestamp=1548895103231, value=WA
     1002                              column=Contact:ZipCode, timestamp=1548895104804, value=98008
    2 row(s) in 0.0730 seconds
    
  5. 从 Ranger UI 查看审核访问事件。

    HDInsight Ranger UI 策略审核

清理资源

如果不打算继续使用此应用程序,请使用以下步骤删除创建的 HBase 群集:

  1. 登录 Azure 门户
  2. 在顶部的“搜索”框中,键入 HDInsight
  3. 选择“服务”下的“HDInsight 群集” 。
  4. 在显示的 HDInsight 群集列表中,单击为本教程创建的群集旁边的“...”。
  5. 单击 “删除” 。 单击 “是”

后续步骤