外部数据源的权限配置
外部数据源是MaxCompute租户面的资源对象,RAM用户是否能够执行对外部数据源的操作,取决于租户管理员在RAM访问控制台的权限管理>权限策略中对外部数据源配置的权限,创建权限策略详情请参见通过脚本编辑模式创建自定义权限策略。
示例:使用阿里云账号创建一条名为ForeignServerTest的权限策略,并将其授权给子账号。权限策略示例如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "odps:CreateForeignServer",
"Resource": "acs:odps:*:12xxxxxxxx07:foreignservers/*"
}
]
}增加查询全部外部数据源和获取某个外部数据源信息的权限:
如果创建外部数据源(CreateForeignServer)的同时,指定NetworkLink,则Resource中需要添加networklink。
如果指定了RAM Role,需要有对RAM Role的
ram:PassRole权限。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"odps:CreateForeignServer",
"odps:GetForeignServer",
"odps:ListForeignServers"
],
"Resource": "acs:odps:*:12xxxxxxxx07:foreignservers/*"
}
]
}其他Action说明如下:
Action名称 | 描述 |
CreateForeignServer | 创建外部数据源。 |
UpdateForeignServer | 更新外部数据源。 |
DeleteForeignServer | 删除外部数据源。 |
GetForeignServer | 获取某个外部数据源信息。 |
ListForeignServers | 查询全部外部数据源。 |
将已创建的Policy授权给子账号,即可对已授权的外部数据源执行相应操作。
项目级别租户资源访问控制
湖仓一体2.0引入的外部数据源是一种租户粒度的资源,权限由RAM Policy控制。而用户在项目中使用归属项目的对象(例如表),权限由项目管理员控制。对于租户对象是否有权被项目使用,以及在项目中使用权限的再分配,有两种安全管理模式。
若开启项目级别租户资源访问控制,创建者可以通过设置外部数据源与项目的挂载关系,指定哪些项目可以使用其创建的外部数据源,再由项目管理员通过Policy对项目内部的用户授予使用外部数据源的权限。
若未开启项目级别租户资源访问控制,任何创建了外部项目或外部Schema的用户,都可以使用此外部数据源,访问外部系统时同样基于外部数据源中创建者指定的RAMRole权限进行访问。除了湖仓一体2.0引入的外部数据源,网络连接、自定义镜像、配额组(Quota)也是租户粒度的对象,一起受项目级别租户资源访问控制开关的控制。
开启项目级别租户资源访问控制,使用外部数据源和外部Schema访问联邦外表需要执行如下操作:
进行租户对象与项目的挂载关系配置,配置方法为点击租户对象,例如外部数据源,选择挂载的项目,确定完成关系的配置。挂载完成的租户对象可以在项目的已挂载租户对象列表中查询到。
对于已挂载到项目上的租户对象,进行Policy配置。配置方法参考Policy权限控制。
操作步骤
登录MaxCompute控制台,在左上角选择地域。
在项目管理页面,单击目标项目操作列的管理。
在项目配置页面,选择角色权限页签。
选择目标项目级别角色,单击操作列的编辑角色。
在编辑角色对话框中,选择授权方式为Policy。
在Policy授权脚本框中修改角色Policy。
示例
以外部数据源为例,配置用户a可以使用外部数据源fs_hive的Policy如下:
{ "Statement":[ { "Action":[ "odps:Usage" ], "Effect":"Allow", "Resource":[ "acs:odps:*:servers/fs_hive" ] } ], "Version":"1" }当用户具有租户资源使用权限后,才可以在开启项目级别租户资源访问控制模式下,进行用户/角色粒度的租户资源使用权限控制。
项目开启租户对象检查开关(即开启项目级别租户资源访问控制)。
目前此功能仅提供预览,暂不支持开启检查。
登录MaxCompute控制台,在左上角选择地域。
在项目管理页面,单击目标项目操作列的管理。
在项目配置页面,选择参数配置页签。
在权限属性区域,单击编辑。
开启项目级别租户资源访问控制。
重要项目级别租户资源访问控制详情请参见项目级别租户资源访问控制。
开启后,项目将立即对正在使用和后续使用的租户对象(包括外部数据源、网络连接、自定义镜像、配额组(quota))进行使用权限校验。因此在没有完全完成租户对象与项目的挂载关系配置,以及Policy授权之前,请勿轻易打开检查开关。权限缺失可能会造成依赖权限的任务失败。