OSS投递作业(新版)运行时,将读取Logstore中数据并投递到OSS Bucket中。您可以授予OSS投递作业使用自定义角色来完成以上操作。如果Logstore和OSS Bucket不属于同一个阿里云账号,您可参考本文档完成授权操作。

前提条件

已在阿里云账号A下创建RAM角色a,在阿里云账号B下创建RAM角色b。具体操作,请参见步骤一:创建RAM角色

步骤一:授予账号A下的RAM角色a读取Logstore数据的权限

授予账号A下的RAM角色a读取Logstore数据的权限后,OSS投递作业可以使用该角色读取账号A下Logstore中的数据。

  1. 使用账号A登录RAM控制台
  2. 创建具备读取Logstore数据权限的策略。
    1. 在左侧导航栏,选择权限管理 > 权限策略
    2. 单击创建权限策略
    3. 创建权限策略页面的脚本编辑页签中,将配置框中的原有脚本替换为如下内容,然后单击下一步
      • 精确授权。
        在实际场景中,请根据实际情况替换Project名称和Logstore名称。
        {
            "Version":"1",
            "Statement":[
                {
                    "Action":[
                        "log:GetCursorOrData",
                        "log:ListShards"
                    ],
                    "Resource":[
                        "acs:log:*:*:project/Project名称/logstore/Logstore名称",
                        "acs:log:*:*:project/Project名称/logstore/Logstore名称/*"
                    ],
                    "Effect":"Allow"
                }
            ]
        }
      • 模糊匹配授权。
        例如Project名称为log-project-dev-a、log-project-dev-b、log-project-dev-c等,Logstore名称为website_a_log、website_b_log、website_c_log等,则您可以使用模糊匹配授权。在实际场景中,请根据实际情况替换Project名称和Logstore名称。
        {
            "Version":"1",
            "Statement":[
                {
                    "Action":[
                        "log:GetCursorOrData",
                        "log:ListShards"
                    ],
                    "Resource":[
                        "acs:log:*:*:project/log-project-dev-*/logstore/website_*_log*",
                        "acs:log:*:*:project/log-project-dev-*/logstore/website_*_log*/*"
        
                    ],
                    "Effect":"Allow"
                }
            ]
        }
    4. 设置名称,然后单击确定
      例如设置策略名称为log-oss-export-source-policy
  3. 为RAM角色a授权。
    1. 在左侧导航栏中,选择身份管理 > 角色
    2. 单击RAM角色a对应的添加权限
    3. 选择自定义策略,并选中步骤2中创建的权限策略(例如log-oss-export-source-policy),单击确定
    4. 确认授权结果,单击完成
  4. 获取RAM角色标识(ARN)。
    您在该角色的基本信息中查看RAM角色标识,例如acs:ram::13****44:role/logrole。请记录该信息,如果您在创建OSS投递作业时使用的是自定义角色,则需要在读Logstore RAM角色中输入该信息。ARN

步骤二:授予账号B下的RAM角色b写OSS Bucket的权限

授予账号B下的RAM角色b写OSS Bucket的权限后,OSS投递作业可以使用该角色将账号A下的Logstore数据投递到账号B下的OSS Bucket中。

  1. 使用账号B登录RAM控制台
  2. 创建具备写OSS Bucket权限的策略。
    1. 在左侧导航栏,选择权限管理 > 权限策略
    2. 单击创建权限策略
    3. 创建权限策略页面的脚本编辑页签中,将配置框中的原有脚本替换为如下内容,然后单击下一步
      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "oss:PutObject"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }

      如果您有更细粒度的OSS权限控制需求,请参见RAM Policy概述

    4. 设置名称,然后单击确定
      例如设置策略名称为log-oss-export-sink-policy
  3. 为RAM角色b授权。
    1. 在左侧导航栏中,选择身份管理 > 角色
    2. 单击目标RAM角色b对应的添加权限
    3. 选择自定义策略,并选中步骤2中创建的权限策略(例如log-oss-export-sink-policy),单击确定
    4. 确认授权结果,单击完成
  4. 修改RAM角色b的信任策略。
    1. 在RAM角色列表中,单击RAM角色b。
    2. 信任策略管理页签中,单击修改信任策略
    3. 修改信任策略。

      Service配置项中添加阿里云账号A的ID@log.aliyuncs.com,并根据实际情况替换该值。您可以在账号中心查看阿里云账号ID。

      该策略表示账号A有权限通过日志服务获取临时Token来操作账号B中的资源。

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "log.aliyuncs.com",
                          "阿里云账号A的ID@log.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
    4. 单击确定
  5. 获取RAM角色标识(ARN)。
    您可以在该角色的基本信息中查看RAM角色标识,例如acs:ram::11****55:role/ossrole。请记录该信息,如果您在创建OSS投递作业时使用的是自定义角色,则需要在写OSS RAM角色中输入该信息。ARN