DLI权限问题定位思路以及常用场景案例
DLI权限管理主要分为3块,DLI服务权限控制、IAM用户权限控制、企业项目权限控制。
只要存在deny的权限则鉴权结果为deny;如果没有deny,并且存在allow则鉴权结果为allow;如果没有deny,也没有allow则鉴权结果也为deny。
用户信息:用户界面的me接口会返回用户信息以及一些角色信息。角色中有op_ecp说明在企业项目授权了。op_fine_grained说明支持细粒度鉴权。op_restricted余额不足,op_suspended欠费。
1.问题定位
以一个案例为例:以权限较为复杂的表为例,如果一个表的select权限突然丢失了该怎么去定位。
1.先看报错信息
Permission denied due to policy xxx. --- 说明被policy deny,需要找DLI的oncall帮忙查看
Permission denied. Policy doesn't allow ---说明被策略deny,可以先看一下me接口,看该用户是否涉及细粒度权限或者企业项目权限,需要查看IAM界面该用户所属的用户组绑定的策略是否将select操作deny。如果没有则看企业项目界面,看资源对应的企业项目下是否绑定了策略,并且确认策略中是否将select操作deny。
Permission denied for resource xxx --- 需要继续定位
2. 查看权限,进入console界面权限管理
- 如果显示该用户有select权限,则肯定是代码问题。注意确认该表是不是跨project授权的表,如果是跨project表则要确认,跨project权限是否有select权限。
- 如果没有权限,则查看这个表最近有没有删除重建的操作,在job表里面用`test`.`aaa`查询。
- 如果没有删除重建,则在job表里面查询change data privileges for user $userName;如果涉及跨project查询 change data privileges for project $授权projectId
以下需要找dliOncall帮忙查询:
- 如果有权限操作,需要看一下jm日志,$userId data authorization, userName: $userName, action: $action;看看是什么操作,然后根据用户当前的权限判断是否合理。
- 如果最近没有涉及权限操作,可以看看ME接口中是否涉及细粒度权限或者企业项目权限控制。如果涉及需要查看审计日志,看看最近的变化是否涉及到了dli的权限。
相关日志:begin checkPdpPermission resource: databases.test.tables.testaction: $action
2. 常用场景案例
2.1 flink作业查看
子用户在dli中不能查看flink作业,可以看到队列,问下需要怎么设置权限可以查看flink作业
处理方式:
- DLI授权管理
- 使用租户账号或作业owner账号或有DLI Service Administrator权限的账号登录DLIconsole页面。
- 进入数据湖探索 – 作业管理 – Flink作业 找到对应的作业。在对应作业的操作栏中选择 更多 - 权限管理。
- 点击授权 – 输入需要权限的用户名 – 勾选需要的权限。只要授权任意权限,被授权用户就可以看到该作业,并且执行相关权限操作。
- IAM授权管理
- 进入IAM界面,权限 – 创建自定义权限
- 需要查看Flink作业的话需要在项目级服务 – 可视化视图 – 云服务选‘
数据湖探索(DLI)’ – 操作选择‘dli:jobs:list_all’ – 点击确认创建策略。
- 在统一身份认证服务界面 – 用户组中,找到需要授权的用户所属的用户组,点击操作一栏中的权限配置,点击配置权限。
- 选择区域级项目,选择对应的授权区域,在权限选择中选择第一步中创建的的自定义策略 或者 DLI Service Admin(权限较大,拥有DLI所有权限) 角色都可以实现Flink作业的查看。
- 点赞
- 收藏
- 关注作者
评论(0)