文章出处:https://medium.com/@maiccaejfeng/grafana-user-%E7%9A%84%E6%AC%8A%E9%99%90%E7%AE%A1%E7%90%86%E4%BB%A5%E5%8F%8A-dashboard-%E7%9A%84%E6%AC%8A%E9%99%90%E7%AE%A1%E7%90%86-d5c5f5772279
要如何做到不同 user 登入 Grafana 看到不同的 dashboard?
Grafana 是個支援多個 organization 分開管理的視覺化系統。在同一個 organization 中,Grafana 的權限管理可以分成 User 的權限管理以及 Dashboard 的權限管理。User 的權限管理有 Grafana Admin、organization role 的設定。Dashboard 的權限管理則有 user、team、organization role 的設定。
每個 organization 會有自己獨立的權限設定、自己的 dashboards、data sources、以及 configuration,不會跟其他 organization 混在一起。以下參考 Grafana 官方文件並結合實際操作,就權限的部分進行說明。
Permissions Overview
Overview
Overview for permissions
grafana.com
在一個 organization 中,Grafana 使用者 (以下稱 users) 的權限 (permissions) 是被以下因素所決定的:
- 是否有 Grafana Admin (i.e. Super Admin) 權限
- 在 Organization 的角色 (role) 是 Admin、Editor、還是 Viewer
- 所屬的 Team 的權限 (用於 folders/dashboards)
- 直接 assign 給該使用者的權限 (on folders/dashboards)
權限最大的使用者:Grafana Admin
在 Server Admin > Users 頁面,可以看到所有使用者的清單。點選目前的 Grafana Admin “admin” 帳號進入 Edit User 的頁面,會有如下圖的 admin flag,是 Grafana Admin 的 user 即為 Super Admin。有 Grafana Admin 權限的使用者可以進入到 Server Admin 的頁面管理所有的 users 跟 organizations,包含其他 organization 的 users。
以 Grafana Admin 的帳號 admin 登入,左邊的 nav bar 有 Create、Dashboards、Explore、Alerting、Configuration、Server Admin 功能可以使用。
新增 user
例如新增了一個 User A。
刪除 user
點選紅色的 x 按鈕可刪除 user。
編輯 user
編輯 user 的 name、email、username (用來登入的帳號)、改 password、設定是不是 Grafana Admin、隸屬於哪個 organization 以及在該 organization 的角色 (role)。一個 user 可以屬於很多個 organization,在每個 organization 也可以有不同的 role,都可以在這邊做新增、刪除、編輯的動作。
新增 organization
每個 organization 有自己獨立的 dashboards、data sources、以及 configuration,不會跟其他 organization 混在一起。使用者可以隸屬於多個 organizations。多個 organizations 經常被用在多個客戶的部署上。
刪除 organization
編輯 organization
編輯 organization 的 name 以及有哪些 user 屬於這個 organization。假設把 User A 加到 A Org. 中,並且擔任 Admin 的角色 (這個動作需要先去 User A 那邊編輯),那麼就可以看到 User A 是屬於 A Org. 的,並且可以修改 User A 的角色,甚至刪除 User A。總之可以編輯這個 organization 的 user 名單。
Organization Roles 角色:Admin、Editor、Viewer
Organization Roles
Grafana Organization Roles Guide
grafana.com
User 可以隸屬於一個或多個 organizations (在左下角可以切換 organization)。一個 User 在一個 organization 中可以做的事情是由該 user 的角色 (role) 所定義的。總共有 3 種角色:
- Admin
可以做隸屬於該 organization 的所有事情,例如:新增跟編輯 data sources、新增跟編輯 organization users 跟 teams、configure app plugins 以及設定 organization settings。
例如 User A 在 A Org. 中是 Admin 的角色,那麼 User A 登入的時候在 Home 頁面可以看到新增 data source、新增 dashboard、邀請其他 user 加入 A Org. 等功能。左邊的 nav bar 則有 Create、Dashboards、Explore、Alerting、Configuration 功能可以使用,但是 Server Admin 只有 Grafana Admin 才有。
- Editor
可以新增跟編輯 dashboards 跟 alert rules,但這個權限也可以在某些被指定的 folders 跟 dashboards 被關掉。Editor 角色不能新增跟編輯 data sources 也不能邀請新 users。
可以透過 Grafana server setting 中的 editors_can_admin (官方文件) 設定來調整 Editor 的角色權限。如果將 editors_can_admin 設定成 true,擁有 Editor 角色的 users 就可以管理他們創建的 dashboards、folders、teams。這對於讓 Editor 自己管理 teams 很有幫助。
例如新增一個是 Editor 角色的 user 叫做 User AA,那麼預設左邊 nav bar 只有 Create、Dashboards、Explore、Alerting 功能可以使用。
- Viewer
可以看 dashboard,但這個權限也可以在某些被指定的 folders 跟 dashboards 被關掉。不能新增跟編輯 dashboards 跟 data sources。
可以透過 Grafana server setting 中的 viewers_can_edit (官方文件) 設定來調整 Viewer 的角色權限。如果將 viewers_can_edit 設定成 true,擁有 Viewer 角色的 users 就可以對 dashboard 進行短暫的編輯,短暫的編輯表示 user 可以修改 panel 跟 query 但是不能儲存變更,也不能創建新的 dashboard。
這功能對於把 Grafana 安裝在 public 的環境、讓所有人都可以來看 dashboard 並且可以編輯 panels 跟 queries 但不能儲存變更或創建新的 dashboard 的時候很有用。
例如新增一個是 Viewer 角色的 user 叫做 User AAA,那麼預設左邊 nav bar 只有 Dashboards 功能可以使用。
到這邊做一個整理
- 每一個 user 都會隸屬於一個或多個 organizations。如果沒有指定,則預設是隸屬於 Main Org.。
- 每一個 user 在 organization 中,都有屬於自己的 role (角色):Admin、Editor、Viewer。不同角色有不同權限。預設是 Viewer。
- 每一個 user,都可以被設定是否為 Grafana Admin (預設是沒有)。Grafana Admin 最明顯的不同就是可以看到 Server Admin 頁面,在那裡可以管理所有的 users 跟 organizations。
- 每個 organization 有自己獨立的 dashboards、data sources、以及 configuration,不會跟其他 organization 混在一起。
從第 2 點跟第 3 點來說,一個 user 的 “角色型” 的權限便有 3 種 roles * 2 種 Grafana Admin = 6 種不同的權限變化。角色與權限可以大致整理如下表:
詳細的各 nav item 中的功能也有細分整理如下表:
Dashboard & Folder Permissions 權限
Dashboard & Folder Permissions
Grafana Dashboard & Folder Permissions Guide
grafana.com
在 dashboards 跟 dashboard folders 裡面有 Permissions 頁面可以讓 Admin 移除預設的 Editors 跟 Viewers 的角色權限,然後 assign 權限給指定的 users 跟 teams。也就是說,每一個 dashboard 跟 dashboard folder,都可以根據不同 role、user、team 設定權限。
Dashboard 設定 Permissions 的頁面:
Folder 設定 Permissions 的頁面:
每個被設定的 permission 有分 3 個 levels:
- Admin:可以編輯跟創建 dashboards 以及編輯 permissions。
- Edit:可以編輯跟創建 dashboards。但是不能編輯 folder/dashboard 的 permissions。
- View:只可以看現有的 dashboards/folders。
這裡容易跟 Admin、Editor、Viewer 混淆。Admin、Editor、Viewer 是 user 的 “角色 (role)”,是 user 在一個 organization 所被賦予的角色。而這裡的 Admin、Edit、View 是一個 dashboard 所設定的 “權限 (permission) 動作”。
限制存取 dashboard 跟 folder
在同一個 organization 中,如果要控制不同使用者看到不同的 folder 或 dashboard, 那就必須移除 role-based 的權限控制。Admin 角色的權限是不能從 permission 中移除的,Admin 一定可以看到所有的 folders 跟 dashboards。
此外,權限高的設定一定比權限低的設定來得優先。舉例來說,user1 的角色是 Editor,如果一個 dashboard 的權限設定是 Editor 角色的使用者可以 Edit、user1 可以 View,那個 user1 的實際權限是 Edit 因為權限高的設定比權限低的設定來得優先。也就是說,一個 user 無論他是屬於哪種 role、哪個 team,只要 user、role、team 其中一個設定有較高的 permission level (Admin > Edit > View),該 user 權限就適用於高的 permission。
總結
如果要做到不同 user 登入 Grafana 看到不同的 dashboard,以下幾個方法都可以做到:
- user 隸屬於不同的 organization:
不同的 organization 就像是擁有不同的 Grafana 系統一樣,會有自己獨立的 dashboards、data sources、以及 configuration,不會混淆在一起,也就可以看到不同的 dashboard。 - user 在同一個 organization,但隸屬於不同的 team:
即使在同一個 organization,user 也可以隸屬於不同的 team,然後再到 dashboard 那邊設定哪個 team 可以看到這個 dashboard。 - user 在同一個 organization,但屬於不同的 role:
可以在 dashboard 設定哪種 role (Editor 還是 Viewer) 的 user 可以看到這個 dashboard。但是 role 是 Admin 的 user 是一定可以看到該 organization 的所有 dashboards 的。 - 直接指定可以看到這個 dashboard 的 user 是誰。
此外,只有具備 Grafana Admin 身份的 user (不管是什麼 role) 才可以新建 user 帳號。若不具備 Grafana Admin 身份,即使 role 是 Admin 的 user,也只能邀請現有 Grafana user 加入 organization。也就是說,Grafana Admin 可以管理所有的 users,普通的 Admin 只能管理自己 organization 的 users。
Grafana 的權限管理有些複雜,但仔細了解之後卻又可以理解其權限機制,給使用者很大的權限設定彈性,也是十分方便好用呢!!