You are on page 1of 24

CDH SENTRY 方案

海量数据
2021.9
架构

目录 配置

演示
PART 01

Sentry 架构
Architecture

3
Sentry 架构 Sentry Components

• Sentry RPC 服务器管理授权元数据,支


持安全检索和操作元数据的接口。可配
• 数据处理应用程序,如 Hive 或
置多个 Sentry 服务以实现高可用性。 Impala ,需要授权访问数据或元
数据资源。数据引擎加载 Sentry
插件,拦截所有访问资源的客户
端请求并将其路由到 Sentry 插件
进行验证

Sentry Data
Server Engine

Policy Sentry
metadata Plugin
• Sentry 插件在数据引擎中运行。
• 存储权限策略数据,一般是外部
提供操作存储在 Sentry 服务
存储 db 。 器中的授权元数据的接口,包
括授权策略引擎,该引擎使用
从服务器检索的授权元数据来
评估访问请求。
Sentry 架构 Sentry Architecture

Binding
• 实现了对不同的查询引擎授权,是调用工具和
Sentry 授权之间的桥梁

Policy Engine
• 判断从 binding 层获取请求权限与服务提供层已保
存的权限描述是否匹配

Policy Provider
• 用于为 Policy Engine 提供授权元数据的抽象,负
责从存储库中读取出原先设定的访问权限

File-based Provider
• 基于文件的提供者使用的是 ini 格式的文件保存元
数据信息,如本地文件或者 HDFS 文件
Sentry 架构 Sentry DB provider

Sentry 策略存储和服务将角色
保留为 RDBMS 中的特权和
分组到角色映射,提供对应
CRUD API
Sentry 生态 Sentry Eco-system
PART 02

Sentry 配置
Configuration

8
Sentry-Hive Hive and Sentry

查询授权 权
限控制
Sentry-Impala Impala and Sentry

Impala Catalog 服务管理缓存 schema 元数


据并将其传播到所有 Impala Daemon 节点
, Catalog 服务也缓存 Sentry 元数据
Sentry-HDFS Hdfs and Sentry

SELECT -> Read access on the file.


INSERT -> Write access on the file.
ALL -> Read and Write access on the file.
实施— HDFS 配置 Implementation in HDFS

HDFS 访问控
制列表开启

检查 HDFS 权
限开启

Sentry 服务开

实施— HIVE 配置 Implementation in HIVE

HIVE Sentry
开启 

Impersonation
权限禁止

启用数据库中
的存储通知
实施— Impala 配置 Implementation in Impala
实施—权限分配模式 Policy Mode

用户组下所有用户统一获得权限
用户

用户组 角色对应用户组

角色 角色:权限赋予角色

权限分配模式
案例 Demo Implementation

1 CREATE ROLE admin

2 Grant all on server srv1 to role admin

3 Grant role admin to Group hive

4 Useradd bd

5 Create role hive_select

6 Grant select on database tmp


to role hive_select
案例
实施 7 Grant role hive_select to
group bd
8 用户 bd 获得 select tmp 权

PART 03

案例演示
Service Case

17
HIVE 案例 -1 Hive Service

创建用户组
角色定义
为 admin 角色赋予超级
1 2 创建所有权限用户组和读权限
用户组,在所有 Hive 节点创建
权限,并将 admin 角色
所有权限用户组 all_privilege 和
授权 hive 用户组
读权限用户组 reader

验证
6 HIVE 3 创建用户,匹配对应组
验证最终结果 权限 在所有 Hive 节点创建 fyl
和 zmh 用户,前者归入
all_privilege 用户组,后
者归入 reader 用户组
业务权限测试 5 4 建角色,对应用户组
使用 reader 用户组的用户 SELECT -> 文件的 Read 权限
zmh 登录 Hive 客户端,查询 INSERT -> 文件的 Write 权限
ods 库表数据,并插入数据到 ALL -> 文件的 Read 和 Write 权限
ods 库表
HIVE 案例 -2 Hive Service

创建用户组
角色定义
为 admin 角色赋予超级
1 2 创建所有权限用户组和读权限
用户组,在所有 Hive 节点创建
权限,并将 admin 角色
所有权限用户组 all_privilege 和
授权 hive 用户组
读权限用户组 reader

验证
6 HIVE 3 创建用户,匹配对应组
验证最终结果 权限 在所有 Hive 节点创建 fyl
和 zmh 用户,前者归入
all_privilege 用户组,后
者归入 reader 用户组
业务权限测试 5 4 建角色,对应用户组
使用 reader 用户组的用户 SELECT -> 文件的 Read 权限
zmh 登录 Hive 客户端,查询 INSERT -> 文件的 Write 权限
ods 库表数据,并插入数据到 ALL -> 文件的 Read 和 Write 权限
ods 库表
HIVE 案例 -3 Hive Service

创建用户组
角色定义
为 admin 角色赋予超级
1 2 创建所有权限用户组和读权限
用户组,在所有 Hive 节点创建
权限,并将 admin 角色
所有权限用户组 all_privilege 和
授权 hive 用户组
读权限用户组 reader

验证
6 HIVE 3 创建用户,匹配对应组
验证最终结果 权限 在所有 Hive 节点创建 fyl
和 zmh 用户,前者归入
all_privilege 用户组,后
者归入 reader 用户组
业务权限测试 5 4 建角色,对应用户组
使用 reader 用户组的用户 SELECT -> 文件的 Read 权限
zmh 登录 Hive 客户端,查询 INSERT -> 文件的 Write 权限
ods 库表数据,并插入数据到 ALL -> 文件的 Read 和 Write 权限
ods 库表
HIVE 案例 -4 Hive Service

创建用户组
角色定义
为 admin 角色赋予超级
1 2 创建所有权限用户组和读权限
用户组,在所有 Hive 节点创建
权限,并将 admin 角色
所有权限用户组 all_privilege 和
授权 hive 用户组
读权限用户组 reader

验证
6 HIVE 3 创建用户,匹配对应组
验证最终结果 权限 在所有 Hive 节点创建 fyl
和 zmh 用户,前者归入
all_privilege 用户组,后
者归入 reader 用户组
业务权限测试 5 4 建角色,对应用户组
使用 reader 用户组的用户 SELECT -> 文件的 Read 权限
zmh 登录 Hive 客户端,查询 INSERT -> 文件的 Write 权限
ods 库表数据,并插入数据到 ALL -> 文件的 Read 和 Write 权限
ods 库表
HIVE 案例 -5 Hive Service

创建用户组
角色定义
为 admin 角色赋予超级
1 2 创建所有权限用户组和读权限
用户组,在所有 Hive 节点创建
权限,并将 admin 角色
所有权限用户组 all_privilege 和
授权 hive 用户组
读权限用户组 reader

验证
6 HIVE 3 创建用户,匹配对应组
验证最终结果 权限 在所有 Hive 节点创建 fyl
和 zmh 用户,前者归入
all_privilege 用户组,后
者归入 reader 用户组
业务权限测试 5 4 建角色,对应用户组
使用 reader 用户组的用户 SELECT -> 文件的 Read 权限
zmh 登录 Hive 客户端,查询 INSERT -> 文件的 Write 权限
ods 库表数据,并插入数据到 ALL -> 文件的 Read 和 Write 权限
ods 库表
Sentry 命令 CML Demo

角色
创建 • create role role_name;

常用 权限


GRANT select ON DATABASE ods to role role_name;
GRANT all ON TABLE TEST to role role_name;
命令 更改 • GRANT ROLE role_name TO GROUP
user_group_name;

• SHOW ROLES ;
权限 • SHOW ROLE GRANT GROUP user_group_name;
查看 • SHOW GRANT ROLE role_name;
THE END

谢谢

24

You might also like