SLS【數據加工】授權

概述

SLS【數據加工】功能已經廣泛用於數據的內容規整、信息富化、分發和彙總、索引重建等業務場景。因為其免運維、易擴展的特性,使其成為目前 SLS 上數據處理的首選。數據加工原理如下圖:

etl.png

當用戶配置好數據加工任務以後,數據加工功能通過如下三個步驟完成對日誌數據的加工處理:

  1. 使用協同消費組對源 Logstore A 的日誌數據進行讀取消費。
  2. 根據用戶配置的加工規則,對讀取的每一條日誌進行加工處理。
  3. 將加工後的日誌數據寫入指定的目標 Logstore B 中。

以上步驟1和3中,涉及到讀/寫用戶數據,所以,為了使用數據加工功能做數據處理,用戶需要給數據加工功能做如下授權:

  • 授權數據加工對您選擇的源 Logstore A 的日誌數據進行讀取消費
  • 授權日誌服務將加工結果寫入您配置的(多個)目標 Logstore B

您可以通過如下三種方式給數據加工授權,詳細的配置流程請參考每種授權方式的文檔:

  1. 默認角色授權
  2. 自定義角色授權
  3. 密鑰授權

三種授權方式的特點對比:

授權方式 操作便捷 安全性等級 精確授權 寫入跨賬號目標
默認角色授權 非常便捷 非常安全 不支持 不支持
自定義角色授權 一般 非常安全 支持 支持
密鑰授權 一般 用戶需要保證 AK 不洩漏 支持 支持

默認角色授權

您可以授予日誌服務使用阿里雲系統角色 AliyunLogETLRole 來讀取源 Logstore 中的數據以及將數據加工結果寫入目標 Logstore。操作步驟如下:

  1. 在數據加工頁面,單擊 高級
  2. 單擊 預覽數據
  3. 添加預覽配置 頁面,單擊 默認角色 下的 授權系統角色AliyunLogETLRole

etl-ram-1.png

  1. 雲資源訪問授權 頁面,單擊 同意授權

該操作僅在首次配置時需要。
如果您使用的是RAM用戶,需要由阿里雲主賬號進行授權。

etl-ram-2.png

自定義角色授權

源 Logstore 訪問授權

  1. 使用主賬號登錄RAM控制檯。
  2. 創建具備源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"
    }
  ]
}
參數 說明
策略名稱 配置策略名稱,本文以log-etl-source-reader-1-policy為例。
配置模式 選擇腳本配置。
策略內容 column2
  1. 創建RAM角色,詳情請參見創建RAM角色。
  2. 授予RAM角色讀取源Logstore數據的權限策略。

    • 在RAM角色管理頁面,找到目標RAM角色,單擊添加權限。
    • 選擇自定義權限策略,並選中步驟2中創建的權限策略(本文以log-etl-source-reader-1-policy為例。),單擊確定。
    • 確認授權結果,單擊完成。
  3. 獲取RAM角色標識(ARN)。在該角色的基本信息中查看,例如acs:ram::13234:role/logrole。

目標 Logstore 訪問授權

  1. 使用主賬號登錄RAM控制檯。
  2. 創建具備讀寫目標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"
    }
  ]
}
  1. 創建RAM角色,詳情請參見創建RAM角色。
  2. 授予RAM角色讀寫目標Logstore的權限策略。

    • 在RAM角色管理頁面,找到目標RAM角色,單擊添加權限。
    • 選擇自定義權限策略,並選中步驟2中創建的權限策略(本文以log-etl-source-reader-1-policy為例。),單擊確定。
    • 確認授權結果,單擊完成。
  3. 獲取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的主賬號[email protected],其中請根據實際情況替換源Logstore所屬賬號A的主賬號ID,您可以在賬號管理 > 安全設置中查看主賬號ID。該策略表示賬號A有權限通過日誌服務獲取臨時Token來操作賬號B的資源。
{
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "<源Logstore所屬賬號A的主賬號ID>@log.aliyuncs.com"
                ]
            }
        }
    ],
    "Version": "1"
}
  1. 獲取RAM角色標識(ARN)。在該角色的基本信息中查看,例如acs:ram::13234:role/logrole。

密鑰授權

配置源Logstore訪問密鑰

  1. 使用主賬號登錄RAM控制檯。
  2. 創建RAM用戶,詳情請參見創建RAM用戶。在創建RAM用戶時,訪問方式請選擇為編程訪問,並保存AccessKey信息。

RAM用戶最多可以創建2個AccessKey。
RAM用戶創建AccessKey後,無法再通過控制檯查看AccessKeySecret,請您妥善保存AccessKeySecret,謹防洩露。

  1. 創建從源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"
    }
  ]
}

配置目標Logstore訪問密鑰

  1. 使用主賬號登錄RAM控制檯。
  2. 創建RAM用戶,詳情請參見創建RAM用戶。在創建RAM用戶時,訪問方式請選擇為編程訪問,並保存AccessKey信息。

RAM用戶最多可以創建2個AccessKey。
RAM用戶創建AccessKey後,無法再通過控制檯查看AccessKeySecret,請您妥善保存AccessKeySecret,謹防洩露。

  1. 創建將加工數據寫入目標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"
    }
  ]
}
  1. 為RAM用戶授予寫入Logstore的權限策略。

    • 在左側導航欄中,單擊人員管理 > 用戶。
    • 找到目標RAM用戶,單擊添加權限。
    • 選擇自定義權限策略,並選中步驟3中創建的權限策略(本文以log-etl-target-writer-1-policy為例。),單擊確定。

後記

以上就是使用 SLS【數據加工】功能時,需要為數據加工授權的詳細步驟。如果您在使用 SLS 過程中有任何問題,請加入我們釘釘服務群,也歡迎關注 SLS 的微信技術公眾號和B站視頻號。

QR.png

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top