概述
SLS【数据加工】功能已经广泛用于数据的内容规整、信息富化、分发和汇总、索引重建等业务场景。正是因为其免运维、易扩展的特性,使其成为目前 SLS 上数据处理的首选。数据加工原理如下图:
当用户配置好数据加工任务以后,数据加工功能通过如下三个步骤完成对日志数据的加工处理:
- 使用协同消费组对源 Logstore A 的日志数据进行读取消费。
- 根据用户配置的加工规则,对读取的每一条日志进行加工处理。
- 将加工后的日志数据写入指定的目标 Logstore B 中。
以上步骤1和3中,涉及到读/写用户数据,所以,为了使用数据加工功能做数据处理,用户需要给数据加工功能做如下授权:
- 授权数据加工对您选择的源 Logstore A 的日志数据进行读取消费
- 授权日志服务将加工结果写入您配置的(多个)目标 Logstore B
您可以通过如下三种方式给数据加工授权,详细的配置流程请参考每种授权方式的文档:
- 默认角色授权
- 自定义角色授权
- 密钥授权
三种授权方式的特点对比:
授权方式 | 操作便捷 | 安全性等级 | 精确授权 | 写入跨账号目标 |
---|---|---|---|---|
默认角色授权 | 非常便捷 | 非常安全 | 不支持 | 不支持 |
自定义角色授权 | 一般 | 非常安全 | 支持 | 支持 |
密钥授权 | 一般 | 用户需要保证 AK 不泄漏 | 支持 | 支持 |
默认角色授权
您可以授予日志服务使用阿里云系统角色 AliyunLogETLRole 来读取源 Logstore 中的数据以及将数据加工结果写入目标 Logstore。操作步骤如下:
- 在数据加工页面,单击 高级。
- 单击 预览数据。
- 在 添加预览配置 页面,单击 默认角色 下的 授权系统角色AliyunLogETLRole。
- 在 云资源访问授权 页面,单击 同意授权。
该操作仅在首次配置时需要。
如果您使用的是RAM用户,需要由阿里云主账号进行授权。
自定义角色授权
源 Logstore 访问授权
- 使用主账号登录RAM控制台。
-
创建具备源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" } ] }
- 创建RAM角色,详情请参见创建RAM角色。
-
授予RAM角色读取源Logstore数据的权限策略。
- 在RAM角色管理页面,找到目标RAM角色,单击添加权限。
- 选择自定义权限策略,并选中步骤2中创建的权限策略(本文以log-etl-source-reader-1-policy为例。),单击确定。
- 确认授权结果,单击完成。
- 获取RAM角色标识(ARN)。在该角色的基本信息中查看,例如
acs:ram::13234:role/logrole
。
目标 Logstore 访问授权
- 使用主账号登录RAM控制台。
-
创建具备读写目标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" } ] }
- 创建RAM角色,详情请参见创建RAM角色。
-
授予RAM角色读写目标Logstore的权限策略。
- 在RAM角色管理页面,找到目标RAM角色,单击添加权限。
- 选择自定义权限策略,并选中步骤2中创建的权限策略(本文以log-etl-source-reader-1-policy为例。),单击确定。
- 确认授权结果,单击完成。
- 获取RAM角色标识(ARN)。在该角色的基本信息中查看,例如
acs:ram::13234:role/logrole
。
写入跨账号目标Logstore授权
如果源Logstore和目标Logstore不在同一个阿里云账号时,需完成RAM跨账号授权才能进行加工操作,例如将账号A下的源Logstore中的数据加工后保存至账号B下的目标Logstore中,您可以按照以下步骤进行授权。
- 账号B已完成目标Logstore访问授权中的配置。
- 使用账号B登录RAM 控制台。
- 在左侧导航栏中,单击RAM角色管理。
- 在RAM角色列表中,单击目标Logstore所属的RAM角色。
- 在信任策略管理页签中,单击修改信任策略。
-
修改信任策略。 在Service配置项中添加源Logstore所属账号A的主账号ID@log.aliyuncs.com,其中请根据实际情况替换源Logstore所属账号A的主账号ID,您可以在账号管理 > 安全设置中查看主账号ID。该策略表示账号A有权限通过日志服务获取临时Token来操作账号B的资源。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<源Logstore所属账号A的主账号ID>@log.aliyuncs.com" ] } } ], "Version": "1" }
- 获取RAM角色标识(ARN)。在该角色的基本信息中查看,例如
acs:ram::13234:role/logrole
。
密钥授权
配置源Logstore访问密钥
- 使用主账号登录RAM控制台。
- 创建RAM用户,详情请参见创建RAM用户。在创建RAM用户时,访问方式请选择为编程访问,并保存AccessKey信息。
RAM用户最多可以创建2个AccessKey。
RAM用户创建AccessKey后,无法再通过控制台查看AccessKeySecret,请您妥善保存AccessKeySecret,谨防泄露。
-
创建从源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" } ] }
配置目标Logstore访问密钥
- 使用主账号登录RAM控制台。
- 创建RAM用户,详情请参见创建RAM用户。在创建RAM用户时,访问方式请选择为编程访问,并保存AccessKey信息。
RAM用户最多可以创建2个AccessKey。
RAM用户创建AccessKey后,无法再通过控制台查看AccessKeySecret,请您妥善保存AccessKeySecret,谨防泄露。
-
创建将加工数据写入目标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" } ] }
-
为RAM用户授予写入Logstore的权限策略。
- 在左侧导航栏中,单击人员管理 > 用户。
- 找到目标RAM用户,单击添加权限。
- 选择自定义权限策略,并选中步骤3中创建的权限策略(本文以log-etl-target-writer-1-policy为例。),单击确定。
后记
以上就是使用 SLS【数据加工】功能时,需要为数据加工授权的详细步骤。如果您在使用 SLS 过程中有任何问题,请加入我们钉钉服务群,也欢迎关注 SLS 的微信技术公众号和B站视频号。