Github 계정을 연동한 이유
사내 인증 통합
개발자에게 발급되는 GitHub 계정을 사용함으로써, 별도의 로그인 정보 제공 없이 서비스에 접근할 수 있습니다. 이는 인증 정보의 관리 부담을 줄여줍니다.
권한 관리 용이성
GitHub 조직(organization)에 등록된 팀을 기준으로 세밀한 권한 관리가 가능합니다. 팀별로 다른 접근 권한을 설정하여 보안을 강화할 수 있습니다.
Grafana는 데이터 시각화와 모니터링을 위한 오픈 소스 플랫폼입니다.
GitHub OAuth를 Grafana와 연동함으로써, 개발 팀은 GitHub 계정을 사용하여 Grafana 대시보드에 로그인할 수 있게 되어, 보안을 강화하고 사용자 관리를 용이하게 할 수 있습니다.

이 글에서는 Grafana에 GitHub OAuth 인증을 설정하는 방법을 단계별로 안내합니다.
사전 준비사항
- Grafana 서버에 접근 권한
- GitHub 계정 및 GitHub에서 OAuth 앱을 생성할 수 있는 권한
테스트를 위한 환경은
Docker-compose.yaml을 이용한 로컬 환경에서 진행하였습니다.
첫 번째 단계는 GitHub에서 OAuth 앱을 등록하는 것입니다.
GitHub에 로그인하고, 우측 상단의 프로필 사진을 클릭한 후 Settings를 선택합니다.
왼쪽 사이드바에서 Developer settings를 클릭합니다.
OAuth Apps 섹션을 선택하고, New OAuth App 버튼을 클릭합니다.
앱 이름, 홈페이지 URL (Grafana 홈페이지 URL), 그리고 Authorization callback URL을 입력합니다.
Callback URL은 Grafana가 설치된 서버의 주소로 /login/github을 추가한 URL입니다 (예: http://your-grafana-instance/login/github).
Register application 버튼을 클릭하여 앱을 등록합니다.

앱을 등록하고 나면, Client ID와 Client Secret이 생성됩니다. 이 정보는 Grafana에서 GitHub 인증을 설정할 때 사용됩니다.
다음으로, Grafana 설정 파일을 수정하여 GitHub OAuth를 활성화합니다.
Grafana 서버에서 Grafana 설정 파일(grafana.ini 또는 custom.ini)을 엽니다.
[auth.github] 섹션을 찾아 다음 옵션을 설정합니다:
/etc/grafana/grafana.ini 경로에 저장되어 있는 파일을 찾아 내용을 수정합니다.
기본적으로 Oauth 설정을 위한 내용이 명시되어 있습니다.
#################################### GitHub Auth #########################
[auth.github]
name = GitHub
icon = github
enabled = true
allow_sign_up = true
auto_login = false
client_id = d19ac************ # Change
client_secret = *******************************598b2a # Change
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
signout_redirect_url =
allowed_domains =
team_ids =
allowed_organizations =
role_attribute_path =
role_attribute_strict = false
allow_assign_grafana_admin = false
skip_org_role_sync = false
tls_skip_verify_insecure = false
tls_client_cert =
tls_client_key =
tls_client_ca =
# GitHub OAuth apps does not provide refresh tokens and the access tokens never expires.
use_refresh_token = false
실제 운영환경에서는 helm 차트를 이용하여 그라파나를 배포하므로 helm - values.yaml에서 auth.github 섹션을 검색하여 아래 내용을 추가합니다.
# values.yaml
...
auth.github:
enabled: true
allow_sign_up: true
auto_login: false
client_id: d19ac************ # Change
client_secret: *******************************598b2a # Change
scopes: user:email,read:org
auth_url: https://github.com/login/oauth/authorize
token_url: https://github.com/login/oauth/access_token
api_url: https://api.github.com/user
allowed_organizations:
role_attribute_path:
role_attribute_strict: false
allow_assign_grafana_admin: false
skip_org_role_sync: false
...
Tips!!
allowed_organizations
등록된 Organization만 로그인을 사용할 수 있도록 제한할 수 있습니다.
role_attribute_path
필터링 기능을 사용하여 Organization에 등록되어 있는 Team / 유저를 기준으로 권한을 자동으로 부여할 수 있습니다.예를들어 소속되어 있는 org의 admin 팀에 속해있는 유저가 admin, backend 팀에 속해있는 유저는 editor의 권한, 이외의 유저는 Viewer을 자동으로 부여하고자 한다면
role_attribute_path: >- contains(groups[*], '@org/admin') && 'Admin' || contains(groups[*], '@org/backend') && 'Editor' || 'Viewer'와 같이 설정하여 Github Org에 소속된 팀에 따라 자동으로 권한을 부여하여 사용가능 합니다.
설정을 변경한 후, Grafana 서비스를 재시작합니다.
Grafana 설정을 완료했다면, Grafana 로그인 페이지에서 GitHub 로그인 옵션이 표시되어야 합니다. GitHub 계정으로 로그인을 시도하여 설정이 정상적으로 작동하는지 확인합니다.

모든 설정 및 권한이 적용되었다면, Users 관리 탭에서 Origin이 Github으로 표기되는 것을 확인할 수 있습니다. (admin 권한 부여)

Grafana와 GitHub OAuth의 연동은 보안 강화와 사용자 관리의 편의성을 제공합니다.
이 가이드를 통해 단계별로 설정을 완료하면, 팀원들이 GitHub 계정으로 Grafana 대시보드에 쉽고 안전하게 접근할 수 있게 됩니다.