数据加工任务权限配置

更新时间:
复制 MD 格式

数据加工涉及两类授权:

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

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

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

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

  • 使用系统权限策略:授权范围较大,配置简单但粒度较粗。

  • 使用自定义权限策略:可以按照 Project/LogStore 维度精确控制操作范围,适合对权限有严格要求的环境。

使用系统权限策略

  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: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": "*"
             }
        ]
    }
  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 角色 A 和 RAM 角色 B:

  • 信任主体类型:云服务

  • 信任主体名称:日志服务

  • 创建完成后,检查两个角色的信任策略,Service至少包含"log.aliyuncs.com"。其中 RAM 角色 B 的信任策略还需在步骤四:授信中修改为跨账号授信。

步骤二:授权读取源 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所属的阿里云账号A的ID@log.aliyuncs.com"
            ]
          }
        }
      ]
    }
    说明
    • 将上述策略中Service内的账号 ID 占位符替换为账号 A 的真实 ID,例如1234567890123***@log.aliyuncs.com。

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

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