(1) 管理员设置策略以及用户(例如一个用户对一个hive数据库相关的权限) --->(2) 用户通过 jdbc beeline 去请求HiveServe2
--->(3)hive 权限check, 请求ranger api 获取策略是否已经更新,更新了就利用新的策略,如果没有更新利用本地缓存数据, plugin 会30 秒访问ranger服务 更新策略
(4) hiveserver2 可以通过grant 和 revoke 去请求 ranger 服务 去更新策略
(5) check 和 grant 和 revoke 操作记录 会放到ranger 的audit 审计日志里。
参考incubator-ranger-ranger-0.5.3-rc3/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
主要步骤:(1) check 是否有admin 的权限 和 创建的用户数据检验
(2) 初始化XPortalUser 和 XUser 两个数据结构对应数据库 x_portal_user, x_user,
(3) 如果有用户组信息, 将信息加入到 数据库 x_group_users 中
(4) 将操作的日志XXTRxLog 写入数据库 x_trx_log
(5) 通过XPortalUser 用户的角色 更新用户的模块权限 ,数据库对应x_user_module_perm
http://172.24.5.149:6080/service/xusers/secure/users/delete?forceDelete=true
参考incubator-ranger-ranger-0.5.3-rc3/security-admin/src/main/java/org/apache/ranger/rest/XUserREST.java
参考:incubator-ranger-ranger-0.5.3-rc3/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST
(1) 验证policy是否规范, 比如是否为null, 如果是更新操作,id 是否为空, 名称是否重复,此策略对应的服务名不存在等等。
(2) 确定权限是否是admin
(3) 获取RangerService 和 XXServiceDef 信息 看是否为空
(4) 获取resource 和 policyItem 信息。
(5) 通过policyService 创建 policy 写入数据库x_policy 中
(6) 通过创建的XXPolicy 去创建 Resouces 信息
首先获取resouceDef 信息x_resouce_def, 在创建同res_def_id 和 policy_id 去创建policy_resouce 对应数据库x_policy_resouce
通过policy_resouce 和具体的值 向数据库x_policy_resouce_map 信息。
(7)通过创建的XXPolicy 去创建PolicyItem
(8) 更新x_service 里面的version 版本
(9) dataHisService 插入x_data_hist 操作记录信息
(10) 插入x_trx_log 操作记录信息
参考incubator-ranger-ranger-0.5.3-rc3/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
(1) 通过policyId 获取RangerPolicy 信息, 通过x_policy 的service 去查询 RangerService 信息
(2) 获取Verrsion 的版本信息, 并且将删除记录 写入x_trx_log 中
(3) 通过policy删除 policyItems信息
通过policy id 获取所有policyItems 信息, 循环policyItems, 通过policyItemId 去删除x_policy_item_condition,
x_policy_item_group_perm,x_policy_item_user_perm,x_policy_item_access 信息
(4) 通过policy删除 policyResource信息
首先通过policyId 获取所有x_policy_resource 的信息,循环遍历resource信息,通过resourceId 去获取x_policy_resoure_map信息
循环resourceMaps 信息 删除resrouceMap 信息。
(5) 通过policy 删除 policy 信息
(6) 更新service 信息, 版本变更
(7) 记录x_data_hist 信息
参考incubator-ranger-ranger-0.5.3-rc3/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
(1) 验证操作
(2) 通过policyId 信息获取x_policy 信息, 通过service 获取x_service 信息, 通过x_service的type信息获取x_service_def信息
(3) 查看是否是更新名称,如果是名称,获取验证,这个名称是否已经存在了
(4) 获取更新的后的resouces 和 policyItems 信息, 并在policy 设置新的创建时间和guid和version, 并添加x_trx_log 信息
(5) 更新policy 到数据库x_policy中, 删除之前的resouces 和 policyItems信息
(6)创建新的resource 和policyItems 信息
(7) 更新x_service 的版本, 添加x_data_hist 信息。