数据加工涉及两类授权:
数据加工操作权限:在控制台/SDK 中创建、删除、修改、查看数据加工任务,并做数据预览。
加工任务访问数据权限:数据加工任务本身如何读取源 LogStore 数据,以及如何将加工结果写入目标 LogStore。
为 RAM 用户授予数据加工操作权限
数据加工操作包括创建、删除、修改、查看数据加工任务,并进行加工预览。授权前,请确保您已提前创建好RAM用户。支持如下两种授权方式:
使用系统权限策略:授权范围较大,配置简单但粒度较粗。
使用自定义权限策略:可以按照 Project/LogStore 维度精确控制操作范围,适合对权限有严格要求的环境。
使用系统权限策略
使用阿里云主账号 或 RAM 管理员登录RAM控制台。
参考管理RAM用户的权限,给该 RAM 用户添加以下两个系统权限策略:
AliyunRAMFullAccessAliyunLogFullAccess
保存生效后,该 RAM 用户即可:
创建、删除、修改、查看数据加工任务。
读取源 LogStore 数据做任务预览等。
使用自定义权限策略
使用 阿里云主账号 或 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:CreateETL", "log:DeleteETL", "log:UpdateETL", "log:StartETL", "log:StopETL", "log:ListETLS", "log:GetETL" ], "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角色的权限将该策略绑定到步骤一创建的自定义 RAM 角色上。
步骤三:授权 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" } ] }参考管理RAM角色的权限将该策略绑定到步骤一创建的自定义 RAM 角色上。
跨账号写入
适用于源 LogStore 和目标 LogStore 不属于同一个阿里云账号的场景,只能通过自定义角色授权访问 LogStore 数据。
场景示例:将阿里云账号 A 下的源 LogStore 中的数据加工后保存至阿里云账号 B 下的目标 LogStore 中,可按照以下步骤登录阿里云账号 B 进行授权。
步骤一:创建 RAM 角色并配置信任策略
在源 LogStore 和目标 LogStore 所属的账号 A、B 下分别创建 RAM 角色 A 和 RAM 角色 B:
信任主体类型:云服务
信任主体名称:日志服务
创建完成后,检查两个角色的信任策略,
Service至少包含"log.aliyuncs.com"。其中 RAM 角色 B 的信任策略还需在步骤四:授信中修改为跨账号授信。
步骤二:授权读取源 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" ] } } ] }说明将上述策略中
Service内的账号 ID 占位符替换为账号 A 的真实 ID,例如1234567890123***@log.aliyuncs.com。该策略表示:账号 A 可以通过日志服务获取临时凭证来扮演账号 B 中的该角色,从而访问账号 B 中配置的资源(目标 LogStore)。
在角色详情中,记录该角色的 ARN(资源标识),后续在账号 A 中创建数据加工任务时需要配置此 ARN。