最初に
こんにちは! 最近は何か夏らしいことがしたいと思っている、PS SLの佐々木千奈です。
このブログでは、Grafanaの権限管理について詳しく説明していきます。Grafanaは、データ可視化ツールとして優れた機能を持ち、その権限管理機能も非常に充実しています。しかし、その機能は高度であるため、初めてGrafanaを使用する人には理解が難しい場合があります。このブログでは、Grafanaの権限管理機能を簡単に理解するためのガイドを提供します。
内容が長くなってしまったので、操作方法の紹介など、適宜必要ない部分は読み飛ばしてお読みください。
Grafanaにおける基本的な権限管理方法の紹介
権限管理とは、ユーザーがアクセスできるリソースを制限することで、データのセキュリティを確保するための重要な機能です。Grafanaでは、権限管理機能を使用することで、ユーザーがアクセスできるダッシュボード、パネル、アラート、およびその他のリソースを制御することができます。この項目では、Grafanaの権限管理機能の主要機能である次の3つの項目を詳しく説明していきます。GrafanaのRoleとPermissionについて、こちらのドキュメントを参考にしています。
- サーバー管理者
- OrganizationごとのRole
- ダッシュボードごとの権限
サーバー管理者
まず、Grafanaにはサーバー管理者という概念があります。Grafanaサーバーをはじめに作成し、ログインしたユーザーはデフォルトでサーバー管理者となります。また、サーバー管理者は、以下の権限を持ちます。
- ユーザーと権限の管理
- Organizations の作成、編集、削除
- 構成ファイルで定義されたサーバー全体の設定を表示する
- 総ユーザー数やアクティブセッション数など、Grafanaサーバーの統計情報を表示する
- サーバーを Grafana Enterprise にアップグレードする
サーバー管理者は他のユーザーをサーバー管理者に割り当てることができます。サーバー管理者の割当と削除のドキュメントはこちらです。
サーバー管理者は全てのOrganizationsの全てのリソースとユーザーを作成、読み取り、更新、削除するだけでなく、ライセンスなどのグローバル設定を更新するための完全な権限を持つ「スーパー管理者」の権限であるため、信頼できるユーザーに付与する必要があります。
Organizationsとは
ここまでに出てきたように、Grafanaには「Organizations」という機能があります。
この機能は、ダッシュボード、アノテーション、データソース、ユーザーなどのリソースを分離するのに役立ちます。その目的は、単一のインスタンス内で、Grafanaの複数のインスタンスのように見える完全に分離された状態を提供することです。
ユーザーは、必ず1つ以上のOrganizaionsに割り当てられます。デフォルトでは、インスタンスを作成する際にMain Org.というOrganizationが自動的に作成され、ユーザーを作成するとそのOrganizationに割り当てられるため、ユーザーはOrganizationsについてあまり意識しないで利用していることもあるかもしれません。
Organizationsについてさらに知りたい方は、こちらのページをご覧ください。
※Grafana Cloudでは、サーバー管理者とOrganizationの機能は存在せず、ユーザーの管理はgrafana.comで行います
OrganizationごとのRole
Grafanaには、権限管理のためにOrganizationごとに設定することができるRoleが存在します。
Roleの種類は以下の3つです。
- Admin
- ダッシュボード、ユーザー、チーム、データソースなどの全ての組織のリソースを表示及び編集可能。
- Editor
- ダッシュボード、フォルダー、プレイリストを表示及び編集可能。
- Viewer
- ダッシュボードとプレイリストを表示可能。
Roleごとの権限の詳細についてはこちらのページを参照してください。
ダッシュボードごとの権限
GrafanaではOrganizationsとRoleを用いてアクセス権限管理を行う方法だけではなく、ダッシュボードやダッシュボードフォルダーごとに、ユーザーやTeamを割り当てて権限管理を行う方法が在ります。
この機能により、以下のようなことができるようになります。
- Main Org. に Viewerとして所属するAユーザーに対して、特定のダッシュボードへの編集権限を付与することができます。
- Main Org. の X Teamに所属するユーザーに対して、特定のダッシュボードフォルダへの編集権限をまとめて付与することができます。
Teamsとは
Teamsとは、共通のダッシュボードやデータソースの権限(データソースの権限についてはおまけで記載)を必要とするOrganization内のユーザーのグループです。
例えば、5人のユーザーに同じダッシュボードへのアクセス権を割り当てる代わりに、それらのユーザーで構成されるチームを作成し、そのチームにダッシュボードへのアクセス権をまとめて割り当てることができます。
Teamの詳細についてはこちらのドキュメントをご覧ください。
Enterprise版限定の権限管理機能について
Grafanaの権限管理には、デフォルトで利用できる機能の他に、Enterprise版でのみ利用できる機能があります。これらの機能によって、Grafanaの権限管理をよりパワーアップさせることができます。
データソースの権限
デフォルトでは、データ ソースがユーザーのダッシュボードにリンクされていない場合でも、ユーザーは組織内の任意のデータ ソースをクエリすることができてしまいます。これは、ダッシュボードの編集権限を持たないユーザーもExploreなどの機能を使ってデータを解析できるという点では便利ですが、データソース内のデータをセキュアに管理したい場合には危険です。
データ ソース権限を使用すると、データ ソース クエリ権限を特定のユーザーおよびチームに制限することができ、データソースのデータのアクセス権の管理を可能にします。
データソース権限の詳細についてはこちらのドキュメントをご覧ください。
RBAC
RBAC は、ユーザー、レポート、認証などの Grafana リソースへの読み取りおよび書き込みアクセスをユーザーに付与、変更、取り消す方法を提供します。 RBACを使用することで、Grafana OSSに含まれるGrafanaの基本Roleを拡張し、ユーザーのアクションをより詳細に制御できるようになります。
RBACの詳細についてはこちらのドキュメントをご覧ください。
操作の紹介
Grafanaの権限管理機能を使用するには、操作が必要です。このブログでは、Grafanaの権限管理機能を使用するための操作について、3つ紹介します。
- Grafanaの利用ユーザーの追加・変更(PW変更)をするための方法
- Teamの作成・Teamへのユーザー追加・管理をするための方法
- Teamごとにダッシュボード(フォルダ)の権限を変更する方法
1. Grafanaの利用ユーザーの追加・変更(PW変更)をするための方法
GrafanaのユーザーはServer Admin権限を持つユーザーによって管理することができる。
はじめに作成されるadminユーザーは、デフォルトでServer Admin権限を持つ。Server Adminでは以下のような操作を行うことができる。
- Grafana Server Admin権限の割当又は解除
- 組織内のユーザーを追加または削除する
- 組織でのユーザーのRole(Admin, Editor, Viewer)を変更する
- Editorに管理者権限を付与する
サーバーのユーザー管理に関するドキュメントはこちら
ロールベースのアクセス制御(RBAC)に関するドキュメントはこちら
ユーザーの追加
①Server Admin権限を持つアカウントでGrafanaにログインする
②左側のメニューから盾のマークのアイコンの ”Server admin” をクリックする
③”New user” をクリックする(右上の青いボタン)
④フィールドに入力し、”Create user” をクリックする
ユーザーのパスワード変更
①Server Admin権限を持つアカウントでGrafanaにログインする
②左側のメニューから盾のマークのアイコンの ”Server admin” をクリックする
③設定を変更したいユーザーをクリックする
④”Edit” をクリックしパスワードを変更し、”Save” をクリックする
2. Teamの作成・Teamへのユーザー追加・管理をするための方法
Teamはダッシュボードやデータソースの権限をまとめて管理するための管理単位。例えば、Teamにダッシュボードの権限を割り当てると、Teamに所属するメンバーはその権限を継承する。
TeamのメンバーにはMemberまたはAdminの権限があり、TeamのAdmin権限を持つユーザーはTeamのメンバーを管理することができる。
チーム管理のためのドキュメントはこちら
Teamの作成
①組織管理者としてGrafanaにログインする
②左側のメニューで歯車アイコンの ”Configuration” をホバーし、”Teams”を選択する
③”New Team” をクリックする(②の画像の右上の青いボタン)
④フィールドを入力し、”Create”をクリック
チームメンバーを追加する
①TeamのAdminとしてGrafanaにログインする
②左側のメニューで歯車アイコンの ”Configuration” をホバーし、”Teams”を選択する
③メンバーを追加するチームの名前をクリックし、”Add member”をクリックする
④ ユーザーを見つけて選択する
⑤ユーザーをTeamのMemberとして追加するか、Adminとして追加するかを選択する
⑥”Save”をクリックする
チームメンバーの権限管理
①組織管理者またはチーム管理者としてGrafanaにログインする
②左側のメニューで歯車アイコンの”Configuration” をクリックし、チームを選択する
③チームメンバーの権限を追加または変更するチームの名前をクリックする
④チームメンバーリストで、権限を変更するユーザーを見つけて、プルダウンで権限を変更する
3. Teamごとにダッシュボード(フォルダ)の権限を変更する方法
チームを作成しても、フォルダやダッシュボードにその権限を紐づけないとその機能を生かせない。
ダッシュボードフォルダーに設定した権限はそのフォルダー内のダッシュボードに継承されるため、Teamごとに権限を管理する場合は基本的にはフォルダーごとに権限管理をし、例外的に特定のユーザーに特定のダッシュボードの編集権限を与えたいような場合のみ、ダッシュボードで権限を割り当てるのが良い。
ダッシュボードの権限管理についてのドキュメントはこちら
フォルダーの権限を変更する方法
①組織の管理者としてGrafanaにログインする
②左側のメニューで四角が4つ並んだアイコンの ”Dashboards” を選択する
③マウスカーソルを権限を変更したいフォルダーの上に置き、”Go to folder” をクリックする
④上部のタブから”Permissions” を選択し、”Add a permission”をクリックする
⑤ドロップダウン メニューでUser, TeamまたはRoleを選択する(ここではtest-teamというチームにフォルダーの編集権限を付与する)
⑥権限を選択し、”Save”をクリックすると設定が完了
※ダッシュボードのフォルダにはデフォルトでRoleベースの権限が割り当てられている。すると、基本的に全てのユーザーはViewer以上の権限を持つので、デフォルトではすべてのユーザーがすべてのフォルダー、ダッシュボードを閲覧できる設定となっている。Teamによって閲覧できるフォルダーを変えたりするためにその設定を解除したい場合は、ダッシュボードのフォルダーのPermissionsからRoleによって割り振られたEditorとViewerを赤の×ボタンを押下して削除する。
Teams + Folder か Organizaions どっちがいい?
Grafana の権限管理の方法を調査したあと、Teams + Folderを使った方法とOrganizationを使った方法、どちらがチームやリソースの管理に適しているのか、疑問に思いました。
すると、ユースケースも交えてGrafanaでのユーザー管理の各方法を比較・紹介するGrafanaの記事を見つけました。
この記事によるとGrafanaは、Teams + Folderによるユーザー管理をOrganizationよりも推奨しており、今後 Teams + Folderの機能に重点的に投資するとコメントしています。理由としては、 Teams + Folder と Organizations の比較において、Teams + FolderはOrganization と類似の機能でありながらより多くの機能を柔軟に提供するためです。
迷ったらTeams + Organizationを利用してユーザーアクセス管理を行いましょう。ちなみに、社内で使用するGrafanaを完全に分離したい場合は、別のインスタンスでGrafanaを建てることを推奨しています。
上記のトピックが書かれていたGrafana公式のブログはこちら。
最後に・考察
こちらのブログではGrafanaの権限管理について解説しました。
Grafanaの権限管理は色々なことができる一方、意外と複雑です。このブログの解説が少しでも皆様のお役に立てば幸いです。
ここから筆者の感想、余談です。
Grafanaはデータの民主化を使命の1つとしています。そのためか、ユーザーの権限をを厳しく(例えばどのダッシュボードも見られない、どのデータソースも使えないというような状態に)設定するような権限管理をはじめから想定して作られていないように感じました。そのような設定を行うための操作は少し面倒です。
Enterprise版のRBACを使用すると、カスタムロールや基本的なロールの割り当て作成、編集、削除できるようになるなど、より詳細で厳密な権限管理を柔軟に行うことができるようになります。Grafanaで大規模な権限管理をはじめる場合はRBACロールアウト戦略を計画し、実行していくことがベストでしょう。プロビジョニングを利用してRBACロールを管理したり割り当てることもできます。
Grafanaのサポートなら!
サイオスOSSよろず相談室にお任せください!
Grafanaだけでなく、各種最新のOSSにも取り組んでおり、現在、150種類以上のOSSのサポートに対応しております。商用製品のサポート品質に匹敵する手厚いサービスを各種OSSでご利用いただけます。
OSSサポートのことでお困りでしたら、お気軽にご相談ください!
Grafana関連記事
- Grafana を使ってみる
- よくわかるGrafana入門【ダッシュボード編①】
- よくわかるGrafana入門【ダッシュボード編②】
- 【デモ動画公開】Grafana~初めてのダッシュボード作成
- Grafana Labs – APIエコシステムデザインソリューション