本文为您介绍MaxCompute的权限管理常见问题。
问题类别 | 常见问题 |
---|---|
授权方案 | |
为用户授权 | |
权限报错 |
如何跨项目读取数据?
您可以基于Package实现跨项目读取数据的功能,Package是一种跨项目共享数据及资源的机制,主要用于解决跨项目的用户授权问题。使用Package之后,项目管理员可以对其他项目需要使用的对象进行打包授权(也就是创建一个Package),然后许可其他项目安装此Package,其他项目管理员安装Package之后,就可以自行管理Package进一步授权给自己项目中的用户。
更多Package使用及权限控制信息,请参见基于Package跨项目访问资源和Package的权限控制。
MaxCompute项目的所有者能否更换为RAM用户?
项目所有者不可以更换,创建项目的人即是项目所有者。项目所有者可以将Admin角色赋予RAM用户。
与项目所有者相比,Admin角色有哪些限制?
- Admin角色不能将Admin权限指派给用户。
- 不能设定项目的安全配置。
- 不能修改项目的鉴权模型。
- Admin角色所对应的权限不能被修改。
RAM用户无法访问DataWorks,提示缺少AccessKey ID,但实际有AccessKey ID,如何解决?
RAM用户需要在个人信息中绑定AccessKey信息。进入个人信息页面,单击修改AccessKey信息,输入AccessKey ID和AccessKey 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 ID和AccessKey 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)是什么?
- 主体(Subject):被授权的用户或角色。
- 客体(Object):为用户或角色授予的目标对象,例如项目(Project)、表(Table)、函数(Function)、资源(Resource)及实例(Instance)。
- 操作(Action):为用户或角色授予的可以对目标对象执行的操作。例如读、写、查表。
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的项目中。
为用户授权报错:“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权限,命令如下。
若确认丢失,需要给View Owner重新添加视图引用表的SELECT权限,视图方可使用。show grants for <user_name>; -- user_name为视图Owner的用户名称
执行作业报错:You have NO privilege to do the restricted operation on xxx Access Mode is AllDenied如何解决?
- 产生原因
对应的项目为禁用状态。
- 解决措施
- 检查是否账号欠费或者是项目关联默认计算Quota为包年包月Quota而对应包年包月订单到期了。欠费或到期的话您充值、续费成功后会自动恢复为正常状态,恢复速度与您订单量、项目量相关,时间为2~30分钟不等。
- 非欠费/到期,则应该是手动禁用了,可以直接到MaxCompute控制台的项目管理页面恢复项目,详情请参见变更项目状态。