场景三:使用自定义角色完成跨账号数据流转
使用RAM用户创建数据加工作业时,您可以通过自定义角色完成跨账号的日志数据流转。
前提条件
- 已创建并获取源Logstore和目标Logstore的名称及Project名称。更多信息,请参见管理Logstore和管理Project。
- 已创建RAM用户,并授予RAM用户数据加工操作权限。更多信息,请参见授予RAM用户数据加工操作权限。
背景信息
跨账号场景下,使用RAM用户创建数据加工作业,角色A需要具有源Logstore的读数据权限,角色B需要具有目标Logstore的写权限。因为数据加工作业运行于阿里云账号1之下,您需要修改阿里云账号2下角色B的信任策略对阿里云账号1进行授信。该场景下的授权原理如下图所示。
步骤一:使用阿里云账号1创建角色A
- 使用阿里云账号1登录RAM控制台。
- 创建角色A。 具体操作,请参见创建可信实体为阿里云服务的RAM角色。其中关键参数配置如下:
关键参数 说明 选择可信实体类型 选择阿里云服务。 角色类型 选择普通服务角色。 角色名称 输入角色名称,例如role-A。 选择授信服务 选择日志服务。
步骤二:使用阿里云账号1为角色A授予读数据权限
使用阿里云账号登录RAM控制台。
通过脚本编辑模式,创建自定义权限策略。该权限策略用于读取源Logstore中的数据。例如新建权限策略为ori_read。 具体操作,请参见创建自定义权限策略。其中关键参数配置如下:
关键参数 说明 名称 输入自定义权限策略名称。例如ori_read 策略内容 将配置框中的原有脚本替换为如下内容。
例如:源Project名称为log-project-prod,源Logstore名称为access_log。在实际场景中,请根据实际情况替换。{
"Version": "1",
"Statement": [
{
"Action": [
"log:ListShards",
"log:GetCursorOrData",
"log:GetConsumerGroupCheckPoint",
"log:UpdateConsumerGroup",
"log:ConsumerGroupHeartBeat",
"log:ConsumerGroupUpdateCheckPoint",
"log:ListConsumerGroup",
"log:CreateConsumerGroup",
],
"Resource": [
"acs:log:::project/log-project-prod/logstore/access_log",
"acs:log:::project/log-project-prod/logstore/access_log/*",
],
"Effect": "Allow"
}
]
}为角色A授予源Logstore读权限。 具体操作,请参见为RAM角色授权。其中关键参数配置如下:
关键参数 说明 授权范围 选择整个云账号。权限在当前阿里云账号内生效。 授权主体 选择role-A。即您在步骤一:使用阿里云账号创建角色A中创建的角色role-A。 自定义策略 选择ori_read。 获取RAM角色标识(ARN)。 在该角色A的基本信息中查看,例如
acs:ram::1379******44:role/role-a
。
步骤三:使用阿里云账号2创建角色B
使用阿里云账号2登录RAM控制台。
创建角色B。 具体操作,请参见创建可信实体为阿里云服务的RAM角色。其中关键参数配置如下:
关键参数 说明 选择可信实体类型 选择阿里云服务。 角色类型 选择普通服务角色。 角色名称 输入角色名称,例如role-B。 选择授信服务 选择日志服务。
步骤四:使用阿里云账号2为角色B授予写数据权限
- 使用阿里云账号2登录RAM控制台。
- 通过脚本编辑模式,创建自定义权限策略。该权限策略用于将数据加工结果写入到目标Logstore。例如新建权限策略为write。 具体操作,请参见创建自定义权限策略。其中关键参数配置如下:
关键参数 | 说明 |
---|---|
名称 | 输入自定义权限策略名称。例如write |
策略内容 | 将配置框中的原有脚本替换为如下内容。 例如:目标Project名称为log-project-prod,目标Logstore名称为access_log_output。在实际场景中,请根据实际情况替换。 { |
为角色B授予目标Logstore写权限。 具体操作,请参见为RAM角色授权。其中关键参数配置如下:
关键参数 说明 授权范围 选择整个云账号。权限在当前阿里云账号内生效。 授权主体 选择role-B。即您在步骤三:使用阿里云账号创建角色B中创建的角色role-B。 自定义策略 选择write。 获取RAM角色标识(ARN)。 在该角色B的基本信息中查看,例如
acs:ram::1379******44:role/role-b
。
步骤五:使用阿里云账号2通过角色B向阿里云账号1授信
- 使用阿里云账号2登录RAM控制台。
- 在左侧导航栏中,选择身份管理 > 角色。
- 在RAM角色列表中,单击目标RAM角色,例如role-B。
- 在信任策略管理页签中,单击修改信任策略。
- 修改信任策略。 在Service配置项中添加阿里云账号1的ID。其中,请根据实际情况替换阿里云账号1的ID。您可以在账号中心查看阿里云账号ID。该策略表示阿里云账号1有权限通过日志服务获取临时Token来操作阿里云账号2的资源。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "阿里云账号1的ID@log.aliyuncs.com" ] } } ], "Version": "1" }
步骤六:使用RAM用户创建数据加工作业
使用RAM用户登录日志服务控制台。
进入数据加工页面。 a. 在Project列表区域,单击目标Project。 b. 在日志存储 > 日志库页签中,单击目标Logstore。 c. 在查询和分析页面,单击数据加工。
在页面右上角,选择数据的时间范围。 请确保在原始日志页签中有日志数据。
在编辑框中,输入数据加工语句。 加工语句的语法请参见数据加工语法。
预览数据。 a. 单击快速。 日志服务支持快速预览和高级预览。更多信息,请参见预览调试概述。 b. 单击预览数据。 查看预览结果。
- 如果加工语句错误或者权限配置错误,导致数据加工失败,请根据页面提示处理。
- 如果确认数据加工结果无误,请执行步骤下一步。
创建数据加工作业。 a. 单击保存数据加工。 b. 在创建数据加工规则页面,配置相关参数,然后单击确定。 其中,其他参数配置请参考数据加工快速入门。该场景中关键参数配置如下:
关键参数 说明 授权方式 选择自定义角色 角色ARN 输入角色A的ARN。例如 acs:ram::1379******44:role/role-a
存储目标的授权方式 选择自定义角色 角色ARN 输入角色B的ARN。例如 acs:ram::1379******44:role/role-b
数据加工作业创建成功并运行后,使用RAM用户创建的跨账号数据流转作业完成。更多操作,请参见管理数据加工作业。