文档

权限管理常见问题

更新时间:

本文为您介绍MaxCompute的权限管理常见问题。

问题类别

常见问题

授权方案

为用户授权

权限报错

如何跨项目读取数据?

您可以基于Package实现跨项目读取数据的功能,Package是一种跨项目共享数据及资源的机制,主要用于解决跨项目的用户授权问题。使用Package之后,项目管理员可以对其他项目需要使用的对象进行打包授权(也就是创建一个Package),然后许可其他项目安装此Package,其他项目管理员安装Package之后,就可以自行管理Package进一步授权给自己项目中的用户。

更多Package使用及权限控制信息,请参见基于Package跨项目访问资源Package的权限控制

MaxCompute项目的所有者能否更换为RAM用户?

项目所有者不可以更换,创建项目的人即是项目所有者。项目所有者可以将Admin角色赋予RAM用户。

与项目所有者相比,Admin角色有哪些限制?

与项目所有者相比,Admin角色不能执行如下操作:

  • Admin角色不能将Admin权限指派给用户。

  • 不能设定项目的安全配置。

  • 不能修改项目的鉴权模型。

  • Admin角色所对应的权限不能被修改。

RAM用户无法访问DataWorks,提示缺少AccessKey ID,但实际有AccessKey ID,如何解决?

RAM用户需要在个人信息中绑定AccessKey信息。进入个人信息页面,单击修改AccessKey信息,输入AccessKey IDAccessKey Secret。完成配置后,请您重新尝试访问DataWorks。

为RAM用户申请生产环境表的权限时,提示授权失败,如何解决?

  • 问题现象

    阿里云账号为RAM用户授权生产环境表的权限时,返回如下报错。

    class java.lang.IllegalArgumentException: AccessId should not be empty.
  • 产生原因

    阿里云账号或RAM用户的AccessKey ID和AccessKey Secret未完成配置。

  • 解决措施

    使用阿里云账号或以RAM用户身份进入个人信息页面,确认是否已配置AccessKey ID和AccessKey Secret。如果未配置,单击修改AccessKey信息,输入AccessKey IDAccessKey Secret

如何授予用户操作表的权限?

需要由项目所有者或具备Super_Administrator、Admin角色的用户执行授权操作。您可以通过ACL授权方式(grant)为用户授予表的相关操作权限。命令示例如下。

grant Update on table project_name to ram$bob@aliyun.com:Allen;

更多授权信息,请参见MaxCompute权限

如何为RAM用户授权?

需要由阿里云账号或具备Super_Administrator、Admin角色的用户执行授权操作。更多授权信息,请参见MaxCompute权限

权限管理中的客体(Object)和操作(Action)是什么?

MaxCompute授权涉及到三个要素:

  • 主体(Subject):被授权的用户或角色。

  • 客体(Object):为用户或角色授予的目标对象,例如项目(Project)、表(Table)、函数(Function)、资源(Resource)及实例(Instance)。

  • 操作(Action):为用户或角色授予的可以对目标对象执行的操作。例如读、写、查表。

更多信息,请参见ACL权限控制

RAM用户如何访问其他阿里云账号创建的项目?

假设现有两个阿里云账号A和B,A账号下有一个RAM用户账号C(ram_user_1),账号C需要访问账号B创建的MaxCompute项目。

账号B需要将账号A加入到账号B创建的项目中,同时账号B为账号A授予MaxCompute Super_Administrator角色。然后用账号A登录账号B的项目,通过执行add user ram$A:ram_user_1;命令将账号C添加到账号B的项目中。

如何获取租户ID(tenant_id)

当您需要在租户级别指定被授权的资源范围时,权限策略中可以指定租户,此时您需要获取租户ID,获取方法如下:

  1. 登录MaxCompute控制台,在左上角选择地域。

  2. 在左侧导航栏选择租户管理 > 租户属性

  3. 租户管理页面获取对应账号的租户ID

为用户授权报错:“FAILED:Invalid account Name xxxxxx”,如何解决?

  • 问题现象

    为用户授权时,返回如下报错。

    FAILED:Invalid account Name xxxxxx
  • 产生原因

    授权语句中的用户名无效。

  • 解决措施

    建议您确认用户名是否正确。可以通过执行list users;命令获取当前项目的用户列表,然后授权时直接复制用户列表中的用户名,避免手动输入拼写错误,导致用户名无效。

为用户授权报错:“FAILED: lack of account provider, principalName xxxxxx”,如何解决?

  • 问题现象

    为用户授权时,返回如下报错。

    FAILED: lack of account provider, principalName xxxxxx
  • 产生原因

    授权语句中的用户名无效或当前项目支持的账号系统不支持RAM。

  • 解决措施

    建议您登录MaxCompute客户端,执行list accountproviders;命令查看MaxCompute项目空间支持的账号系统是否支持RAM。如果返回结果没有RAM,执行add accountprovider ram;命令,增加对RAM账号体系的支持,并再次执行list accountproviders;命令查看MaxCompute项目空间支持的账号系统已增加RAM。若确认项目支持RAM,仍然报错,则需要确认用户名是否正确。可以通过执行list users;命令获取当前项目的用户列表,然后授权时直接复制用户列表中的用户名,避免手动输入拼写错误,导致用户名无效。

MaxCompute中有视图(View)查询权限,为什么执行查询时报错其他用户无权限而无法查询?

  • 问题现象

    MaxCompute中视图(ViewA)引用数据表B,用户A有ViewA的查询权限,执行查询ViewA时报错用户B(视图Owner)无数据表B的查询权限。

  • 产生原因

    当视图Owner(View Owner)缺失视图引用表的SELECT权限时,视图不可用。一般场景为视图Owner变更后,没有及时对新的Owner授予视图引用表的SELECT权限;或视图引用表的Owner撤销了视图Owner对引用表的SELECT权限。因此即使用户A有ViewA的查询权限,也无法进行视图的查询。

  • 解决措施

    建议您检查视图Owner(View Owner)是否丢失了视图引用表的SELECT权限,命令如下。

    show grants for <user_name>;  -- user_name为视图Owner的用户名称

    若确认丢失,需要给View Owner重新添加视图引用表的SELECT权限,视图方可使用。

执行作业报错:You have NO privilege to do the restricted operation on xxx Access Mode is AllDenied如何解决?

  • 产生原因

    对应的项目为禁用状态。

  • 解决措施

    • 检查是否账号欠费或者是项目关联默认计算Quota为包年包月Quota而对应包年包月订单到期了。欠费或到期的话您充值、续费成功后会自动恢复为正常状态,恢复速度与您订单量、项目量相关,时间为2~30分钟不等。

    • 非欠费/到期,则应该是手动禁用了,可以直接到MaxCompute控制台的项目管理页面恢复项目,详情请参见变更项目状态

创建资源类型(Resource)的自定义角色报错:“failed to check policy format: invalid Action value - odps:<Action>”,如何解决?

  • 问题现象

    使用Policy权限控制功能,以创建资源类型(Resource)的角色test_role并授予该角色创建Package(CreatePackage)的权限为例,编写Policy授权如下:

    {
        "Statement":[
            {
                "Action":[
                    "odps:CreatePackage"
                    ],
                    "Effect":"Allow",
                    "Resource":[
                        "acs:odps:*:projects/test_project/authorization",
                        "acs:odps:*:projects/test_project/authorization/packages/*",
                        "acs:odps:*:projects/test_project/authorization/packages/*/*/*" 
                        ]
            }
        ],
        "Version":"1"
    }

    返回如下报错。

    Create role test_role error: [400] com.aliyun.odps.OdpsException: failed to check policy format: invalid Action value - odps:CreatePackage
  • 产生原因

    MaxCompute不支持对资源类型(Resource)角色授予项目管理类权限,而创建Package(CreatePackage)属于项目管理类权限。查看更多项目管理类权限,请参见项目管理类权限一览表

  • 解决措施

    新建包含项目管理类权限的自定义角色时,切换角色类型为Admin(管理类型),即可创建成功。更多有关角色规划详情,请参见角色规划