雲計算

SLS智能告警-訪問控制與授權

前言

在使用阿里雲SLS時,如果使用主賬號創建更新告警,監控自身賬號下的資源時,不會遇到權限問題;在很多場景下,為了使權限職責更加清楚,用戶在使用阿里雲時往往不會直接使用主賬號來進行日常操作,而是會創建不同的子賬號,賦予不同的權限,比如子賬號A用來管理ECS實例,賬號B用來管理日誌服務;甚至還可以更細粒度的進行控制,比如子賬號a用來採集日誌,子賬號b用來創建監控告警。這些對資源的訪問控制都可以使用阿里雲的訪問控制機制來實現。本文將介紹如何使用阿里雲的訪問控制來創建SLS新版告警規則。

阿里雲訪問控制簡單介紹

訪問控制(RAM)是阿里雲提供的管理用戶身份與資源訪問權限的服務。在阿里雲上企業往往有各種資源,比如ECS資源,RDS實例資源等,如果只使用一個主賬號來管理這些資源,會有很多管理上的不變和賬號洩露的風險;RAM提供了一種機制,來允許企業對不同的資源進行分組和授權;對資源進行分組後,可以創建不同的RAM用戶,然後對每個RAM用戶設定不同的資源訪問權限。

SLS服務的資源也支持使用阿里雲RAM來進行資源分組和授權。

SLS服務中的資源包括項目,Logstore,Loghub,採集配置,機器組等,對於每種資源都可以進行精細的權限控制,下圖以Logstore為例,展示下一個用戶下面的Logstore資源,主賬號A下面可以在不同的區域有不同的Project,每個Project下有不同的Logstore。

image.png

對於這些資源SLS也定義了一些動作,比如對於Logstore資源,有log:GetLogStore,log:ListLogStores,log:CreateLogStore等動作;通過動作和資源,可以指定一個權限策略,即對這個資源可以做什麼操作。


權限策略只是定義了一套對資源的控制策略,並沒有定義誰能對這些資源做操作;在阿里雲RAM中,權限策略可以賦給一個實體,比如RAM賬號,RAM角色等,賦予之後,這個實體就擁有了這套權限策略;

本文也將以此為背景介紹下如果給RAM用戶配置SLS新版告警的權限,並對這些權限進行簡單的介紹。

SLS新版告警資源

下圖是SLS新版告警中自定義告警監控規則及內置告警監控規則的場景,下文也將以此為例展開。

image.png

從上圖可以看到,在使用告警監控時,首先需要將各類設備、系統、服務的日誌採集到SLS的日誌存儲(包括Trace數據)或者時序存儲中,然後告警監控將會對這些日誌或時序進行監控;在創建監控規則時自然就需要擁有這些日誌庫或時序庫的訪問權限,同時還要具有一些告警規則的相關權限,接下來將會詳細介紹告警規則需要的資源及權限。

告警規則主要包含的權限包括以下四部分:

  • 告警中心Project、Logstore、儀表盤(用於告警整體的規則、事務、態勢等記錄,免費
  • 創建項目下告警歷史日誌、告警儀表盤(用於記錄每個告警規則評估歷史日誌及態勢,免費
  • 創建、更新、刪除告警規則
  • 讀取監控目標的數據

告警中心Project及Logstore

告警中心Project是主賬號下唯一的Project,包含一個內置的Logstore,用來存儲全局告警評估,觸發,通知,管理的日誌。同時基於此Logstore,在中Project下,還默認創建有三個儀表盤,分別是

  • 告警鏈路中心:告警規則從觸發到分組抑制靜默在到通知到全流程數據展示。
  • 監控規則中心:告警規則最新評估狀態和各個合併集合中的告警的最新狀態展示,及觸發展示。
  • 告警排障中心:主要用於用戶自助排查告警規則配置類的錯誤,比如通知中配置了不可達的webhook,行動策略中配置了不存在的用戶組等。

在告警中心可以看到三個儀表盤的位置

image.png

告警中心Project的名稱格式為:sls-alert-${uid}-${region},主賬號級別唯一,用戶可以選擇將這個project存儲在哪個區域。

告警中心Logstore的名稱固定為:internal-alert-center-log

由於創建告警規則在首次會需要創建出告警中心Project、Logstore、相關儀表盤;

權限配置參考

{
  "Statement": [
    {
      "Action": [
        "log:CreateProject"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:project/sls-alert-*"
      ]
    },
    {
      "Action": [
        "log:CreateLogStore",
        "log:CreateIndex",
        "log:UpdateIndex"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:project/sls-alert-*/logstore/internal-alert-center-log"
      ]
    },
    {
      "Action": [
        "log:CreateDashboard",
        "log:CreateChart",
        "log:UpdateDashboard"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:project/sls-alert-*/dashboard/*"
      ]
    }
  ],
  "Version": "1"
}

項目下告警歷史日誌庫、告警儀表盤

在一個項目下創建一個告警規則時,SLS會默認在該Project創建一個記錄告警評估歷史的Logstore,internal-alert-history;同時還會創建一個告警儀表盤,用於展示評估和觸發的態勢。

一個項目下的所有Logstore的告警監控規則共享同一個告警歷史日誌庫和同一個告警儀表盤,通過告警規則配置詳情可以看到該告警規則相關的儀表盤視圖。

如下,展示的是一個告警規則對應的告警儀表盤。

image.png

以下展示是一個Project下的告警歷史日誌庫,internal-alert-history

image.png

由於需要創建internal-alert-history和相關儀表盤,所以需要有相關權限,以下以在某個Project創建告警規則為例:

權限配置參考

{
  "Statement": [
    {
      "Action": [
        "log:CreateLogStore",
        "log:CreateIndex",
        "log:UpdateIndex"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:project/項目名稱/logstore/internal-alert-history",
      ]
    },
    {
      "Action": [
        "log:CreateDashboard",
        "log:CreateChart",
        "log:UpdateDashboard"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:project/項目名稱/dashboard/*",
      ]
    }
  ],
  "Version": "1"
}

創建、更新、刪除告警規則

告警監控規則在SLS中也是一種資源,資源名以job命名,一個項目下的告警規則可以通過點擊告警圖標查看。

如下所示為一個項目下的告警規則列表。

image.png

同樣創建更新刪除告警規則告警需要有規則相應的權限。

權限配置參考

{
  "Statement": [
    {
      "Action": [
        "log:*"
      ],
      "Effect": "Allow",
      "Resource": "acs:log:*:*:project/項目名稱/job/*"
    }
  ],
  "Version": "1"
}

監控目標權限

在創建告警規則時需要對監控目標擁有讀取的權限,監控目標的授權方式包括三種:默認,內置角色,自定義角色;這裡對內置角色和自定義角色不做展開,會有專門的文章來介紹內置角色和定義角色。默認授權方式是指使用當前創建告警規則的用戶的權限來查詢監控目標。

image.png

可以看出,在默認的授權方式下:當前賬號需要有監控目標的讀取權限。下面以某個項目下讀取監控目標權限為例。

權限配置參考

{
  "Statement": [
    {
      "Action": [
        "log:GetLogStoreLogs",
        "log:GetIndex"
      ],
      "Effect": "Allow",
      "Resource": "acs:log:*:*:project/項目名稱*"
    }
  ],
  "Version": "1"
}

如果是在控制檯配置告警,在查詢分析頁面和預覽頁面需要項目的一些瀏覽相關的權限,這些權限可以參考下面

控制檯相關權限參考

{
  "Statement": [
    {
      "Action": [
        "log:ListProject"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:*"
      ]
    },
    {
      "Action": [
        "log:ListLogStores",
        "log:GetLogStoreHistogram",
        "log:GetLogStore",
        "log:ListSavedSearch",
        "log:ListDashboard",
        "log:GetLogging",
        "log:ListDomains",
        "log:ListTagResources",
        "log:GetAcceleration"
      ],
      "Effect": "Allow",
      "Resource": "acs:log:*:*:project/項目名稱*"
    }
  ],
  "Version": "1"
}

配置SLS新版告警規則管理權限

對於SLS新版告警規則需要的權限在上面進行了分類詳細的介紹和每個權限的一些配置。根據賬號類型的不同,權限配置策略不同。

  • 主賬號:主賬號用於該賬號所有云資源的權限,無需設置權限。
  • RAM賬號:RAM賬號需要配置上文介紹的這些權限策略來創建更新刪除告警規則。

以下以RAM賬號為例,介紹配置的權限策略:

  • 極簡授權:權限較大,創建簡單。為RAM用戶授予全部管理權限(AliyunLogFullAccess)。更多信息,請參見創建RAM用戶及授權
  • 自定義權限策略:權限精細,配置複雜。

以下介紹自定義權限策略的步驟

    • 在左側導航欄中,選擇權限管理 > 權限策略管理
    • 單擊創建權限策略
    • 新建自定義權限策略頁面中,選擇腳本配置。輸入以下腳本,並單擊確定。需要將腳本中的項目名稱更換為相應的Project名稱,可以根據實際需要更改相應資源的配置
{
  "Statement": [
    {
      "Action": [
        "log:CreateProject"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:project/sls-alert-*"
      ]
    },
    {
      "Action": [
        "log:CreateLogStore",
        "log:CreateIndex",
        "log:UpdateIndex"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:project/項目名稱/logstore/internal-alert-history",
        "acs:log:*:*:project/sls-alert-*/logstore/internal-alert-center-log"
      ]
    },
    {
      "Action": [
        "log:CreateDashboard",
        "log:CreateChart",
        "log:UpdateDashboard"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:project/項目名稱/dashboard/*",
        "acs:log:*:*:project/sls-alert-*/dashboard/*"
      ]
    },
    {
      "Action": [
        "log:ListProject"
      ],
      "Effect": "Allow",
      "Resource": [
        "acs:log:*:*:*"
      ]
    },
    {
      "Action": [
        "log:*"
      ],
      "Effect": "Allow",
      "Resource": "acs:log:*:*:project/項目名稱/job/*"
    },
    {
      "Action": [
        "log:GetLogStoreLogs",
        "log:GetIndex",
        "log:ListLogStores",
        "log:GetLogStoreHistogram",
        "log:GetLogStore",
        "log:ListSavedSearch",
        "log:ListDashboard",
        "log:GetLogging",
        "log:ListDomains",
        "log:ListTagResources",
        "log:GetAcceleration"
      ],
      "Effect": "Allow",
      "Resource": "acs:log:*:*:project/項目名稱*"
    }
  ],
  "Version": "1"
}

參考

  • 日誌告警介紹【鏈接
  • 授予RAM用戶告警操作權限【鏈接
  • RAM資源分組和授權【鏈接

進一步參考

image

Leave a Reply

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