全部產品
Search
文件中心

Simple Log Service:配置自訂角色許可權(跨帳號情境)

更新時間:Jun 30, 2024

Log Service定時SQL任務運行時,將在源Logstore中執行SQL分析操作,並將分析結果儲存到目標儲存中。您可以授予Log Service使用自訂角色來完成以上操作。如果源Logstore和目標Logstore不屬於同一個阿里雲帳號,您可參考本文檔完成授權操作。定時SQL任務支援Logstore和MetricStore,本文以Logstore為例進行說明。

前提條件

已在阿里雲帳號A下建立RAM角色a,在帳號B下建立RAM角色b。具體操作,請參見建立可信實體為阿里雲服務的RAM角色

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

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

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

    image

步驟一:授予帳號A下的RAM角色a分析源Logstore的許可權

授予帳號A下的RAM角色a分析源Logstore的許可權後,定時SQL任務可以使用該角色在帳號A下的Logstore中執行SQL分析操作。

  1. 使用帳號A登入RAM控制台

  2. 建立具備分析源Logstore日誌許可權的策略。

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

    2. 單擊建立權限原則

    3. 建立權限原則頁面中,單擊指令碼配置

      將配置框中的原有指令碼替換為如下內容。

      • 精確授權。

        例如源Project名稱為log-project-prod,源Logstore名稱為website_log。在實際情境中,請根據實際情況替換Project名稱和Logstore名稱。

        重要

        權限原則中的Logstore包括了Logstore和MetricStore。當您的操作對象為MetricStore時,如下策略同樣適用。

        {
            "Version":"1",
            "Statement":[
                {
                    "Action":[
                        "log:PostProjectQuery"
                    ],
                    "Resource":[
                        "acs:log:*:*:project/log-project-prod/logstore/website_log",
                        "acs:log:*:*:project/log-project-prod/logstore/website_log/*"
                    ],
                    "Effect":"Allow"
                },
                {
                    "Action":[
                        "log:GetProjectQuery",
                        "log:PutProjectQuery",
                        "log:DeleteProjectQuery"
                    ],
                    "Resource":[
                        "acs:log:*:*:project/log-project-prod"
                    ],
                    "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",
                        "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. 單擊繼續編輯基本資料,配置如下參數,並單擊確定

      參數

      說明

      名稱

      配置策略名稱稱。例如log-scheduled-sql-policy

      備忘

      建立策略的簡單注釋。

  3. 為RAM角色a授權。

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

    2. 單擊RAM角色a對應的新增授權

    3. 選擇自訂策略,並選中步驟2中建立的權限原則(例如log-scheduled-sql-policy),單擊確定

    4. 確認授權結果,單擊完成

  4. 擷取RAM角色a的ARN。

    在該角色的基本資料中查看,例如acs:ram::11****27:role/logsource。請記錄該資訊,如果您在建立定時SQL任務時使用的是自訂角色,則需要輸入該資訊。

步驟二:授予帳號B下的RAM角色b寫目標Logstore的許可權

授予帳號B下的RAM角色b寫目標Logstore的許可權後,定時SQL任務可以使用該角色將帳號A下的SQL分析結果寫入到帳號B下的Logstore中。

  1. 使用帳號B登入RAM控制台

  2. 建立具備寫目標Logstore許可權的策略。

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

    2. 單擊建立權限原則

    3. 建立權限原則頁面中,單擊指令碼配置

      將配置框中的原有指令碼替換為如下內容。

      • 精確授權。

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

        重要

        權限原則中的Logstore包括了Logstore和MetricStore。當您的操作對象為MetricStore時,如下策略同樣適用。

        {
          "Version": "1",
          "Statement": [
            {
              "Action": [
                "log:Post*",
                "log:BatchPost*"
              ],
               "Resource": "acs:log:*:*:project/log-project-prod/logstore/website_log_output",
              "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. 單擊繼續編輯基本資料,配置如下參數,並單擊確定

      參數

      說明

      名稱

      配置策略名稱稱。例如log-sink-write-policy

      備忘

      建立策略的簡單注釋。

  3. 為RAM角色b授權。

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

    2. 單擊目標RAM角色b對應的新增授權

    3. 選擇自訂策略,並選中步驟2中建立的權限原則(例如log-sink-write-policy),單擊確定

    4. 確認授權結果,單擊完成

  4. 修改RAM角色b的信任策略。

    1. 在RAM角色列表中,單擊RAM角色b。

    2. 信任策略頁簽中,單擊編輯信任策略

    3. 修改信任策略。

      Service配置項中添加阿里雲帳號A的ID,並根據實際情況替換該值。您可以在帳號中心查看阿里雲帳號ID。

      該策略表示帳號A有許可權通過Log Service擷取臨時Token來操作帳號B中的資源。

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "log.aliyuncs.com",
                          "阿里雲帳號A的ID@log.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
    4. 單擊儲存信任策略

  5. 擷取RAM角色b的ARN。

    在該角色的基本資料中查看,例如acs:ram::13****44:role/logtarget。請記錄該資訊,如果您在建立定時SQL任務時使用的是自訂角色,則需要輸入該資訊。