如何在Hue中使用Sentry

8 篇文章 0 订阅
2 篇文章 0 订阅

1.文档编写目的


本文档讲述如何通过Hue管理Sentry权限,您将学习到以下知识:

1.如何使用Hue创建用户

2.如何使用Hue为hive用户组授权超级权限

3.如何使用Hue验证授权

文档主要分为以下几步:

1.使用Hue创建测试用户

2.授权hive组为管理员

3.创建角色并授权验证

4.备注

这篇文档将重点介绍如何使用Hue管理Sentry权限,并基于以下假设:

1.CDH集群运行正常

2.集群已启用Kerberos

3.集群已安装Sentry服务,已和HDFS/Hive/Impala/Hue服务集成

以下是本次测试环境,但不是本操作手册的硬限制:

1.操作系统:CentOS 6.5

2.CDH和CM版本为5.12.1

3.采用root用户进行操作

4.Hue的管理员账号为admin

2.在Hue上创建用户


通过Hue管理员分别创建用户hive/fayson_d/fayson_a/fayson_c/fayson_h,hive用户所属组为hive组,其它用户所属组也与用户名称一样。

注意:确保以上用户在集群所有节点均存在。

0033-如何在Hue中使用Sentry

1.使用admin用户登录Hue

0033-如何在Hue中使用Sentry

2.进入用户管理,创建hive的组

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

点击“Add group”保存新建的组

0033-如何在Hue中使用Sentry

3.创建hive用户(以创建hive用户为例)

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

3.授权hive组为管理员


1.使用hive用户登录Hue

0033-如何在Hue中使用Sentry

2.点击Hue左上角菜单,进入Security界面

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

3.创建管理员角色admin,并授权给hive组

0033-如何在Hue中使用Sentry

点击上图右边“Click here to add some”

0033-如何在Hue中使用Sentry

点击保存,显示server1所拥有的角色

0033-如何在Hue中使用Sentry

点击刷新按钮,查看是否有权限

0033-如何在Hue中使用Sentry

hive用户可以查看到server1下所有的数据库和表

0033-如何在Hue中使用Sentry

4.创建角色并授权验证

4.1库级别授权


使用hive用户创建一个对default库有只读(SELECT)权限的角色dread,并授权给fayson_d用户组,所属该用户组的用户对default库下所有表只有SECLET权限没有INSERT权限。

0033-如何在Hue中使用Sentry

添加角色并授权

0033-如何在Hue中使用Sentry

点击保存并查看

0033-如何在Hue中使用Sentry

4.2库授权验证


使用fayson_d用户登录Hue,可以看到default下所有表

  • Hive验证

0033-如何在Hue中使用Sentry

对test表进行select、count和insert操作

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

只读权限所以INSERT操作失败

0033-如何在Hue中使用Sentry

对test_hive_delimiter表进行select、count和insert操作

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

  • Impala验证

0033-如何在Hue中使用Sentry

对test表进行select、count和insert操作

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

对test_hive_delimiter表进行select、count和insert操作

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

  • File Browser验证

无权限访问/warehouse目录下的fayson库的数据目录

0033-如何在Hue中使用Sentry

test表为内部表,数据目录为/user/hive/warehouse/test

0033-如何在Hue中使用Sentry

可以查看test表的数据文件

0033-如何在Hue中使用Sentry

test_hive_delimiter表为外部表,数据目录为/fayson/test_hive_delimiter

0033-如何在Hue中使用Sentry

可以查看/fayson/test_hive_delimiter目录下的数据文件

0033-如何在Hue中使用Sentry

无权限编辑数据文件

0033-如何在Hue中使用Sentry

结论:fayson_d用户可以使用Hive/Impala查看所有default库下的表,但是没有insert权限,插入表失败。对应到HDFS目录,可以查看所有目录文件夹,并查看文件内容,但是无法修改文件内容。说明Sentry实现了HDFS ACL的同步。

4.3表级别授权


使用hive用户创建一个对default库下test表有所有(ALL)操作权限的角色testall,并授权给fayson_a用户组,所属该用户组下的所有用户能对default.test表SELECT、INSERT。

0033-如何在Hue中使用Sentry

创建角色并授权

0033-如何在Hue中使用Sentry

点击保存并查看

0033-如何在Hue中使用Sentry

4.4表授权验证


使用fayson_a登录Hue,可以看到default库下的test表

  • Hive验证

0033-如何在Hue中使用Sentry

可以对test表进行select、count和insert操作

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

  • Impala验证

0033-如何在Hue中使用Sentry

可以对test表进行select、count和insert操作

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

  • File Browser验证

可以浏览/user/hive/warehouse目录

0033-如何在Hue中使用Sentry

可以查看/user/hive/warehouse/test目录下的数据文件

0033-如何在Hue中使用Sentry

可以向/user/hive/warehouse/test目录下上传数据文件

0033-如何在Hue中使用Sentry

可以删除数据文件

0033-如何在Hue中使用Sentry

结论:fayson_a用户可以使用Hive/Impala查看所有default库下的表,并能执行insert操作。对应到HDFS目录,可以查看所有目录文件夹,并查看文件内容,同时还能上传新的文件。说明Sentry实现了HDFS ACL的同步。

4.5列级别授权


使用hive用户创建一个对test表的s1列有只读(SELECT)权限的角色testcolumn,并授权给fayson_c用户。所属该用户组下的所有用户对test表的s1列只有SELECT权限。

0033-如何在Hue中使用Sentry

添加角色并授权

0033-如何在Hue中使用Sentry

点击保存并查看

0033-如何在Hue中使用Sentry

4.6列授权验证


使用fayson_c登录Hue,可以看到default库下的test表

  • Hive验证

0033-如何在Hue中使用Sentry

对test表进行select、count和insert操作

0033-如何在Hue中使用Sentry

由于只有s1列的SELECT权限,所以不能查看所有列(*)

0033-如何在Hue中使用Sentry

只可以查看有权限的列

0033-如何在Hue中使用Sentry

只能count那一列

0033-如何在Hue中使用Sentry

无法插入新的数据

  • Impala验证

0033-如何在Hue中使用Sentry

对test表进行select、count和insert操作

0033-如何在Hue中使用Sentry

由于只有s1列的SELECT权限,所以不能查看所有列(*)

0033-如何在Hue中使用Sentry

只可以查看有权限的列

0033-如何在Hue中使用Sentry

只能count那一列

0033-如何在Hue中使用Sentry

无法插入新的数据

  • File Browser验证

无权限访问/user/hive/warehouse/test目录

0033-如何在Hue中使用Sentry

结论:fayson_c用户使用Hive/Impala只能查看test表的s1列,无法对整表select *,无法执行insert操作。对应到HDFS目录,不能查看相应目录文件夹/文件,同时无法上传新的文件。说明Sentry实现了HDFS ACL的同步。

4.7HDFS URI授权


使用hive用户创建一个角色,并授权给fayson_h用户组

  • 授权hdfsall角色对fayson库有所有权限
  • 授权hdfsall角色对HDFS目录/fayson_data/test_hive有所有(ALL)权限

所属该用户组下的所有用户均对fayson库有所有操作权限,对/fayson_data /test_hive目录有所有权限,在fayson库下创建外部表只能指向/fayson_data /test_hive目录

0033-如何在Hue中使用Sentry

创建角色并授权

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

点击保存,查看创建的角色

0033-如何在Hue中使用Sentry

4.7HDFS URI授权验证


  • 授权验证

使用fayson_h用户登录Hue,可以看到fayson库

0033-如何在Hue中使用Sentry

在fayson库下创建外部表,执行如下建表语句

 

表创建成功

0033-如何在Hue中使用Sentry

删除test_hive表

0033-如何在Hue中使用Sentry

向test_hive表插入数据

0033-如何在Hue中使用Sentry

使用hive用户将hdfs的授权权限删除,再次测试

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

使用fayson_h用户在fayson库下再次创建表,表创建失败。

0033-如何在Hue中使用Sentry

  • File Browser验证

访问fayson库数据目录/user/hive/warehouse/fayson.db

0033-如何在Hue中使用Sentry

访问外部表数据目录/fayson_data/test_hive

0033-如何在Hue中使用Sentry

不能向外部表数据目录上传数据文件

0033-如何在Hue中使用Sentry

无权限删除外部表数据目录下文件

0033-如何在Hue中使用Sentry

访问内部表数据目录/user/hive/warehouse/fayson.db/test

0033-如何在Hue中使用Sentry

可以向/user/hive/warehouse/fayson.db/test数据目录上传数据

0033-如何在Hue中使用Sentry

可以删除/user/hive/warehouse/fayson.db/test目录下的数据文件

0033-如何在Hue中使用Sentry

0033-如何在Hue中使用Sentry

测试总结:

fayson_h用户对fayson库有所有权限,在create table test_hive的时候,如果不指定location,默认的数据目录为/user/hive/warehouse/fayson.db/test_hive。如果创建外部表如create external table test_hivexxx location /fayson_data/test_hive的时候,若不授权/fayson_data/test_hive目录的ALL权限给fayson_h,fayson_h是不能创建表的。

注:对于上述测试不能向外部表插入数据。

5.备注


  • 以上操作都是使用Hue界面操作,由于集群开启Kerberos,要使用命令行操作需要为上述用户创建Kerberos账号,否则不能在命令行正常使用。
  • Sentry的URI授权,主要是用于非hive用户创建外部表时对HDFS数据目录授权。Sentry授权的URI可以指向外部表的数据目录,也可以指向外部表数据目录的父目录,指向父目录则父目录下的所有子目录都可以为外部表的数据目录。
  • 原文:https://blog.51cto.com/14049791/2320839
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值