2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GrafanaをGitLab のアカウントでログインできるようにする

Last updated at Posted at 2023-09-15

はじめに

本記事では、Grafanaを、GitLab のアカウントでログインできるようにします。
設定手順と、よくあるエラーの対応策を説明します。
なお、本記事の正確性や完全性について保証しませんので、ご注意ください。

設定手順

基本的には以下の公式説明のとおりです。

GitLab OAuth アプリの作成

GitLab 上でGrafanaのApplicationを作成します。
GitLabのトップページから Admin -> Applications で新しいApplicationを作成します。

Redirect URIには以下のようにGrafanaのURIを指定します。

https://grafana.YOUR.DOMAIN/login/gitlab

末尾のlogin/gitlabを忘れないようにしてください。

その他の設定は各自環境に合わせてください。

image.png

作成したら、GITLAB_APPLICATION_ID と GITLAB_SECRET が表示されますので記録しておきます。
GITLAB_SECRET は一度しか表示されないので記録を忘れないようにしましょう。忘れた場合は作ったApplication設定を開いて[Renew Secret]ボタンでSECRETを再生成できます。

Grafana側へGitLab Authの設定

Grafana側でGitLabにログインできるように設定を追加します。
設定項目については公式ドキュメントを確認してください
また、環境変数からGrafanaの設定を追加することも可能です。環境変数から設定する場合は、設定名の頭にGF_{セクション名}_{項目名}とすることで環境変数からGrafanaの設定を上書きできます。例えば、GitLab ログイン有効化のための設定項目はenabled、セクションはauth_gitlabのため、環境変数の設定名はGF_AUTH_GITLAB_ENABLEDになります。
以下の例は、Amazon ECSを利用している場合の、設定例(タスク定義の環境変数)です。

image.png

基本的には上記の設定だけで、Grafanaのログイン画面上にGitLabでログインするためのボタンが表示されます。

image.png

ログインボタンを押して、GitLab側でGitLabにログインし、利用権限確認を承認するとGrafanaにログインできます。

image.png

image.png

TIPS

以下は問題が起きた場合の対応策やその他のTIPSです。

リダイレクトURIのエラー :The redirect URI inclueded is not valid.

Grafana上のGitLabログインボタンをクリック後に、以下の画像のようにエラー(The redirect URI inclueded is not valid)が発生する場合があります。

image.png

上記エラーは、GitLab側のApplicationで設定したRedirect URIと、Grafanaが指定しているRedirect URIが異なっていると発生します。
Grafanaが指定しているRedirect URIは、上記エラー発生時のURLのパラメータ(redirect_uri)に埋め込まれています。

https://your.gitlab.jp/oauth/authorize?client_id=xxxx&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Flogin%2Fgitlab&response_type=code&scope=read_api&state=xxx

パラメータとGitLab側で設定したRedirect_URIが一致しているか確認してください。
Grafana側が指定しているRedirect_URL(URLのredirect_uriパラメータ)がおかしい場合、Grafanaのserver.domain設定が適切でない可能性があります。
この場合は、Grafana側の設定(環境変数で設定する場合はGF_SERVER_DOMAIN)でGrafana自身の適切なドメインを設定してください。

プロキシの背後などにGrafanaがある場合は設定方法が異なりますので以下のドキュメントを参照してください。

リダイレクト後タイムアウト:login.OAuthLogin(NewTransportWithCode)

GitLab側で権限確認を承認後、リダイレクト待機状態になり一定期間後タイムアウト、Grafanaにリダイレクトし、以下の画面のようなエラー login.OAuthLogin(NewTransportWithCode)になる場合があります。

image.png

この場合は、Grafanaリダイレクト時に、GrafanaからGitLabへtoken取得リクエストが発行されますが、このリクエストがうまく処理できていない可能性が高いです。
GrafanaのGF_AUTH_GITLAB_TOKEN_URL が正しい場合は、GrafanaからGitLabの経路が確立できているかを確認してください。
特にGitLabを独自に構築している場合、ファイアウォールで接続元を制限していないかなど確認しましょう。

ログインできるグループを制限

GrafanaにログインできるGitLabユーザを制限したい場合、グループを指定することで可能です。
※GitLab社提供のクラウドサービスgitlab.comを利用時はグループを制限しないと、gitlab.comのユーザであれば誰でもGrafanaにログインできるようになってしまうので注意しましょう。

Grafana側の設定allowed_groupsを指定することでGrafanaにログインできるGitLabのグループを制限できます。

# GitLabグループのteam1とteam2のサブグループ(viewer)のみを許可
allowed_groups = team1, team2/viewer

環境変数で設定する場合は、GF_AUTH_GITLAB_ALLOWED_GROUPSを設定してください。

また、このままだとGrafana上のロールとの紐づけが行われません。ログイン自体はできますが、ログイン時に時間がかかることがあります)。サーバログに以下のようなエラーが出ます。

logger=oauth.gitlab t=2023-04-12T11:20:45.375047249Z level=warn msg="No valid role found. Skipping role sync. In Grafana 10, this will result in the user being assigned the default role and overriding manual assignment. If role sync is not desired, set oauth_skip_org_role_update_sync to true"

紐づけたい場合はrole_attribute_path(環境変数では GF_AUTH_GITLAB_ROLE_ATTRIBUTE_PATH)を設定をしてください。

# GitLabのteam1に所属するユーザは Editorロール、それ以外はViewerロール
role_attribute_path	contains(groups[*], 'sic') && 'Editor' || 'Viewer'

紐づけをしない場合(Grafanaのロールは独自に管理したい場合)はskip_org_role_sync(環境変数ではGF_AUTH_GITLAB_SKIP_ORG_ROLE_SYNC)をtrueに設定してください。

許可されていないグループのユーザがログインしようとすると以下のようなエラーが発生します。

image.png

サーバーログには以下のようなログが吐かれます。

logger=context userId=0 orgId=0 uname= t=2023-04-12T11:30:13.401093711Z level=error msg="login.OAuthLogin(get info from gitlab)" error="user not a member of one of the required groups"

おわりに

本記事では、GrafanaをGitLabのアカウントでログインできるようにOAuthを設定しました。
GitLabとの連携によってアカウント管理が簡単になるのでGitLabをお使いの方は、ぜひ試してみてください。

商標

記載の会社名、製品名、サービス名等はそれぞれの会社の商標または登録商標です。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?