您可以授予日志服务使用自定义角色来读取源Logstore中的数据以及将数据加工结果写入目标Logstore。本文介绍配置自定义角色授权的操作步骤。

源Logstore访问授权

  1. 使用主账号登录RAM控制台
  2. 创建具备源Logstore读取权限的策略。
    1. 在左侧导航栏中,单击权限管理 > 权限策略管理
    2. 单击新建权限策略
    3. 新建自定义权限策略页面中,配置如下参数,并单击确定
      参数 说明
      策略名称 配置策略名称,本文以log-etl-source-reader-1-policy为例。
      配置模式 选择脚本配置
      策略内容 将配置框中的原有脚本替换为如下内容。
      • 精确授权。
        例如:源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自定义授权场景
  3. 创建RAM角色,详情请参见创建RAM角色
  4. 授予RAM角色读取源Logstore数据的权限策略。
    1. RAM角色管理页面,找到目标RAM角色,单击添加权限
    2. 选择自定义权限策略,并选中步骤2中创建的权限策略(本文以log-etl-source-reader-1-policy为例。),单击确定
    3. 确认授权结果,单击完成
  5. 获取RAM角色标识(ARN)。
    在该角色的基本信息中查看,例如acs:ram::13234:role/logrole。

目标Logstore访问授权

  1. 使用主账号登录RAM控制台
  2. 创建具备读写目标Logstore权限的策略。
    1. 在左侧导航栏中,单击权限管理 > 权限策略管理
    2. 单击新建权限策略
    3. 新建自定义权限策略页面中,配置如下参数,并单击确定
      参数 说明
      策略名称 配置策略名称,本文以log-etl-target-writer-1-policy为例。
      配置模式 选择脚本配置
      策略内容 将配置框中的原有脚本替换为如下内容。
      • 精确授权。
        例如:目标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*"
              ],
               "Resource": "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log_output",
              "Effect": "Allow"
            }
          ]
        }
        更多授权场景请参见RAM自定义授权场景
  3. 创建RAM角色,详情请参见创建RAM角色
  4. 授予RAM角色读写目标Logstore的权限策略。
    1. RAM角色管理页面,找到目标RAM角色,单击添加权限
    2. 选择自定义权限策略,并选中步骤2中创建的权限策略(本文以log-etl-source-reader-1-policy为例。),单击确定
    3. 确认授权结果,单击完成
  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。