MaxCompute结合了阿里云的访问控制服务(RAM)和令牌服务(STS)实现对数据的安全访问。本文介绍控制服务(RAM)和令牌服务(STS)的授权方式。
OSS的STS模式普通角色授权
MaxCompute外部表直接访问OSS的数据,需要事先将OSS的数据相关权限赋予MaxCompute的访问账号,可以通过以下方式授权:
一键授权(推荐):当MaxCompute和OSS的Owner是同一个账号时,登录阿里云账号后,单击此处完成一键授权。
说明默认创建的AliyunODPSDefaultRole权限较多,仅供参考,需要根据MaxCompute外表或外部数据源可访问的外部数据权限,在RAM控制台中配置合理的权限策略和信任策略。
自定义授权:无论MaxCompute和OSS的Owner是不是同一个账号,都可以使用该方式授权。具体操作如下。
当MaxCompute和OSS的Owner是同一个账号时,添加信任策略时需要将service配置成
odps.aliyuncs.com。当MaxCompute和OSS的Owner不是同一个账号时,添加信任策略时需要将service配置成
MaxCompute的Owner云账号I*@odps.aliyuncs.com,MaxCompute的Owner云账号ID可以在账号概览中获取。
创建RAM角色。
登录RAM控制台,通过RAM控制台中的RAM角色创建角色。例如角色oss-admin。更多创建角色操作信息,请参见创建可信实体为阿里云账号的RAM角色。

修改RAM角色策略内容。
登录RAM控制台。
在左侧导航栏选择。
在角色页面,单击目标角色名称,进入该角色详情页。
在信任策略页签,单击编辑信任策略,在编辑信任策略页面选择脚本编辑页签。
配置如下策略:
当MaxCompute和OSS的Owner为同一个账号时
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }当MaxCompute和OSS的Owner不是同一个账号时
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "MaxCompute的Owner云账号I*@odps.aliyuncs.com" ] } } ], "Version": "1" }修改完成后,单击确定。
新建权限策略。
在RAM控制台中的权限策略管理页面,新建权限策略,例如AliyunODPSRolePolicy。
策略内容如下,也可以自定义其他权限。更多授权操作信息,请参见创建自定义权限策略。
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" } ] }将新建的权限策略授权给新建的RAM角色。
OTS的STS模式普通角色授权
MaxCompute外部表直接访问OTS的数据,需要事先将OTS的数据相关权限赋予MaxCompute的访问账号,可以通过以下方式授权:
一键授权(推荐):当MaxCompute和OTS的Owner是同一个账号时,登录阿里云账号后,单击此处完成一键授权。
自定义授权:当MaxCompute和OTS的Owner不是同一个账号时,自定义角色并授权。
创建RAM角色。
使用OTS账号登录RAM控制台,通过RAM控制台中的RAM角色创建角色。例如角色oss-adminots。
更多创建角色操作信息,请参见创建可信实体为阿里云账号的RAM角色。
修改RAM角色策略内容。
当MaxCompute和OTS的Owner不是同一个账号时,设置如下所示,支持跨账号实现MaxCompute访问OTS。
登录RAM控制台。
在左侧导航栏选择。
在角色页面,单击目标角色名称,进入该角色详情页。
在信任策略页签,单击编辑信任策略,在编辑信任策略页面选择脚本编辑页签。
配置如下策略:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "MaxCompute的Owner云账号的UI*@odps.aliyuncs.com" ] } } ], "Version": "1" }MaxCompute的Owner云账号ID为访问OTS服务的账号。
新建权限策略。
在RAM控制台中的权限策略管理页面,新建权限策略,例如AliyunODPSRolePolicy。
策略内容如下,也可以自定义其他权限。更多授权操作信息,请参见创建自定义权限策略。
{ "Version": "1", "Statement": [ { "Action": [ "ots:ListTable", "ots:DescribeTable", "ots:GetRow", "ots:PutRow", "ots:UpdateRow", "ots:DeleteRow", "ots:GetRange", "ots:BatchGetRow", "ots:BatchWriteRow", "ots:ComputeSplitPointsBySize" ], "Resource": "*", "Effect": "Allow" } ] }将新建的权限策略AliyunODPSRolePolicy授权给新建的RAM角色。
Hologres的STS模式普通角色授权
MaxCompute外部表直接访问Hologres的数据,需要先将Hologres的数据相关权限赋予MaxCompute的访问账号,以下介绍Hologres的STS模式授权操作。
使用Hologres账号登录RAM控制台,通过RAM控制台中的RAM角色创建角色。
云账号:
阿里云账号下的RAM用户可以通过扮演RAM角色来访问云资源,详情请参见创建可信实体为阿里云账号的RAM角色。
身份提供商:
通过设置SSO实现从企业本地账号系统登录至阿里云控制台,帮您解决企业的统一用户登录认证要求。详情请参见创建可信实体为身份提供商的RAM角色。
修改信任策略配置
登录RAM控制台。
在左侧导航栏选择。
在角色页面,单击目标角色名称,进入该角色详情页。
在信任策略页签,单击编辑信任策略,在编辑信任策略页面选择脚本编辑页签。
修改信任策略配置内容与选择的可信实体类型相关。
当可信实体类型为阿里云账号时,配置策略如下:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<UID>:root" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<UID>@odps.aliyuncs.com" ] } } ], "Version": "1" }当可信实体类型为身份提供商时,配置策略如下:
{ "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "saml:recipient": "https://signin.aliyun.com/saml-role/sso" } }, "Effect": "Allow", "Principal": { "Federated": [ "acs:ram::<UID>:saml-provider/IDP" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<UID>@odps.aliyuncs.com" ] } } ], "Version": "1" }
添加RAM角色至Hologres实例并授权
RAM角色需要有Hologres实例的开发权限,才能在权限范围内使用Hologres。
由于RAM角色默认没有Hologres管理控制台的查看和操作实例的权限,因此需要阿里云账号完成RAM相关权限授予才能进行后续操作。
添加RAM角色至Hologres实例步骤如下:
通过Hologres管理控制台授权
登录Hologres管理控制台,在左上角选择地域。
在左侧导航栏选择实例列表。
在实例列表页面,单击目标实例名称。
在实例详情页面,在左侧导航栏选择账号管理。
在用户管理页面,单击新增用户。
在弹出的新增用户页面,配置相关信息,单击确认。
角色选择
AliyunODPSDefaultRole。成员角色选择普通用户。
在用户管理页面,在左侧导航栏选择DB 授权。
在DB 授权页面,单击新增数据库。
在弹出的新增数据库页面,配置相关信息,单击确认。
权限策略选择SPM。
在DB 授权页面,单击目标数据库对应的操作列的用户授权。
单击右上角新增授权。在弹出的新增授权对话框中,配置用户和用户组。
用户选择要配置的RAM用户。
用户组选择Developer。
通过SQL方式授权
授权SQL请参见Hologres权限模型。
Tab 标题
将新建的权限策略AliyunODPSRolePolicy授权给新建的RAM角色。
Hologres还支持双签名的认证方式,详情请参见创建Hologres外部表(双签名模式)。
DLF+OSS的STS模式普通角色授权
通过MaxCompute与DLF和OSS构建湖仓一体时,由于MaxCompute项目的账号未经授权无法访问DLF或OSS,需要执行授权操作。授权方式包含以下两种:
一键授权(推荐):当创建MaxCompute项目的账号和部署DLF、OSS的账号相同时。推荐直接单击授权DLF和OSS一键授权。
自定义授权:无论创建MaxCompute项目的账号和部署DLF、OSS的账号是否相同,都可以使用该方式。具体操作如下。
MaxCompute项目RAM账号和部署DLF的账号相同时,添加信任策略时需要将service配置成
odps.aliyuncs.com。MaxCompute项目RAM账号和部署DLF的账号不同时,添加信任策略时需要将service配置成
<MaxCompute项目的Owner云账号id>@odps.aliyuncs.com。您可以在账号概览中获取MaxCompute的Owner云账号id。
登录RAM访问控制台创建可信实体为阿里云账号的RAM角色。
通过RAM控制台修改RAM角色的信任策略。信任策略内容如下:
创建MaxCompute项目的账号和部署DLF的账号是同一个账号
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }创建MaxCompute项目的账号和部署DLF的账号不是同一个账号
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<MaxCompute项目的Owner云账号id>@odps.aliyuncs.com" ] } } ], "Version": "1" }通过RAM控制台,为新建的RAM角色自定义权限策略。操作详情,请参见创建自定义权限策略。自定义权限内容如下:
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "dlf:CreateFunction", "dlf:BatchGetPartitions", "dlf:ListDatabases", "dlf:CreateLock", "dlf:UpdateFunction", "dlf:BatchUpdateTables", "dlf:DeleteTableVersion", "dlf:UpdatePartitionColumnStatistics", "dlf:ListPartitions", "dlf:DeletePartitionColumnStatistics", "dlf:BatchUpdatePartitions", "dlf:GetPartition", "dlf:BatchDeleteTableVersions", "dlf:ListFunctions", "dlf:DeleteTable", "dlf:GetTableVersion", "dlf:AbortLock", "dlf:GetTable", "dlf:BatchDeleteTables", "dlf:RenameTable", "dlf:RefreshLock", "dlf:DeletePartition", "dlf:UnLock", "dlf:GetLock", "dlf:GetDatabase", "dlf:GetFunction", "dlf:BatchCreatePartitions", "dlf:ListPartitionNames", "dlf:RenamePartition", "dlf:CreateTable", "dlf:BatchCreateTables", "dlf:UpdateTableColumnStatistics", "dlf:ListTableNames", "dlf:UpdateDatabase", "dlf:GetTableColumnStatistics", "dlf:ListFunctionNames", "dlf:ListPartitionsByFilter", "dlf:GetPartitionColumnStatistics", "dlf:CreatePartition", "dlf:CreateDatabase", "dlf:DeleteTableColumnStatistics", "dlf:ListTableVersions", "dlf:BatchDeletePartitions", "dlf:ListCatalogs", "dlf:UpdateTable", "dlf:ListTables", "dlf:DeleteDatabase", "dlf:BatchGetTables", "dlf:DeleteFunction" ], "Resource": "*", "Effect": "Allow" } ] }将自定义的权限策略,授权给新建的RAM角色。操作详情,请参见为RAM角色授权。
Hologres的STS模式服务关联角色授权
MaxCompute通过外部数据源和外部项目访问Hologres的数据,需要事先将Hologres的数据相关权限赋予MaxCompute的访问账号。
使用任务执行者身份本质是为MaxCompute服务关联角色授予访问Hologres的权限,并将任务执行者身份传递至Hologres。双方同时将当前任务执行者限制在其拥有的两个产品各自的权限范围内,因此需预先为MaxCompute创建服务关联角色并完成授权。可以通过以下方式授权:
登录RAM控制台。
在左侧导航栏选择。
在角色页面,单击创建角色。
在创建角色页面的右上角,单击创建服务关联角色。
在创建服务关联角色页面,选择信任的云服务
aliyunserviceroleformaxcomputeidentitymgmt,单击创建服务关联角色。若提示角色已经存在,说明已经授权过,忽略即可。
Paimon_DLF的STS模式服务关联角色授权
MaxCompute通过外部数据源和外部项目访问Paimon_DLF的数据,需要事先将DLF的数据相关权限赋予MaxCompute的访问账号。
使用任务执行者身份本质是为MaxCompute服务关联角色授予访问DLF的权限,并将任务执行者身份传递至 DLF。双方同时将当前任务执行者限制在其拥有的两个产品各自的权限范围内,因此需预先为MaxCompute创建服务关联角色并完成授权。可以通过以下方式授权:
登录RAM控制台。
在左侧导航栏选择。
在角色页面,单击创建角色。
在创建角色页面的右上角,单击创建服务关联角色。
在创建服务关联角色页面,选择信任的云服务
AliyunServiceRoleForMaxComputeLakehouse,单击创建服务关联角色。若提示角色已经存在,说明已经授权过,忽略即可。