SUPER-G.EEK.JP

twitter: @hum_op_dev
github: ophum

GrafanaにGitHub OAuthでログインできるようにしてみる

目次

Grafana に GitHub OAuth でログインできるようにしてみます。

要件としてはシンプルにログインできることだけを行います。

ドキュメント

これ通りにやるだけ

https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-authentication/github/

GitHub OAuth App を作成する

Application nameHomepage URLには適当なモノを設定します。 Authorization callback URLには、<root_url>/login/githubという感じで入れます。 テスト環境の Grafana の<root_url>http://10.1.0.41:3000/なのでhttp://10.1.0.41:3000/login/githubを設定します。

/etc/grafana/grafana.ini を編集する

[auth.github]というセクションがあるのでそこに以下のように編集します。 デフォルトでは全てコメントアウトされているので任意の設定を有効にします。

他にもいろいろありますが、今回は以下のものだけ設定してみました。

1root@grafana:~# vim /etc/grafana/grafana.ini
1[auth.github]
2name = GitHub
3icon = github
4enabled = true
5allow_sign_up = true
6client_id = <GitHub Oauth AppClient ID>
7client_secret = <GitHub Oauth Appで生成したClient secret>
設定項目 説明
name ログイン画面で表示される名前 Sign in with <name>というボタンが表示されます
icon ログイン画面で表示されるアイコン Sign in with <name>というボタンのアイコンになります
enabled GitHub Oauth を使った認証を有効にします。
allow_sign_up ユーザーが存在しないときに作成するかどうか。false=作成しない true=作成する
client_id GitHub Oauth App の Client ID
client_secret GitHub Oauth App の Client secret

設定を反映する

root@grafana:~# systemctl restart grafana-server

動作確認

ログインページに Sign in with GitHubというボタンが追加されていることが確認できました。

クリックすると GitHub の認可の確認ページに遷移します。

Authorize <id>をクリックすると Grafana にログインされます。

権限に関して

新しくユーザーが作成されると Viewer 権限で作成されます。また Grafana 自体の管理者権限もありません。

(管理ユーザーでログインしなおしてユーザーの設定情報を閲覧)

今回は GitHub の Organization やチーム、ロールなどと同期する設定をしていません。 そのため、Grafana での権限に関しては admin ユーザーが手動で変更する必要があります。 GitHub 側でチームやメンバーの権限管理を行っている場合は、うまくマッピングしてあげると運用が楽になりそうです。 逆に管理していない場合や少人数での利用の場合は、都度手動で権限を変更するという運用で問題ないと思います。

注意点

だれでもアクセス可能な場所で Grafana を運用している場合は、GitHub アカウントがあれば Grafana にユーザーを作れてしまいます。 そのため、任意のユーザーのみログインできるように制限する必要があります。 Organization やチームと同期する設定をするか、allow_sign_up=falseとしてユーザーの自動作成を無効にするなどの対策が必要になると思います。