权限说明

本文主要介绍数据湖构建(DLF)的权限体系说明,介绍如何为子账号授予合适的权限,以便其可以正确使用和访问DLF的功能。

数据湖构建(DLF)产品的权限体系主要分为RAM权限以及DLF数据权限控制两大类,如果您要访问DLF的页面或数据,一般都需要通过这两层权限校验,才可以正确的访问到数据资源。

  • RAM 权限:主要控制DLF所有OpenAPI的访问权限,决定RAM用户是否可以访问某些DLF OpenAPI或页面。

  • DLF数据权限:主要控制DLF内部资源的访问和使用权限,包括数据库、数据表、数据列、函数、数据目录等,以及数据权限的操作权限。

DLF权限校验的示例图:

image

第一层: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权限开关。

    • 第四步,授予子账号相应数据权限,有以下几种常见方式:

      • 授权数据管理员:可将admin/super_administrator等先由主账号授予给RAM用户,让对应的RAM用户进行授权管理,他将具备所有数据权限及授权管理权限。参考角色管理

      • 授权普通数据库管理员:可将某一个数据库的所有权限点,授权给该用户。参考新增授权

      • 授权普通表/列访问权限:可将某一个表或列的相应权限点,授权给该用户。参考新增授权

权限常见问题

  • 问题一:访问时提示无RAM DLF API相关权限。

    具体表现为:页面提示需要RAM进行授权dlf:xxx权限,需要在RAM上授予AliyunDLF相关OpenAPI层权限,DLF在RAM上已内置AliyunDLFFullAccess及AliyunDLFReadOnlyAccess权限,用户可参考进行授予。

    image

  • 问题二:授权时提示无资源权限。

    具体表现为:进行权限授予时提示没有dlf permission权限。

    • 授予用户对应资源的授权权限(也可通过授予角色获得)。参考新增授权

    • 授予用户数据湖admin/super_administrator角色。参考角色管理

    • 授予用户dlf-dss权限,例如:dlf-dss:BatchGrantPermissions + dlf-dss: SelectTable表示该用户可以授予所有表的select权限给其他用户。

    image

  • 问题三:调用控制类API无权限(例如权限相关listPermissions等,角色相关listRoles等)。

    具体表现为调用控制类API出错,例如进行权限查询,角色管理时提示对应操作没有权限,错误码为NoPermission。有以下途径可以解决问题:

    • 授予用户数据湖admin/super_administrator角色。参考角色管理

    • 授予用户dlf-dss权限,DLF在RAM上已内置AliyunDLFDSSFullAccess及AliyunDLFDSSReadOnlyAccess权限,例如:

      • dlf-dss:ListRoles表示该用户可以查看所有DLF中的角色。

      • dlf-dss:ListPermissions表示该用户可以查看所有DLF中已授予的权限。

    image