SLS【数据加工】授权配置

概述

SLS【数据加工】功能已经广泛用于数据的内容规整、信息富化、分发和汇总、索引重建等业务场景。正是因为其免运维、易扩展的特性,使其成为目前 SLS 上数据处理的首选。数据加工原理如下图:

SLS【数据加工】授权配置

当用户配置好数据加工任务以后,数据加工功能通过如下三个步骤完成对日志数据的加工处理:

  1. 使用协同消费组对源 Logstore A 的日志数据进行读取消费。
  2. 根据用户配置的加工规则,对读取的每一条日志进行加工处理。
  3. 将加工后的日志数据写入指定的目标 Logstore B 中。

以上步骤1和3中,涉及到读/写用户数据,所以,为了使用数据加工功能做数据处理,用户需要给数据加工功能做如下授权:

  • 授权数据加工对您选择的源 Logstore A 的日志数据进行读取消费
  • 授权日志服务将加工结果写入您配置的(多个)目标 Logstore B

您可以通过如下三种方式给数据加工授权,详细的配置流程请参考每种授权方式的文档:

  1. 默认角色授权
  2. 自定义角色授权
  3. 密钥授权

三种授权方式的特点对比:

授权方式 操作便捷 安全性等级 精确授权 写入跨账号目标
默认角色授权 非常便捷 非常安全 不支持 不支持
自定义角色授权 一般 非常安全 支持 支持
密钥授权 一般 用户需要保证 AK 不泄漏 支持 支持

默认角色授权

您可以授予日志服务使用阿里云系统角色 AliyunLogETLRole 来读取源 Logstore 中的数据以及将数据加工结果写入目标 Logstore。操作步骤如下:

  1. 在数据加工页面,单击 高级
  2. 单击 预览数据
  3. 添加预览配置 页面,单击 默认角色 下的 授权系统角色AliyunLogETLRole

SLS【数据加工】授权配置

  1. 云资源访问授权 页面,单击 同意授权

该操作仅在首次配置时需要。
如果您使用的是RAM用户,需要由阿里云主账号进行授权。

SLS【数据加工】授权配置

自定义角色授权

源 Logstore 访问授权

  1. 使用主账号登录RAM控制台。
  2. 创建具备源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"
      }
      ]
      }
  3. 创建RAM角色,详情请参见创建RAM角色。
  4. 授予RAM角色读取源Logstore数据的权限策略。

    • 在RAM角色管理页面,找到目标RAM角色,单击添加权限。
    • 选择自定义权限策略,并选中步骤2中创建的权限策略(本文以log-etl-source-reader-1-policy为例。),单击确定。
    • 确认授权结果,单击完成。
  5. 获取RAM角色标识(ARN)。在该角色的基本信息中查看,例如 acs:ram::13234:role/logrole

目标 Logstore 访问授权

  1. 使用主账号登录RAM控制台。
  2. 创建具备读写目标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"
      }
      ]
      }
  3. 创建RAM角色,详情请参见创建RAM角色。
  4. 授予RAM角色读写目标Logstore的权限策略。

    • 在RAM角色管理页面,找到目标RAM角色,单击添加权限。
    • 选择自定义权限策略,并选中步骤2中创建的权限策略(本文以log-etl-source-reader-1-policy为例。),单击确定。
    • 确认授权结果,单击完成。
  5. 获取RAM角色标识(ARN)。在该角色的基本信息中查看,例如 acs:ram::13234:role/logrole

写入跨账号目标Logstore授权

如果源Logstore和目标Logstore不在同一个阿里云账号时,需完成RAM跨账号授权才能进行加工操作,例如将账号A下的源Logstore中的数据加工后保存至账号B下的目标Logstore中,您可以按照以下步骤进行授权。

  1. 账号B已完成目标Logstore访问授权中的配置。
  2. 使用账号B登录RAM 控制台。
  3. 在左侧导航栏中,单击RAM角色管理。
  4. 在RAM角色列表中,单击目标Logstore所属的RAM角色。
  5. 在信任策略管理页签中,单击修改信任策略。
  6. 修改信任策略。 在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"
    }
  7. 获取RAM角色标识(ARN)。在该角色的基本信息中查看,例如 acs:ram::13234:role/logrole

密钥授权

配置源Logstore访问密钥

  1. 使用主账号登录RAM控制台。
  2. 创建RAM用户,详情请参见创建RAM用户。在创建RAM用户时,访问方式请选择为编程访问,并保存AccessKey信息。

RAM用户最多可以创建2个AccessKey。
RAM用户创建AccessKey后,无法再通过控制台查看AccessKeySecret,请您妥善保存AccessKeySecret,谨防泄露。

  1. 创建从源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访问密钥

  1. 使用主账号登录RAM控制台。
  2. 创建RAM用户,详情请参见创建RAM用户。在创建RAM用户时,访问方式请选择为编程访问,并保存AccessKey信息。

RAM用户最多可以创建2个AccessKey。
RAM用户创建AccessKey后,无法再通过控制台查看AccessKeySecret,请您妥善保存AccessKeySecret,谨防泄露。

  1. 创建将加工数据写入目标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"
      }
      ]
      }
  2. 为RAM用户授予写入Logstore的权限策略。

    • 在左侧导航栏中,单击人员管理 > 用户。
    • 找到目标RAM用户,单击添加权限。
    • 选择自定义权限策略,并选中步骤3中创建的权限策略(本文以log-etl-target-writer-1-policy为例。),单击确定。

后记

以上就是使用 SLS【数据加工】功能时,需要为数据加工授权的详细步骤。如果您在使用 SLS 过程中有任何问题,请加入我们钉钉服务群,也欢迎关注 SLS 的微信技术公众号和B站视频号。

SLS【数据加工】授权配置

上一篇:PB级日志数据实时加工原理与实践


下一篇:日志服务-15分钟搞定NGINX访问日志分析