通过自定义RAM角色访问数据(同账号场景)

OSS-HDFS投递任务运行时,将读取Logstore中的数据并投递到OSS Bucket中,您可以授权OSS-HDFS投递任务扮演自定义RAM角色完成上述操作。本文介绍如何对自定义RAM角色进行授权。

前提条件

已创建RAM角色。具体操作,请参见创建可信实体为阿里云服务的RAM角色

重要
  • 创建RAM角色时,必须选择可信实体类型阿里云服务

  • 请检查角色的信任策略如下,Service内容至少包含"log.aliyuncs.com"

    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "log.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }

    image

步骤一:授予RAM角色读取Logstore数据的权限

授予RAM角色读取Logstore数据的权限后,OSS-HDFS投递任务可以扮演该角色读取Logstore中的数据。

  1. 使用阿里云账号登录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-hdfs-export-source-policy

  3. 为RAM角色授权。

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

    2. 单击目标RAM角色对应的新增授权

    3. 选择自定义策略,并选中步骤2中创建的权限策略(例如log-oss-hdfs-export-source-policy),单击确认新增授权

  4. 获取RAM角色标识(ARN)。

    您可以在该角色的基本信息中查看RAM角色标识,例如acs:ram::13****44:role/log-oss-hdfs-export-source-policy。请记录该信息,如果您在创建OSS-HDFS投递任务时使用的是自定义RAM角色,则需要在读Logstore RAM角色中输入该信息。具体操作,请参见创建OSS-HDFS投递任务image.png

步骤二:授予RAM角色写OSS Bucket的权限

授予RAM角色写OSS Bucket的权限后,OSS-HDFS投递任务可以扮演该角色将Logstore中的数据写入到目标OSS Bucket中。

  1. 使用阿里云账号登录RAM控制台

  2. 创建具备写OSS Bucket权限的策略。

    1. 在左侧导航栏中,选择权限管理 > 权限策略

    2. 单击创建权限策略

    3. 创建权限策略页面的脚本编辑页签中,将配置框中的原有脚本替换为如下内容,然后单击继续编辑基本信息

      {
          "Statement": [
              {
                  "Action": [
                      "oss:PutObject"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                "Effect": "Allow",
                "Action": "oss:ListObjects",
                "Resource": [
                  "acs:oss:*:*:*"
                ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:GetBucketInfo",                
                      "oss:PostDataLakeStorageFileOperation",
                      "oss:PostDataLakeStorageAdminOperation"
                  ],
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "oss:*",
                  "Resource": [
                      "acs:oss:*:*:*/.dlsdata",
                      "acs:oss:*:*:*/.dlsdata*"
                  ]
              }
          ],
          "Version": "1"
      }

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

    4. 设置名称,然后单击确定

      例如设置策略名称为log-oss-hdfs-export-sink-policy

  3. 为RAM角色授权。

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

    2. 单击目标RAM角色对应的新增授权

    3. 选择自定义策略,并选中步骤2中创建的权限策略(例如log-oss-hdfs-export-sink-policy),然后单击确认新增授权

  4. 获取RAM角色标识(ARN)。

    您可以在该角色的基本信息中查看RAM角色标识,例如acs:ram::13****44:role/log-oss-hdfs-export-sink-policy。请记录该信息,如果您在创建OSS-HDFS投递任务时使用的是自定义RAM角色,则需要在写OSS-HDFS RAM角色中输入该信息。具体操作,请参见创建OSS-HDFS投递任务image.png