【入門編】Grafana IAMと細粒度アクセス制御(Fine-grained Access Control):マルチテナント環境のセキュアな構築法 – 運用監視・オブザーバビリティ活用バイブル

オブザーバビリティの世界へようこそ。私はこれまで数多のシステム障害と向き合ってきましたが、辿り着いた結論はいつも同じです。「監視システムが堅牢でなければ、運用はただの博打(ばくち)に過ぎない」ということ。

今日は、Grafanaにおける「マルチテナント環境のセキュアな設計」という、少しハードルが高く、しかし避けては通れない領域を攻略します。これをマスターすれば、あなたの組織の監視環境は「誰でも見れるが、見せてはいけないものは見せない」という、プロの要塞へと進化します。

—

1. なぜ「組織・チーム・フォルダ」の階層構造が必要なのか

初心者の方は、とりあえず全部のダッシュボードを一つの場所に放り込みがちです。しかし、規模が拡大すると必ず「開発チームAにはプロジェクトAのデータだけ見せたい」「外部委託先に設定変更権限は渡したくない」という要件が突きつけられます。

Grafanaのアクセス制御は、「誰(Subject)が」「どの範囲(Scope)に対して」「何ができるか(Permission)」を明確に分離することから始まります。

黄金の階層設計

  • Organizations (組織): 環境の完全分離(例:本番環境 vs ステージング環境)。
  • Teams (チーム): 組織内の権限グループ(例:SREチーム、アプリ開発チーム)。
  • Folders (フォルダ): ダッシュボードの論理的グループ。権限付与の最小単位です。

—

2. 環境構築:まずは「守り」の基礎から

まずはGrafanaをインストールし、最も重要な「認証と認可」の基盤を作ります。

インストール後の必須セットアップ(`grafana.ini`)
Grafanaの権限管理を外部のIDP(OktaやAuth0など)と紐付けるのが鉄則ですが、まずは標準機能で「Role Based Access Control (RBAC)」を有効化します。

/etc/grafana/grafana.ini

[auth]
外部認証を使わない場合でも、ログインのセキュリティを強化
disable_login_form = false

[rbac]
細粒度アクセス制御を有効化(Enterprise版/Cloud版の神機能)
enabled = true

—

3. 【裏技】データ行レベル(Row-level)セキュリティの担保

ここからが本題です。標準の権限管理では「ダッシュボードは見せられるが、その中の特定のデータ(例えば特定のテナントIDのメトリクス)だけを隠す」ことはできません。

ここで登場するのが「変数(Template Variables)とデータソースのセッション注入」というテクニックです。

手順:ダッシュボード変数による制御

1. テナントID変数の作成: ダッシュボードに `$tenant_id` という非表示の変数を作ります。
2. クエリへの注入: プロメテウスやSQLのクエリを以下のように書き換えます。

/

  • SQL例: ログインユーザーの所属テナントIDのみを抽出するクエリ
  • $__user.login は Grafanaが提供する動的変数

/
SELECT FROM metrics
WHERE tenant_id = ‘${current_tenant_id}’
AND time > $__timeFilter(time)

なぜこれが重要か?
ユーザーがURLを改竄して別のテナントのデータを見ようとしても、Grafanaのセッション情報と紐づいた変数がクエリを強制的に制限するため、物理的に他人のデータにアクセスできなくなるからです。これが「データ行レベルのセキュリティ」の正体です。

—

4. HelloWorld的な動作確認:まずはここから

いきなり複雑なことをせず、以下の手順で「権限が正しく効いているか」を確認してください。

1. 管理者(Admin)でログイン: ダッシュボードを作成し、「フォルダA」に保存する。
2. 制限ユーザー(Viewer)を作成: 「フォルダA」へのアクセス権を与えない。
3. 確認: 制限ユーザーでログインし、フォルダAが「存在しないこと」を確認する。
4. 権限付与: 制限ユーザーを「フォルダA」のViewer権限に追加し、即座にダッシュボードが見えるようになるか確認する。

—

最後に:エンジニアとしての心得

セキュリティ設定は「面倒な作業」ではありません。「システムを安心して運用するためのガードレール」です。

権限管理を適切に行うことで、エンジニアは「誤って設定を消してしまう不安」から解放されます。それが結果として、迅速なデプロイと安定したサービス運営に繋がるのです。

まずは今日の帰りにでも、ダッシュボードのフォルダ構成を見直し、「誰が何を見るべきか」を整理してみてください。その小さな一歩が、あなたのチームのオブザーバビリティを劇的に向上させます。

何か詰まったら、いつでも聞いてくださいね。私たちは、監視という名の地図を描く仲間なのですから。

タイトルとURLをコピーしました