《企业级云原生白皮书项目实战》——第五章 大数据——5.2 云原生大数据计算服务 MaxCompute——5.2.2 使用安全(2) https://developer.aliyun.com/article/1228575?groupCode=supportservice
5.2.2.2.3 ACL与Policy授权方案的异同
•相同点一:都是基于主体(被授权人)、客体(对象)和操作,三元素
•同点二:语法相似
ACL: grant <actions> on <object_type> <object_name> [(<column_list>)] to <subject_type> <subject_name> [privilegeproperties("conditions" = "<condi tions>", "expires"="<days>")]; Policy: grant <actions> on <object_type> <object_name> to ROLE <role_name> privilegeproperties("policy" = "true", "allow"="{true|false}"[, "conditions"= "<conditions>" ,"expires"="<days>"]);
•相同点三:控制功能开关默认均为打开状态
•相同点四:均支持conditions属性,从请求消息来源及访问方式等维度进行权限控制
•相同点五:授权主体都必须存在,才能授权成功。例如:ACL授权中,to USER/ROLE之后跟着的用户和角色都必须存在;Policy授权中,to ROLE之后跟着的角色必须存在
差异点使用表格进行列举,更为直观:
注意事项:
不管是ACL还是Policy方式,当一个用户被移除后,与该用户有关的授权仍然会被保留。一旦该用户被再次添加到该项目时,该用户的历史授权访问权限将被重新激活。如果需要彻底清除用户的权限信息,需要使用权限清空指令,显式地进行清理操作,避免风险:
purge privs from user ;
如此设计的目的是,在用户或角色因为误操作被删除或移出项目时,重新加入/创建后,可以快速恢复原先保留的权限,但也带来了上述的风险,所以提供了purge privs 相关操作命令,来规避风险。
5.2.2.2.4 其它授权方案
除去上文所述的ACL和Policy之外,还有三种场景在此作简要介绍。
•Download权限控制
该开关默认关闭,表示不使用Download权限控制功能,即项目中的所有用户或角色对所有表、资源、函数或实例都有Download权限。项目所有者(Project owner)或具备Super_Administrator角色的用户可以在MaxCompute项目的Project级别,执行setproject odps.security.enabledownloadprivilege=true|false;命令,开启或关闭Download权限控制功能。
在MaxCompute项目中,可以通过Tunnel下载表数据或实例执行结果,但由于下载操作存在数据泄露安全风险,需要对该操作权限进行限制,该授权方案适用于此种对于数据导出、下载较为敏感的业务场景。
•Label权限控制
该开关默认关闭,项目所有者(Project1Owner)可以在MaxCompute项目的Project级别,执行set labelsecurity=true|false;命令,开启或关闭LabelSecurity。
开启后,将以数字(取值范围为0~9。数值越大,安全级别越高。)来标注主体和客体(到字段颗粒度)的敏感等级,除必须拥有目标表的SELECT权限外,仅能访问敏感等级小于等于自身访问许可等级的表或列数据。
•基于Package跨项目访问资源
该授权机制,主要是解决,当您的项目中有大量的对象需要开放给另一项目中的用户使用时,可以将所有需要开放的资源“打包”到一个Package里,然后授权给到目标项目,由目标项目的管理员进行二次的授权,实现精细管理。
总体的使用步骤如下: