前言
在使用阿裡雲SLS時,如果使用主賬号建立更新告警,監控自身賬号下的資源時,不會遇到權限問題;在很多場景下,為了使權限職責更加清楚,使用者在使用阿裡雲時往往不會直接使用主賬号來進行日常操作,而是會建立不同的子賬号,賦予不同的權限,比如子賬号A用來管理ECS執行個體,賬号B用來管理日志服務;甚至還可以更細粒度的進行控制,比如子賬号a用來采集日志,子賬号b用來建立監控告警。這些對資源的通路控制都可以使用阿裡雲的通路控制機制來實作。本文将介紹如何使用阿裡雲的通路控制來建立SLS新版告警規則。
阿裡雲通路控制簡單介紹
通路控制(RAM)是阿裡雲提供的管理使用者身份與資源通路權限的服務。在阿裡雲上企業往往有各種資源,比如ECS資源,RDS執行個體資源等,如果隻使用一個主賬号來管理這些資源,會有很多管理上的不變和賬号洩露的風險;RAM提供了一種機制,來允許企業對不同的資源進行分組和授權;對資源進行分組後,可以建立不同的RAM使用者,然後對每個RAM使用者設定不同的資源通路權限。
SLS服務的資源也支援使用阿裡雲RAM來進行資源分組和授權。
SLS服務中的資源包括項目,Logstore,Loghub,采集配置,機器組等,對于每種資源都可以進行精細的權限控制,下圖以Logstore為例,展示下一個使用者下面的Logstore資源,主賬号A下面可以在不同的區域有不同的Project,每個Project下有不同的Logstore。

對于這些資源SLS也定義了一些動作,比如對于Logstore資源,有log:GetLogStore,log:ListLogStores,log:CreateLogStore等動作;通過動作和資源,可以指定一個權限政策,即對這個資源可以做什麼操作。
權限政策隻是定義了一套對資源的控制政策,并沒有定義誰能對這些資源做操作;在阿裡雲RAM中,權限政策可以賦給一個實體,比如RAM賬号,RAM角色等,賦予之後,這個實體就擁有了這套權限政策;
本文也将以此為背景介紹下如果給RAM使用者配置SLS新版告警的權限,并對這些權限進行簡單的介紹。
SLS新版告警資源
下圖是SLS新版告警中自定義告警監控規則及内置告警監控規則的場景,下文也将以此為例展開。

從上圖可以看到,在使用告警監控時,首先需要将各類裝置、系統、服務的日志采集到SLS的日志存儲(包括Trace資料)或者時序存儲中,然後告警監控将會對這些日志或時序進行監控;在建立監控規則時自然就需要擁有這些日志庫或時序庫的通路權限,同時還要具有一些告警規則的相關權限,接下來将會詳細介紹告警規則需要的資源及權限。
告警規則主要包含的權限包括以下四部分:
- 告警中心Project、Logstore、儀表盤(用于告警整體的規則、事務、态勢等記錄,免費)
- 建立項目下告警曆史日志、告警儀表盤(用于記錄每個告警規則評估曆史日志及态勢,免費)
- 建立、更新、删除告警規則
- 讀取監控目标的資料
告警中心Project及Logstore
告警中心Project是主賬号下唯一的Project,包含一個内置的Logstore,用來存儲全局告警評估,觸發,通知,管理的日志。同時基于此Logstore,在中Project下,還預設建立有三個儀表盤,分别是
- 告警鍊路中心:告警規則從觸發到分組抑制靜默在到通知到全流程資料展示。
- 監控規則中心:告警規則最新評估狀态和各個合并集合中的告警的最新狀态展示,及觸發展示。
- 告警排障中心:主要用于使用者自助排查告警規則配置類的錯誤,比如通知中配置了不可達的webhook,行動政策中配置了不存在的使用者組等。
在告警中心可以看到三個儀表盤的位置

告警中心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的告警監控規則共享同一個告警曆史日志庫和同一個告警儀表盤,通過告警規則配置詳情可以看到該告警規則相關的儀表盤視圖。
如下,展示的是一個告警規則對應的告警儀表盤。

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

由于需要建立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命名,一個項目下的告警規則可以通過點選告警圖示檢視。
如下所示為一個項目下的告警規則清單。

同樣建立更新删除告警規則告警需要有規則相應的權限。
{
"Statement": [
{
"Action": [
"log:*"
],
"Effect": "Allow",
"Resource": "acs:log:*:*:project/項目名稱/job/*"
}
],
"Version": "1"
}
監控目标權限
在建立告警規則時需要對監控目标擁有讀取的權限,監控目标的授權方式包括三種:預設,内置角色,自定義角色;這裡對内置角色和自定義角色不做展開,會有專門的文章來介紹内置角色和定義角色。預設授權方式是指使用目前建立告警規則的使用者的權限來查詢監控目标。

可以看出,在預設的授權方式下:目前賬号需要有監控目标的讀取權限。下面以某個項目下讀取監控目标權限為例。
{
"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使用者及授權 。
- 自定義權限政策:權限精細,配置複雜。
以下介紹自定義權限政策的步驟
- 登入 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資源分組和授權【
進一步參考
- SLS(日志服務)雲原生觀測分析平台: https://www.aliyun.com/product/sls
- SLS新版告警文檔首頁: https://help.aliyun.com/document_detail/207609.html
- 歡迎掃群加入阿裡雲-日志服務(SLS)技術交流(集團同學請直接搜尋群号11702236加入), 獲得第一手資料與支援
- 後續系列直播與教育訓練視訊會同步到B站,敬請留意

最後,如果您還想了解更多智能運維前沿資訊,歡迎您報名參加【數智創新行·智能運維專場】。
6月25日|上海·西岸國際人工智能中心
數智創新行上海站·智能運維專場
阿裡雲将帶來雲原生智能運維解決方案,滿足海量事件有效感覺、高效響應,可觀測資料統一分析、故障定位,以及基于AI的異常檢測等需求,助力企業建構自己的運維平台,成為開發、運維人員高效可靠的助手。
掃描海報二維碼或點選下方連結報名, 期待您一起開啟智能運維新時代!
https://www.aliyun.com/page-source//developer/special/osssalon