数据加工任务权限配置

数据加工涉及两类授权:

  • 数据加工操作权限:在控制台/SDK 中创建、删除、修改、查看数据加工任务,并做数据预览。

  • 加工任务访问数据权限:数据加工任务本身如何读取源 Logstore 数据,以及如何将加工结果写入目标 Logstore。

RAM用户授予数据加工操作权限

数据加工操作包括创建、删除、修改、查看数据加工任务,并进行加工预览。授权前,请确保您已提前创建好RAM用户。支持如下两种授权方式:

使用系统权限策略

  1. 使用 阿里云主账号 或 RAM 管理员登录RAM控制台

  2. 参考RAM用户授权,给该 RAM 用户添加以下两个系统权限策略:

    • AliyunRAMFullAccess

    • AliyunLogFullAccess

  3. 保存生效后,该 RAM 用户即可:

    • 创建、删除、修改、查看数据加工任务。

    • 读取源 Logstore 数据做任务预览等。

使用自定义权限策略

  1. 使用 阿里云主账号 或 RAM 管理员登录RAM控制台

  2. 通过脚本编辑模式创建自定义权限策略(例如命名为 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": "*"
             }
        ]
    }
  3. RAM用户添加创建的自定义权限策略

为数据加工任务授权访问Logstore数据

同账号写入

适用于源Logstore和目标Logstore属于同一阿里云账号的场景。支持通过系统默认角色或自定义角色授权。

使用默认角色

创建加工任务时,可以直接选择默认角色 AliyunLogETLRole。阿里云系统角色 AliyunLogETLRole 已内置如下权限:

  • 读取源 Logstore 数据的权限。

  • 将加工结果写入同账号下目标 Logstore 的权限。

使用自定义角色

步骤一:创建RAM角色并配置信任策略
  • 信任主体类型云服务

  • 信任主体名称日志服务

  • 创建完成后,请检查该角色的信任策略,Service至少包含"log.aliyuncs.com"

步骤二:授权RAM角色只读访问源Logstore数据
  1. 创建自定义权限策略(例如命名为: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"
        }
      ]
    }
  2. 参考RAM角色授权将该策略绑定到步骤一创建的自定义 RAM 角色上。

步骤三:授权RAM写数据到目标Logstore
  1. 创建自定义权限策略(例如命名为: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"
        }
      ]
    }
  2. 参考RAM角色授权将该策略绑定到步骤一创建的自定义 RAM 角色上。

跨账号写入

适用于源Logstore和目标Logstore不属于同一个阿里云账号的场景,只能通过自定义角色授权访问Logstore数据。

场景示例:将阿里云账号A下的源Logstore中的数据加工后保存至阿里云账号B下的目标Logstore中,您可以按照以下步骤登录阿里云账号B进行授权。

操作步骤

步骤一:创建RAM角色并配置信任策略

在源Logstore和目标Logstore所属的账号A、B下分别创建两个RAM角色ARAM角色B:

  • 信任主体类型云服务

  • 信任主体名称日志服务

  • 创建完成后,请检查该角色的信任策略,Service至少包含"log.aliyuncs.com"

步骤二:授权读取源Logstore数据
  1. 在源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"
        }
      ]
    }
  2. 将该策略绑定到步骤一创建的自定义 RAM 角色A上。

步骤三:授权写入目标Logstore
  1. 在目标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"
        }
      ]
    }
  2. 将该策略绑定到步骤一创建的自定义 RAM 角色B上。

步骤四:授信

在目标Logstore所属的阿里云账号B中:

  1. 登录RAM控制台

  2. 在左侧导航栏中,选择身份管理 > 角色

  3. RAM角色列表中,单击目标RAM角色。

  4. 信任策略管理页签中,单击修改信任策略

    {
      "Version": "1",
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "源Logstore所属的阿里云账号AID@log.aliyuncs.com"
            ]
          }
        }
      ]
    }
    

说明:

  • 将 "源Logstore所属的阿里云账号AID@log.aliyuncs.com" 替换为真实的账号 A ID,例如 1234567890123***@log.aliyuncs.com

  • 该策略表示:账号 A 可以通过日志服务获取临时凭证来扮演账号 B 中的该角色,从而访问账号 B 中配置的资源(目标 Logstore)。

  • 在角色详情中,记录该角色的 ARN(资源标识),后续在账号 A 中创建数据加工任务时需要配置此 ARN。