全部產品
Search
文件中心

Simple Log Service:通過自訂角色訪問資料

更新時間:Aug 03, 2024

您可以在資料加工任務中配置自訂角色來讀取源Logstore中的資料以及將資料加工結果寫入目標Logstore。本文介紹如何為自訂角色授予Logstore資料存取權限。

前提條件

已建立RAM角色。具體操作,請參見建立可信實體為阿里雲服務的RAM角色

重要
  • 建立RAM角色時,必須選擇可信實體類型阿里雲服務,且必須選擇受信服務Log Service

  • 請檢查角色的信任策略如下,Service內容至少包含"log.aliyuncs.com"

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

授予RAM角色源Logstore讀許可權

使用阿里雲帳號為RAM角色授權後,該RAM角色將具備讀取源Logstore資料的許可權。您可以在建立資料加工任務時,使用該RAM角色。具體操作,請參見建立資料加工任務

  1. 使用阿里雲帳號(主帳號)或Resource Access Management員登入RAM控制台

  2. 建立權限原則,該權限原則用於讀取源Logstore中的資料。

    1. 在左側導覽列,選擇許可權管理 > 權限原則

    2. 權限原則頁面,單擊建立權限原則

    3. 建立權限原則頁面,選擇指令碼編輯,將配置框中的原有指令碼替換為如下內容,然後單擊繼續編輯基本資料

      • 精確授權。

        例如:源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自訂授權情境

    4. 配置策略名稱,本文以log-etl-source-reader-1-policy為例,然後單擊確定

  3. 授予RAM角色讀取源Logstore的許可權。

    1. 在左側導覽列,選擇身份管理 > 角色

    2. 角色頁面,單擊目標RAM角色操作列的新增授權

    3. 選擇自訂策略,然後選中步驟2中建立的權限原則(本文以log-etl-source-reader-1-policy為例。),單擊確定

      設定許可權

    4. 單擊關閉

  4. 擷取RAM角色標識(ARN)。

    在該RAM角色的基本資料中查看,例如acs:ram::13234:role/logsource。

授予RAM角色目標Logstore寫入權限(同帳號)

源Logstore和目標Logstore屬於同一個阿里雲帳號時,您使用阿里雲帳號為RAM角色授權後,該RAM角色將具備寫入加工結果到目標Logstore的許可權。您可以在建立資料加工任務時,使用該RAM角色。具體操作,請參見建立資料加工任務

  1. 使用阿里雲帳號(主帳號)或Resource Access Management員登入RAM控制台

  2. 建立權限原則。

    1. 在左側導覽列,選擇許可權管理 > 權限原則

    2. 權限原則頁面,單擊建立權限原則

    3. 建立權限原則頁面,選擇指令碼編輯,將配置框中的原有指令碼替換為如下內容,然後單擊繼續編輯基本資料

      • 精確授權。

        例如:目標Project名稱為log-project-prod,目標Logstore名稱為access_log_output。在實際情境中,請根據實際情況替換。

        {
          "Version": "1",
          "Statement": [
            {
              "Action": [
                "log:Post*",
                "log:BatchPost*"
              ],
               "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*",
                "log:BatchPost*"
              ],
               "Resource": "acs:log:*:*:project/log-project-dev-*/logstore/app_*_log_output",
              "Effect": "Allow"
            }
          ]
        }

        更多授權情境,請參見RAM自訂授權情境

    4. 配置策略名稱,本文以log-etl-target-writer-1-policy為例,然後單擊確定

  3. 授予RAM角色寫入資料到目標Logstore的許可權。

    1. 在左側導覽列,選擇身份管理 > 角色

    2. 角色頁面,單擊目標RAM角色操作列的新增授權

    3. 選擇步驟2中建立的權限原則(本文以log-etl-target-writer-1-policy為例。),單擊確認新增授權

      image

    4. 單擊關閉

  4. 擷取RAM角色標識(ARN)。

    在該RAM角色的基本資料中查看,例如acs:ram::13234:role/logtarget。

授予RAM角色目標Logstore寫入權限(跨帳號)

如果源Logstore和目標Logstore不屬於同一個阿里雲帳號時,請參見本步驟完成RAM授權。例如將帳號A下的源Logstore中的資料加工後儲存至帳號B下的目標Logstore中,您可以按照以下步驟登入帳號B進行授權。

重要

在執行如下步驟前,帳號B已完成授予RAM角色目標Logstore存取權限(同帳號)章節中的操作。具體操作,請參見授予RAM角色目標Logstore寫入權限(同帳號)

  1. 使用阿里雲帳號(主帳號)或Resource Access Management員登入RAM控制台

  2. 在左側導覽列,選擇身份管理 > 角色

  3. 在RAM角色列表中,單擊目標RAM角色。

  4. 信任策略管理頁簽中,單擊編輯信任策略

    Service配置項中添加源Logstore所屬的阿里雲帳號A的ID。其中,請根據實際情況替換源Logstore所屬的阿里雲帳號A的ID。您可以在帳號中心查看阿里雲帳號ID。該策略表示帳號A有許可權通過Log Service擷取臨時Token來操作帳號B的資源。

    {
        "Statement": [
            {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "源Logstore所屬的阿里雲帳號A的ID@log.aliyuncs.com"
                    ]
                }
            }
        ],
        "Version": "1"
    }
  5. 擷取RAM角色標識(ARN)。

    在該角色的基本資料中查看,例如acs:ram::13234:role/logtarget。

後續步驟

在資料加工任務中配置RAM角色標識。更多資訊,請參見建立資料加工任務