🍥

Grafanaのユーザ・ダッシュボード権限管理の仕組みを図にした

2023/11/10に公開

Grafanaの権限管理の仕組み

やや見にくくて申し訳ないですが、整理のため図にしてみました。

以下で補足していきます。

Grafanaの単位区分の考え方

まずはGrafanaの中で様々な要素を分ける単位区分である Organization, Folder, Teamについて整理します。

Organization

OrganizationはGrafanaの中で最も大きな単位区分です。
Grafanaサーバーに必ず1つのOrganizationがあり、初期でMain.orgが存在します。
ユーザーは必ずどこかのOrganizationに所属します。

Organization と Organization は、ライセンスとユーザ以外のあらゆるものが分離されています。
詳細はこちらのページで確認できます。

https://grafana.com/blog/2022/03/14/how-to-best-organize-your-teams-and-resources-in-grafana/

Folder

Folderはリソース(例えばダッシュボードとかアラート設定とか)を含む単位区分です。
つまり、 Folder を使えば Organization の中でさらにリソースを分けることができるので、 新たにOrganization を作って分ける、といった必要がなくなります。

詳しい分離は先ほどの図 ↑ をご覧ください。

Team

Teamはユーザーのグループで、 Organization の中で作成し、そこにユーザーを所属させることができます。

Grafanaの権限

続いて権限について整理します。権限は様々なレベルで設定・管理されるようです。

Folderレベル

Folderに対して、誰にどのような権限を付与するか、を管理できます。
例えば冒頭に載せた写真の場合だと

  • User1FolderA に対する Admin 権限を与える
  • TeamZFolderA に対する Editor 権限を与える
    • つまりUser2User3
  • User3FolderB に対する Viewer 権限を与える

といった権限管理を行っています。

ところでAdmin, Editor, Viewerの持つ権限ですが、例えばFolderのAdminを持っている場合は 「このFolderでは誰に対してどの権限を付与するか」 という権限管理やFolderの削除などが可能になります。

EditorとViewerに関してはご想像のとおりだと思います。Folder内のダッシュボードを操作できたりReadOnlyだったりです。

Organizationレベル

Organizationレベルの権限をユーザーに設定できます。権限はAdmin, Editor, Viewerの3通り(一応Noneもある。)です。

AdminEditorの違いは 権限管理ができるかどうか です。
Admin がついていれば Org内のユーザーの権限の管理や、先ほど述べた Folder レベルの権限の管理が可能になります。

なお、Organization と Folder 権限の優先順位に関しては Folderに書かれた権限が優先されます。

つまり、

  • Org Editor で Folder Viewer を付与すると、そのFolderに対しては Viewer 権限になる
  • Org Viewer で Folder Admin を付与すると、そのFolderに対しては Admin 権限になる

となります。

しかしややこしいことに、Org Admin だけは Folder で上書きできないようです。これはFolderの権限管理画面を見れば分かるのですが、Org Admin に対しては Folder Admin を付与する、という定義でロックされているためです。


↑ ロックされている図

Grafanaレベル

最後にGrafana Adminに関してです。Grafana Adminを持つとサーバーレベルのAdminが設定され、今までのすべての権限レベルに対してAdminを持つことになります。また、Grafana Adminにしかできない仕事としてOrgの作成・削除などのOrg管理があります。

※ダッシュボード単体に対する個別の権限設定

ダッシュボードに対して Read Onlyを設定できます。
例えば、Folderに対してはEditor権限を持たせたいけどこのダッシュボードだけは編集してほしくない、みたいなときに設定します。

Grafanaで権限を運用する

Folderを使えば1つのOrganizationだけで十分に運用できる可能性があると思います。
例えば、

  • 全ユーザーのOrganization権限はViewerにしておく
  • 本当の管理者をGrafana AdminまたはOrganization Adminにしておく
  • 必要なチームごとにFolderを切り、誰か1人をFolder Adminにしておく
    • するとFolder Adminがそのフォルダ内で権限管理を行ってくれる

上記を行えば、全員が等しくReadOnly権限を持ち、各チーム内の権限管理は各チームに任せることができてスケールしそうです。

終わりに

Grafanfaの権限をまとめてみました。
ドキュメントだけだとなかなか理解できないと思うので、この記事が役に立てば幸いです。

なお、事細かく検証をしたわけではないので誤った情報などもあるかもしれません。もしございましたら教えていただけると幸いです。

Discussion