前言
MaxCompute的租户级别Information Schema从租户角度提供项目元数据及使用历史数据等信息,您可以一次性拉取您同一个元数据中心下所有Project的某类元数据,从而进行各类元数据的统计分析。我们在此推出系列元数据使用实践文章。
本文主要介绍通过元数据的相关权限的视图进行权限的相关统计。
在此之前,您如果没还使用过租户级别Information Schema,需要您先详细阅读下租户级别Information Schema文档的背景信息、功能介绍、费用介绍、费用介绍、使用限制和注意事项,避免您在使用过程中遇到不必要的问题。
成员权限统计清理
场景:离职账号清理
持有某个ram账号的员工离职,需要将对应的ram账号进行注销,注销前需要清理对应的数据权限,否则将会在MaxCompute的权限元数据里留下脏数据影响其他场景的权限审计,因此需要知道这个ram账号都有哪些项目的哪些权限。
处理思路:找到待注销RAM账号都有哪些项目的权限,将账号从项目移除并进行权限彻底清除。需要注意的是要把某个user从项目移除,需先将user从对应项目的role里移除。
- 查看该账号都有哪些项目的role权限,并清理role权限。通过system_catalog.information_schema.user_roles元数据查找账号都有哪些项目的哪些role的权限。
select * from system_catalog.information_schema.user_roles where user_name='RAM$mc_schema@test.aliyunid.com:hq_schema';
将用户从角色里移除,两种方式:
- 命令方式移除,命令为
use proejct_name;--进入role所属的project revoke <role_name> from <user_name>;
- 界面方式移除,登陆控制台-项目管理-管理-角色权限,进入对应角色的成员管理进行移除user。
- 查看该账号都是哪些项目的成员,并清理账号,再彻底清除遗留授权数据。通过system_catalog.information_schema.users元数据查看账号都是哪些project的成员。
select * from system_catalog.information_schema.users where user_name='RAM$xxxx:xxxx'; --根据前面查出的结果分别进入对应的project进行用户移除和权限清理。 use project_name; remove user RAM$xxxx:xxxx; purge privs from user RAM$xxxx:xxxx;--再进行一次彻底清除其他ACL、Policy、Label等授权数据
管理权限授权合理性审计
project的super_administrator拥有project owner一样的权限,也就是权限非常大;而admin角色也拥有所有数据的查询以及部分管理权限,也是权限很大。因此建议定期审计这两个管理角色权限的授权情况。可以通过system_catalog.information_schema.user_roles元数据查看:
select * from system_catalog.information_schema.user_roles where role_name in ('super_administrator','admin');
结果里如果有user_role_catalog为null表示 租户级别的role。您可以根据结果判断这个这两个role已经授权的user的合理性。
重要数据权限审计
场景:业务核心的表数据,数据访问授权需严谨,建议定期进行权限审计。
如projec_a的table1数据敏感,需要审计目前都有哪些成员有权限查询数据、下载数据、更新数据、删除表的权限,可以通过system_catalog.information_schema.table_privileges元数据进行统计:
SELECT * FROM system_catalog.information_schema.TABLE_PRIVILEGES WHERE table_catalog = 'projec_a' AND table_name = 'table1' AND privilege_type in ('all','select','update','download');
其中privilege_type为 all的表示对表有所有的权限,因此不要漏掉这个权限。
小结
以上只是给出了常见的几个场景,system_catalog.information_schema下还有更多相关权限的元数据信息表可使用,您可以根据自己的场景选用对应的表进行查询。