使用自定义角色创建定时SQL任务

日志服务支持使用默认角色AliyunLogETLRole或自定义角色创建定时SQL任务。本文介绍如何授权自定义RAM角色分析和写入Logstore。

授予自定义RAM角色分析源Logstore的权限

  1. 使用阿里云账号(主账号)或RAM管理员登录Logstore所在阿里云的RAM控制台

  2. 创建一个RAM角色,例如命名为:QueryLogstoreRole。具体操作,请参见创建可信实体为阿里云服务的RAM角色

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

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

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "log.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
  3. 创建一个自定义权限策略,例如命名为:QueryLogstorePolicy。该策略具备分析Logstore日志的权限。具体操作,请参见通过脚本编辑模式创建自定义权限策略

    其中在脚本编辑页签,您可选择使用精确授权或模糊匹配授权脚本替换配置框中的原有内容。

    精确授权

    脚本中的{project-name}{logstore-name}请根据实际情况替换。

    重要

    权限策略中的Logstore包括了LogstoreMetricStore。当您的操作对象为MetricStore时,如下策略同样适用。

    {
        "Version":"1",
        "Statement":[
            {
                "Action":[
                    "log:PostProjectQuery"
                ],
                "Resource":[
                    "acs:log:*:*:project/{project-name}/logstore/{logstore-name}"
                ],
                "Effect":"Allow"
            },
            {
                "Action":[
                    "log:GetProjectQuery",
                    "log:PutProjectQuery",
                    "log:DeleteProjectQuery"
                ],
                "Resource":[
                    "acs:log:*:*:project/{project-name}"
                ],
                "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:PostProjectQuery"
                ],
                "Resource":[
                    "acs:log:*:*:project/log-project-dev-*/logstore/website_*_log"
                ],
                "Effect":"Allow"
            },
            {
                "Action":[
                    "log:GetProjectQuery",
                    "log:PutProjectQuery",
                    "log:DeleteProjectQuery"
                ],
                "Resource":[
                    "acs:log:*:*:project/log-project-dev-*"
                ],
                "Effect":"Allow"
            }
        ]
    }
  4. RAM角色QueryLogstoreRole授予自定义权限策略QueryLogstorePolicy具体操作,请参见RAM角色授权

后续操作

  1. 获取RAM角色标识(ARN),具体操作,请参见查看RAM角色

  2. 在创建定时SQL任务时,选择执行SQL授权自定义角色。并输入RAM角色QueryLogstoreRole的标识(ARN)。更多信息,请参见创建定时SQL任务image

授予自定义RAM角色写目标Logstore的权限

  1. 使用阿里云账号(主账号)或RAM管理员登录目标Logstore所在阿里云的RAM控制台

  2. 创建一个RAM角色,例如命名为:WriteLogstoreRole。具体操作,请参见创建可信实体为阿里云服务的RAM角色

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

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

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "log.aliyuncs.com"
              ]
            }
          }
        ],
        "Version": "1"
      }
  3. 创建一个自定义权限策略,例如命名为:WriteLogstorePolicy。该策略具备写入数据到目标Logstore的权限。具体操作,请参见通过脚本编辑模式创建自定义权限策略

    其中在脚本编辑页签,您可选择使用精确授权或模糊匹配授权脚本替换配置框中的原有内容。

    精确授权

    脚本中的{project-name}{logstore-name}请根据实际情况替换。

    重要

    权限策略中的Logstore包括了LogstoreMetricStore。当您的操作对象为MetricStore时,如下策略同样适用。

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "log:PostLogStoreLogs",
            "log:PostProjectQuery",
            "log:BatchPostLogStoreLogs"
          ],
           "Resource": "acs:log:*:*:project/{project-name}/logstore/{logstore-name}",
          "Effect": "Allow"
        }
      ]
    }

    模糊匹配授权

    例如目标Project名称为log-project-dev-a、log-project-dev-b、log-project-dev-c等,目标Logstore名称为website_a_log_output、website_b_log_output、website_c_log_output等,则您可以使用模糊匹配授权。在实际场景中,请根据实际情况替换Project名称和Logstore名称。

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "log:Post*",
            "log:BatchPost*"
          ],
           "Resource": "acs:log:*:*:project/log-project-dev-*/logstore/website_*_log_output",
          "Effect": "Allow"
        }
      ]
    }
  4. RAM角色WriteLogstoreRole授予自定义权限策略WriteLogstorePolicy具体操作,请参见RAM角色授权

  5. 可选)如果Logstore目标Logstore不在同一个阿里云账号,您还需要修改RAM角色WriteLogstoreRole的信任策略。

    1. RAM角色列表中,单击RAM角色WriteLogstoreRole

    2. 信任策略页签中,单击编辑信任策略。并使用以下脚本替换配置框中的原有内容。

      重要

      请根据实际情况替换{源Logstore所属阿里云账号的ID}。您可以在账号中心查看阿里云账号ID。

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

后续操作

  1. 获取RAM角色标识(ARN),具体操作,请参见查看RAM角色

  2. 在创建定时SQL任务时,选择写目标授权自定义角色。并输入RAM角色WriteLogstoreRole的标识(ARN)。更多信息,请参见创建定时SQL任务image