13
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

以前の記事で作成したGrafana環境で、ブラウザ上のGUIからプラグインを追加しようとしたところ、以下のように権限がないと怒られてしまいました。

権限不足

以前の記事はこちら。

この記事に書いた設定で構築した通り、Grafanaの「管理者」にマッピングしているCognitoのグループに自分を追加しているので、管理者権限を付与したはずですが、なぜか権限がないと言われています。

気になって調べてみると、どうやらGrafanaには一口に「管理者」といっても、少なくとも6種類はあることが分かりました(最初から組み込まれている範囲ではさすがに200種類はありません…)。そして、これまでの設定で「管理者」として設定していたのは「Organizationの管理者」の権限であり、今回の操作に必要なのは「Grafanaサーバー管理者」の権限だということが分かりました。

これを機にGrafanaにおける管理者の設定方法や権限範囲を整理してみたので、記事にまとめます。

この記事では、Grafanaのバージョンv12.3.1を前提にしています。

管理者やリソースの関連では、以下の記事も大変参考になるのでぜひお読みください。

Grafanaの管理者は少なくとも6種類ある

Grafanaにおける管理者は、少なくとも以下の6種類が存在します。

  1. Grafanaサーバー管理者
  2. Organizationの管理者
  3. フォルダーの管理者
  4. ダッシュボードの管理者
  5. データソースの管理者
  6. チームの管理者

それぞれのリソースの関係を図に起こすと、以下の通りです。

リソースの関係図

一番広いのがGrafanaサーバー管理者です。Grafanaサーバーの中には、Organizationやフォルダー、ダッシュボード、データソースが存在し、それぞれに管理者や閲覧者などのアクセス権限を設定できます。また、権限付与にはユーザーをグループ化した「チーム」も指定でき、この「チーム」にも管理者を設定できます。図中で🔏アイコンを付与したリソースが、権限を設定できる対象です。

それぞれの管理者がどのリソースを対象に何ができるのか、公式ドキュメントを参考に整理してみたので、順番に見ていきましょう。

1. Grafanaサーバー管理者

Grafanaサーバー管理者は、Grafana全体を管理するユーザーです。サーバーの設定、Organizationやプラグインの管理なども含めて全ての権限を持ちます。

Grafanaサーバー管理者になるには、ユーザーごとにサーバー管理者権限を設定することで、権限を付与します。この変更が可能なのは、もちろんGrafanaサーバー管理者のみなので、Cognitoとの連携で「Organizationの管理者」権限しか付与できていない状況では、GUI上で設定を変更することはできませんでした。

実際の権限設定画面はこちら。Grafanaサーバー管理者としてログインしている場合の表示です。

Grafanaサーバー管理者の権限設定画面

今回は私がGrafanaを管理していることもあって、気安くGrafanaサーバー管理者の権限を自分自身に付与しています。しかし、Grafanaサーバー管理者の権限があれば環境全体を破壊することもできるので、付与するユーザーは必要最低限の信頼できるユーザーのみにしましょう。
公式ドキュメントでも以下のように注意書きがあります。

Server administrators are “super-admins” with full permissions to create, read, update, and delete all resources and users in all organizations, as well as update global settings such as licenses. Only grant this permission to trusted users.

出典:https://grafana.com/docs/grafana/latest/administration/user-management/server-user-management/assign-remove-server-admin-privileges/

2. Organizationの管理者

OrganizationはGrafana内の組織単位です。Organizationの管理者は、Grafana環境内にある各Organizationごとに設定できる、Organizationの管理者です。ユーザーやチームの管理、ダッシュボードやフォルダーの作成・削除などができます。

Organizationのロールには、管理者(Admin)の他にも編集者(Editor)と閲覧者(Viewer)が存在し、それぞれが実行できる主要なアクションは次の表に示す通りです。

アクション Admin Editor Viewer
ダッシュボードの閲覧
ダッシュボードの作成・編集・削除
フォルダーの作成・編集・削除
アノテーションの閲覧
アノテーションの作成・編集・削除
データソースへのクエリ実行
データソースの作成・編集・削除
ユーザーの追加・編集
チームの追加・編集
Organization設定の変更
チーム設定の変更
アプリケーションプラグインの設定

アノテーションはダッシュボード上にメモや注釈を追加できる機能です。

「アプリケーションプラグインの設定」の権限には、プラグインの追加と削除は含まれません。

実際の権限設定画面はこちら。

Organizationの権限管理画面

3. フォルダーの管理者

フォルダーの管理者は、特定のフォルダー内のダッシュボードを管理するユーザーです。フォルダー内のダッシュボードの作成・編集・削除などができます。

管理権限(Admin)の他にも、編集権限(Edit)と閲覧権限(View)が存在し、それぞれが実行できるアクションは次の表に示す通りです。

アクション Admin Edit View
フォルダーの閲覧
フォルダーの編集・削除
フォルダー内のダッシュボード作成
サブフォルダーの作成
フォルダー権限の変更

フォルダーで設定した権限は、その配下にあるダッシュボードにも継承されます。また、ユーザー単位だけでなく、後述するチームに対しても権限を付与できます。

実際の権限設定画面はこちら。

フォルダーの権限管理画面

4. ダッシュボードの管理者

ダッシュボードの管理者は、特定のダッシュボードを管理するユーザーです。ダッシュボードの編集や共有などができます。

管理権限(Admin)の他にも、編集権限(Edit)と閲覧権限(View)が存在し、それぞれが実行できるアクションは次の表に示す通りです。

アクション Admin Edit View
ダッシュボードの閲覧
ダッシュボードの作成・編集・削除
ダッシュボード権限の変更

フォルダー内のダッシュボードの場合は、フォルダーの権限が継承されますが、追加で権限を付与することもできます。また、ユーザー単位だけでなく、後述するチームに対しても権限を付与できます。

実際の権限設定画面はこちら。

ダッシュボードの権限管理画面

5. データソースの管理者

データソースの管理者は、特定のデータソースの管理を行うユーザーです。データソースの設定や接続の管理などができます。

管理権限(Admin)の他にも、編集権限(Edit)とクエリ権限(Query)が存在し、それぞれが実行できるアクションは次の表に示す通りです。

アクション Admin Edit Query
データソースへのクエリ実行
データソース設定の編集
データソースの削除
データソース権限の変更
クエリキャッシュの有効化 / 無効化

データソースの権限を個別管理するにはGrafana Enterpriseのライセンスが必要です。

実際の権限設定画面はこちら……といいたいところですが、Grafana Enterpriseのライセンスがないので、ライセンスがあれば設定できるよという通告画面です。

データソースの権限管理画面

6. チームの管理者

チームの管理者は、特定のチームを管理するユーザーです。チームメンバーの管理やチームの設定などができます。チームは他のリソースの権限管理にも使われるユーザーのグループですので、前述までの管理者とは毛色が違います。

管理権限(Admin)の他にも、メンバー権限(Member)が存在し、それぞれが実行できるアクションは次の表に示す通りです。

アクション Admin Member
チームメンバーとして参加
チームメンバー管理(追加・削除)
チーム権限の管理
チーム設定の変更

Organizationの権限は、チーム単位では付与できません。

実際の権限設定画面はこちら。

チームの権限管理画面

Cognitoでどう設定すればよいか

Grafanaの管理者は6種類あることが分かりました。そして、プラグインを追加するにはGrafanaサーバー管理者の権限が必要であることが分かりました。さて、Cognitoで認証している場合に、どのように設定すればGrafanaサーバー管理者の権限を付与できるでしょうか。

設定方法

これまでの設定は以下の通りです。
Cognitoのgrafana-adminグループに属しているユーザーにAdminロールを割り当てています。同様にgrafana-editorグループに属するユーザーにはEditorロールを、それ以外のユーザーにはViewerロールを割り当てています。
Adminという文字列で、すっかり全管理者権限を付与できていると思い込んでいました。

role_attribute_path = ("cognito:groups" | contains([*], 'grafana-admin') && 'Admin' || contains([*], 'grafana-editor') && 'Editor' || 'Viewer')

実際にユーザーにGrafanaサーバー管理者の権限を付与するには、以下の設定が必要です。
Grafanaサーバー管理者の権限を付与したいCognitoのグループ(今回の場合はgrafana-server-adminを別途作成しました)には、GrafanaAdminのロールをマッピングさせます。加えて、allow_assign_grafana_admintrueに設定します。

role_attribute_path = ("cognito:groups" | contains([*], 'grafana-server-admin') && 'GrafanaAdmin' || contains([*], 'grafana-admin') && 'Admin' || contains([*], 'grafana-editor') && 'Editor' || 'Viewer')
allow_assign_grafana_admin = true

実は公式ドキュメントのGeneric Authの箇所をよく読めば書いてありました。

設定後

この設定変更を反映させ、Cognitoのグループにユーザーを追加してログインすると、プラグインのインストールができるようになりました。

プラグインのインストール

Cognitoのグループの変更を反映させるには、再ログインが必要です。

設定前後の違い

Grafanaサーバー管理者になる前となった後では、サイドバーに表示される設定項目が大きく変わり(増え)ます。

Organizationの管理者の場合(変更前)はこちら。

変更前のサイドバー

Grafanaサーバー管理者の場合(変更後)はこちら。General内の設定項目とAuthenticationの設定項目が追加されました。

変更後のサイドバー

Grafanaサーバー管理者になると、Grafanaインスタンスの利用状況の統計や設定内容も確認できるようになります。

インスタンスの統計情報

設定内容

インスタンスレベルの設定変更は、引き続きiniファイルを修正する必要があります。GUI上で可能なのは確認のみです。

補足

今回は詳しく説明していませんが、org_attribute_pathorg_mappingの設定を使用することで、OAuth側の組織情報とGrafana上のOrganization及びその中での権限をマッピングすることもできます。

また、Grafana Enterpriseでは、組み込みのロール以外にも独自定義のロールを作成して、より細かくRBACによるアクセス制御ができるようです。

おわりに

Grafanaの管理者は、少なくとも6種類あることが分かりました。Cognitoで認証している場合は、ユーザーにGrafanaサーバー管理者の権限を付与するには、allow_assign_grafana_admintrueに設定し、対象のグループにGrafanaAdminのロールをマッピングする必要があることも分かりました。
これで、当初の目的であるブラウザ上のGUIからプラグインを追加できるようになりました。

Grafanaの権限管理は運用方法によっては複雑にもなりますが、本記事が権限管理方法の整理に役立てば幸いです。

また、Grafanaを活用する上でのTipsなどが見つかったら、記事にしていきたいと思います。

13
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?