账号授权
本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
如果您想使用RAM用户访问其他云资源,可以参考本文档,根据使用场景(同账号或跨账号)为RAM用户授予对应权限。本文介绍同账号授权和跨账号授权的详细步骤。
前提条件
集群的产品系列为企业版、基础版或湖仓版。
Spark作业权限说明
提交Spark作业,需要具备以下三种权限。
AliyunADBFullAccess:管理AnalyticDB for MySQL集群的权限。具体操作请参见为RAM用户授权。
AnalyticDB for MySQL库表的读写权限:AnalyticDB for MySQL默认通过数据库账号进行库表权限管理。通过RAM用户提交Spark作业时,如果Spark作业需要读写数据,需要将数据库普通账号与RAM用户绑定。具体操作请参见绑定或解绑RAM用户与数据库账号。
AliyunADBSparkProcessingDataRole:用于授权AnalyticDB for MySQL Spark访问其他云资源,如访问OSS目录,OTS数据等。具体操作请参见同账号授权。
同账号授权
前提条件
已创建RAM用户。
操作步骤
通过RAM控制台授权(推荐)
步骤一:创建RAM角色并授权
创建RAM角色。
说明如果您已创建RAM角色,且RAM角色的信任主体类型为云服务、信任主体名称为云原生数据仓库AnalyticDB MySQL 版,可跳过该步骤,执行后续步骤。
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在角色页面,单击创建角色。
在创建角色页面,选择信任主体类型为云服务,然后选择信任主体名称为云原生数据仓库AnalyticDB MySQL 版,最后单击确定。
在创建角色对话框,输入角色名称,然后单击确定。
为RAM角色授权。
单击精确授权。
在精确授权面板,选择权限策略类型为系统策略或自定义策略,然后输入权限策略名称。
若您仅想访问指定的云资源时,需自定义权限策略。自定义策略的方法请参见创建自定义权限策略。
单击确认。
步骤二:提交Spark作业
通过RAM控制台创建RAM角色并授权后,在提交Spark作业时,需要在Spark作业配置中配置spark.adb.roleArn
参数,以确保Spark作业可正常执行。示例如下:
{
"comments": [
"-- Here is just an example of using LakeCache. Modify the content and run your spark program."
],
"args": ["oss://testBucketName/data/readme.txt"],
"name": "spark-oss-test",
"file": "oss://testBucketName/data/example.py",
"conf": {
"spark.adb.lakecache.enabled": "true";
"spark.adb.roleArn": "acs:ram::testAccountID:role/adbtest";
}
}
快速授权
在同账号授权后,AliyunADBSparkProcessingDataRole角色将默认被授予AliyunADBSparkProcessingDataRolePolicy权限。该权限具备对OSS、TableStore、DMS等云资源的访问权限,因此可能会导致过度授权的问题。建议您在授权后,解除AliyunADBSparkProcessingDataRolePolicy权限,仅为AliyunADBSparkProcessingDataRole角色授予业务所需云资源的权限。
单击快速授权链接。
单击左下角同意授权。
授权后将自动创建可供AnalyticDB for MySQL使用的服务角色AliyunADBSparkProcessingDataRole,AnalyticDB for MySQL使用此角色来访问其他云资源。
跨账号授权
AnalyticDB for MySQL Spark支持访问其他阿里云账号的所有云资源。本文以阿里云账号A(主账号,账号ID为testAccountID)跨账号访问阿里云账号B(主账号,账号ID为testAccountID1)中的数据为例,介绍跨账号授权的具体操作。
步骤一:为B账号创建RAM角色并授权
创建RAM角色,并允许A账号扮演该RAM角色。
说明如果您已创建RAM角色,并允许A账号扮演该RAM角色,可跳过该步骤,执行后续步骤。
使用阿里云账号B(主账号)或RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在角色页面,单击创建角色。
在创建角色页面,选择信任主体类型为云账号,然后设置具体的阿里云账号,最后单击确定。
设置角色信息。
输入角色名称。本示例角色名称设置为
admin-oss
。可选:输入备注。
信任的云账号选择其他云账号,然后输入A账号的阿里云账号UID(
testAccountID
)。
单击完成。
为RAM角色精确授权。
单击精确授权。
在精确授权面板,选择权限策略类型为系统策略或自定义策略,然后输入权限策略名称。
若您想访问指定VPC下的资源时,需自定义权限策略,并在Resource参数中指定资源所属的安全组和交换机。自定义策略的方法请参见创建自定义权限策略。
本文示例仅授权访问指定VPC下的RDS MySQL实例,自定义权限策略的名称为
eni_policy
,权限策略内容如下:说明您需要为RDS MySQL实例添加安全组,且安全组规则的入方向与出方向放行RDS MySQL端口的访问请求。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ecs:*", "Resource": "acs:ecs:*:*:securitygroup/<RDS所属安全组ID>" }, { "Effect": "Allow", "Action": "vpc:*", "Resource": "acs:vpc:*:*:vswitch/<RDS所属交换机ID>" } ] }
单击确认。
单击关闭。
修改信任策略,允许A账号下任意的RAM用户扮演该RAM角色。
在左侧导航栏,选择 。
在角色页面,单击目标RAM角色名称。
在信任策略页签,单击编辑信任策略。
在编辑器中修改信任策略内容,然后单击确定。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::testAccountID:root" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "testAccountID@ads.aliyuncs.com" ] } } ], "Version": "1" }
步骤二:为A账号创建RAM用户并授予扮演RAM角色的权限
创建RAM用户。
创建权限策略,允许RAM用户扮演任何角色。
在左侧导航栏,选择 。
在权限策略页面,单击创建权限策略。
在创建权限策略页面,单击脚本编辑页签。
输入权限策略内容,然后单击确定。
{ "Version": "1", "Statement": [ { "Action": "ram:PassRole", "Resource": "*", "Effect": "Allow" } ] }
在创建权限策略对话框,输入权限策略名称和备注,然后单击确定。
为RAM用户授权。
在左侧导航栏,选择 。
在用户页面,单击目标RAM用户操作列的添加权限。
在添加权限面板,为RAM用户添加步骤2所创建的权限。
单击确认新增授权。
单击关闭。