本文主要介绍数据湖构建(DLF)的权限体系说明,介绍如何为子账号授予合适的权限,以便其可以正确使用和访问DLF的功能。
数据湖构建(DLF)产品的权限体系主要分为RAM权限以及DLF数据权限控制两大类,如果您要访问DLF的页面或数据,一般都需要通过这两层权限校验,才可以正确的访问到数据资源。
RAM 权限:主要控制DLF所有OpenAPI的访问权限,决定RAM用户是否可以访问某些DLF OpenAPI或页面。
DLF数据权限:主要控制DLF内部资源的访问和使用权限,包括数据库、数据表、数据列、函数、数据目录等,以及数据权限的操作权限。
第一层:RAM OpenAPI 权限
主要控制DLF所有OpenAPI的访问权限,决定RAM用户是否可以访问某些DLF OpenAPI或页面。在RAM控制台内置了以下两种授权策略:
AliyunDLFFullAccess:表示具备所有DLF OpenAPI的调用权限。
AliyunDLFReadOnlyAccess:表示具备所有DLF只读OpenAPI(例如List/Get类的API)的调用权限。但不具备如Create/Delete等OpenAPI调用权限。
您也可以根据自己的权限控制需求,自定义RAM授权策略,满足更细粒度的OpenAPI层面的权限控制。
第二层:DLF细粒度数据权限
主要控制DLF内部资源的访问和使用权限,包括数据库、数据表、数据列、函数、数据目录等,以及角色/用户/新增授权等操作权限。
在第二层主要进行数据权限控制,分为细粒度和粗粒度两类,“DLF细粒度数据权限”与“RAM DLF-DSS粗粒度数据权限”两者之间是或者的关系,只要两者之间有一个通过数据权限校验,那么该用户就具备该数据权限。反之,必须两者都不通过数据校验,该用户才不具备该数据权限。
只有在开启Catalog权限设置开关后,针对数据资源类的权限,如数据库、数据表、数据列、函数、数据目录的数据权限校验才会生效。而角色/用户/新增授权等操作权限无论Catalog权限是否开启,都会受到细粒度数据权限校验。
为了方便管理员整体进行数据权限管理,DLF提供了内置的数据权限管理员角色,您可以在“数据权限-角色”菜单下找到这两个角色,并将某些用户加到该角色下:
admin(数据湖管理员):拥有数据湖构建中,所有的数据权限及授权权限。
super_administrator(超级管理员):拥有数据湖构建中,所有的数据权限及授权权限,可以对admin的用户进行修改。
更加细粒度的权限配置,请参考数据权限概述。
第二层:RAM DLF-DSS粗粒度数据权限
主要控制DLF内部资源的访问和使用权限,包括数据库、数据表、数据列、函数、数据目录等,以及角色/用户/新增授权等操作权限。在RAM控制台内置了以下两种授权策略:
AliyunDLFDSSFullAccess:表示具备所有DLF细粒度资源的访问权限。
AliyunDLFDSSReadOnlyAccess:表示具备所有DLF细粒度资源的只读访问权限,包括List/Get/Select/Execute等。
“RAM DLF-DSS粗粒度数据权限”目前适用场景不多,主要用于阿里云内部产品间快速互信使用,建议您使用“DLF细粒度数据权限”进行细粒度的数据权限控制。
只有在开启Catalog权限设置开关后,针对数据资源类的权限,如数据库、数据表、数据列、函数、数据目录的数据权限校验才会生效。而角色/用户/新增授权等操作权限无论Catalog权限是否开启,都会受到DLF-DSS粗粒度数据权限校验。
如果子账号被授予RAM AdministratorAccess,则该用户将具备DLF-DSS所有权限,等同于AliyunDLFDSSFullAccess。
常见场景说明
仅使用DLF元数据,不需要进行数据权限控制,但期望子账号具备元数据查询等权限。
为子账号授予“第一层:RAM OpenAPI 权限”,根据需求授予AliyunDLFFullAccess 或 AliyunDLFReadOnlyAccess内置授权策略即可。
需要使用DLF数据权限控制,做细粒度的数据授权管理。
第一步,为子账号授予“第一层:RAM OpenAPI 权限”,根据需求授予AliyunDLFFullAccess 或 AliyunDLFReadOnlyAccess内置授权策略即可。
第二步,先开启Catalog的权限设置。
第三步(可选),如你使用EMR等产品进行查询和修改数据,则需要在EMR集群同样开启DLF-Auth权限开关。
第四步,授予子账号相应数据权限,有以下几种常见方式:
权限常见问题
问题一:访问时提示无RAM DLF API相关权限。
具体表现为:页面提示需要RAM进行授权dlf:xxx权限,需要在RAM上授予AliyunDLF相关OpenAPI层权限,DLF在RAM上已内置AliyunDLFFullAccess及AliyunDLFReadOnlyAccess权限,用户可参考进行授予。
问题二:授权时提示无资源权限。
具体表现为:进行权限授予时提示没有dlf permission权限。
问题三:调用控制类API无权限(例如权限相关listPermissions等,角色相关listRoles等)。
具体表现为调用控制类API出错,例如进行权限查询,角色管理时提示对应操作没有权限,错误码为NoPermission。有以下途径可以解决问题:
授予用户数据湖admin/super_administrator角色。参考角色管理。
授予用户dlf-dss权限,DLF在RAM上已内置AliyunDLFDSSFullAccess及AliyunDLFDSSReadOnlyAccess权限,例如:
dlf-dss:ListRoles表示该用户可以查看所有DLF中的角色。
dlf-dss:ListPermissions表示该用户可以查看所有DLF中已授予的权限。