数据加工涉及两类授权:
数据加工操作权限:在控制台/SDK 中创建、删除、修改、查看数据加工任务,并做数据预览。
加工任务访问数据权限:数据加工任务本身如何读取源 Logstore 数据,以及如何将加工结果写入目标 Logstore。
为RAM用户授予数据加工操作权限
数据加工操作包括创建、删除、修改、查看数据加工任务,并进行加工预览。授权前,请确保您已提前创建好RAM用户。支持如下两种授权方式:
使用系统权限策略
使用自定义权限策略
使用 阿里云主账号 或 RAM 管理员登录RAM控制台。
通过脚本编辑模式创建自定义权限策略(例如命名为
log-etl-operator-policy),在脚本编辑页签,将内容替换为以下模板,并按实际情况替换其中的 Project名称、Logstore名称:{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "log:CreateLogStore", "log:CreateIndex", "log:UpdateIndex", "log:Get*" ], "Resource":"acs:log:*:*:project/Project名称/logstore/internal-etl-log" }, { "Action":[ "log:List*" ], "Resource":"acs:log:*:*:project/*", "Effect":"Allow" }, { "Action":[ "log:Get*", "log:List*" ], "Resource":[ "acs:log:*:*:project/Project名称/logstore/Logstore名称" ], "Effect":"Allow" }, { "Effect":"Allow", "Action":[ "log:GetDashboard", "log:CreateDashboard", "log:UpdateDashboard" ], "Resource":"acs:log:*:*:project/Project名称/dashboard/internal-etl-insight*" }, { "Effect":"Allow", "Action":"log:CreateDashboard", "Resource":"acs:log:*:*:project/Project名称/dashboard/*" }, { "Effect":"Allow", "Action":[ "log:*" ], "Resource":"acs:log:*:*:project/Project名称/job/*" },{ "Effect":"Allow", "Action":[ "log:*" ], "Resource":"acs:log:*:*:project/Project名称/etl/*" }, { "Effect": "Allow", "Action": [ "ram:PassRole", "ram:GetRole", "ram:ListRoles" ], "Resource": "*" } ] }
为数据加工任务授权访问Logstore数据
同账号写入
适用于源Logstore和目标Logstore属于同一阿里云账号的场景。支持通过系统默认角色或自定义角色授权。
使用默认角色
创建加工任务时,可以直接选择默认角色 AliyunLogETLRole。阿里云系统角色 AliyunLogETLRole 已内置如下权限:
读取源 Logstore 数据的权限。
将加工结果写入同账号下目标 Logstore 的权限。
使用自定义角色
步骤一:创建RAM角色并配置信任策略
信任主体类型:云服务
信任主体名称:日志服务
创建完成后,请检查该角色的信任策略,
Service至少包含"log.aliyuncs.com"。
步骤二:授权RAM角色只读访问源Logstore数据
创建自定义权限策略(例如命名为:
log-etl-source-reader-policy),让自定义角色具备从特定源 Logstore 读取数据的能力(只读)。在脚本编辑页签,您可选择使用精确授权或模糊匹配授权脚本替换配置框中的原有内容。
精确授权
例如:源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" } ] }模糊匹配授权
场景示例:在实际场景中,请根据实际情况替换。
源Project名称为:log-project-dev-a、log-project-dev-b、log-project-dev-c等。
源Logstore名称为:app_a_log、app_b_log、app_c_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-dev-*/logstore/app_*_log", "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log/*" ], "Effect": "Allow" } ] }
步骤三:授权RAM写数据到目标Logstore
创建自定义权限策略(例如命名为:
log-etl-target-writer-policy),让自定义角色具备将加工结果写入到目标Logstore的权限。在脚本编辑页签,您可选择使用精确授权或模糊匹配授权脚本替换配置框中的原有内容。
精确授权
例如:目标Project名称为log-project-prod,目标Logstore名称为access_log_output。在实际场景中,请根据实际情况替换。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*" ], "Resource": "acs:log:*:*:project/log-project-prod/logstore/access_log_output", "Effect": "Allow" } ] }模糊匹配授权
场景示例:在实际场景中,请根据实际情况替换。
目标Project名称为:log-project-dev-a、log-project-dev-b、log-project-dev-c等。
目标Logstore名称为:app_a_log_output、app_b_log_output、app_c_log_output等,则使用模糊匹配授权。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*", "log:BatchPost*" ], "Resource": "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log_output", "Effect": "Allow" } ] }
跨账号写入
适用于源Logstore和目标Logstore不属于同一个阿里云账号的场景,只能通过自定义角色授权访问Logstore数据。
场景示例:将阿里云账号A下的源Logstore中的数据加工后保存至阿里云账号B下的目标Logstore中,您可以按照以下步骤登录阿里云账号B进行授权。
操作步骤
步骤一:创建RAM角色并配置信任策略
在源Logstore和目标Logstore所属的账号A、B下分别创建两个RAM角色A和RAM角色B:
信任主体类型:云服务
信任主体名称:日志服务
创建完成后,请检查该角色的信任策略,
Service至少包含"log.aliyuncs.com"。
步骤二:授权读取源Logstore数据
在源Logstore所属的阿里云账号A下,创建自定义权限策略(例如命名为:
log-etl-source-reader-policy),让自定义角色具备从特定源 Logstore 读取数据的能力(只读)。在脚本编辑页签,您可选择使用精确授权或模糊匹配授权脚本替换配置框中的原有内容。
精确授权
例如:源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" } ] }模糊匹配授权
例如:源Project名称为log-project-dev-a、log-project-dev-b、log-project-dev-c等,源Logstore名称为app_a_log、app_b_log、app_c_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-dev-*/logstore/app_*_log", "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log/*" ], "Effect": "Allow" } ] }将该策略绑定到步骤一创建的自定义 RAM 角色A上。
步骤三:授权写入目标Logstore
在目标Logstore所属的阿里云账号B中,创建自定义权限策略(例如命名为:
log-etl-target-writer-policy),让自定义角色具备将加工结果写入到目标Logstore的权限。在脚本编辑页签,您可选择使用精确授权或模糊匹配授权脚本替换配置框中的原有内容。
精确授权
例如:目标Project名称为log-project-prod,目标Logstore名称为access_log_output。在实际场景中,请根据实际情况替换。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*" ], "Resource": "acs:log:*:*:project/log-project-prod/logstore/access_log_output", "Effect": "Allow" } ] }模糊匹配授权
场景示例:在实际场景中,请根据实际情况替换。
目标Project名称为:log-project-dev-a、log-project-dev-b、log-project-dev-c等。
目标Logstore名称为:app_a_log_output、app_b_log_output、app_c_log_output等,则使用模糊匹配授权。
{ "Version": "1", "Statement": [ { "Action": [ "log:Post*", "log:BatchPost*" ], "Resource": "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log_output", "Effect": "Allow" } ] }将该策略绑定到步骤一创建的自定义 RAM 角色B上。
步骤四:授信
在目标Logstore所属的阿里云账号B中:
登录RAM控制台。
在左侧导航栏中,选择。
在RAM角色列表中,单击目标RAM角色。
在信任策略管理页签中,单击修改信任策略:
{ "Version": "1", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "源Logstore所属的阿里云账号A的ID@log.aliyuncs.com" ] } } ] }
说明:
将
"源Logstore所属的阿里云账号A的ID@log.aliyuncs.com"替换为真实的账号 A ID,例如1234567890123***@log.aliyuncs.com。该策略表示:账号 A 可以通过日志服务获取临时凭证来扮演账号 B 中的该角色,从而访问账号 B 中配置的资源(目标 Logstore)。
在角色详情中,记录该角色的 ARN(资源标识),后续在账号 A 中创建数据加工任务时需要配置此 ARN。