目的
Grafanaの認証をIBM CloudのApp IDでやってみます。
手順
参考
Grafanaの公式ドキュメントにOAuthとの連携方法が書かれています。
App IDについての記載はありませんが、Generic OAuthが使えそうです。
App IDの設定
IBM CloudでApp IDをオーダーし、必要な設定をします。今回はIDプロバイダとしてクラウドディレクトリーを使います。この場合、最低限次の設定を行います。
余計なIDプロバイダの無効化
必須というわけではないですが、混乱を避けるために、余計なIDプロバイダは無効化しておきます。
リダイレクトURLの設定
ログイン画面をApp IDが受け持つことになるので、ログイン後の戻りURLを登録します。URLは、${GrafanaのFQDN}/login/generic_oauth
になります。
アプリケーションの登録
アプリケーションの登録を行います。おなじみClient IDやSecretがもらえます。ここの値は後で使います。
ユーザーの登録
認証するユーザーを登録します。
Grafanaの設定
grafana.iniや環境変数で設定します。Grafanaに親しんでいる方ならよくご存じのはずです。
root_urlの設定
Grafana自体はこれをきちんと設定しなくてもなんとなく動きますが、root_urlの値を使ってredirect_uriを生成するため、きちんと設定します。
[server]
root_url = https://${GrafanaのFQDN}
OAuth関連の設定
[auth.generic_oauth]
enabled = true
name = App ID(任意です)
client_id = ${App IDのclient_id}
client_secret = ${App IDのsecret}
auth_url = ${App IDのoAuthServerUrl}/authorization
token_url = ${App IDのoAuthServerUrl}/token
api_uri = ${App IDのoAuthServerUrl}/userinfo
動作確認
設定が済んだらGrafanaにアクセスしてみましょう。
いつもの画面の下に「Sign in with App ID」と表示されました。withの後の文字は先ほどのnameの値が使われますので、App IDと表示されています。
ではSign in with AppIdに進みます。
はい、App IDが提供するログイン画面が表示されました。作りかけっぽいですが、これはログイン画面を今回カスタマイズしていないからです。実運用の際にはカスタマイズしてみてください。
先ほどクラウドディレクトリーに登録したユーザーのメールアドレスとパスワードを入力しSign inします。
無事ログインできました。
権限の調整
初めてOAuthログインしたユーザーはViewerロールだけを持っているようですので、ダッシュボードの表示はできますが、編集はできません。
adminユーザで入り直し、Configuration -> Users から、ロールの変更が可能です。
※2020/8/4更新
App IDでGrafanaのロールを指定することに成功しました。下記記事を参照ください。
以上です。