[Oauth] Grafana와 GitHub OAuth 연동 가이드

xgro·2024년 2월 18일

Oauth

목록 보기
1/2

Github 계정을 연동한 이유

사내 인증 통합
개발자에게 발급되는 GitHub 계정을 사용함으로써, 별도의 로그인 정보 제공 없이 서비스에 접근할 수 있습니다. 이는 인증 정보의 관리 부담을 줄여줍니다.

권한 관리 용이성
GitHub 조직(organization)에 등록된 팀을 기준으로 세밀한 권한 관리가 가능합니다. 팀별로 다른 접근 권한을 설정하여 보안을 강화할 수 있습니다.


📌 Grafana와 GitHub OAuth 연동 가이드

Grafana는 데이터 시각화와 모니터링을 위한 오픈 소스 플랫폼입니다.

GitHub OAuth를 Grafana와 연동함으로써, 개발 팀은 GitHub 계정을 사용하여 Grafana 대시보드에 로그인할 수 있게 되어, 보안을 강화하고 사용자 관리를 용이하게 할 수 있습니다.

이 글에서는 Grafana에 GitHub OAuth 인증을 설정하는 방법을 단계별로 안내합니다.


사전 준비사항

  • Grafana 서버에 접근 권한
  • GitHub 계정 및 GitHub에서 OAuth 앱을 생성할 수 있는 권한

테스트를 위한 환경은 Docker-compose.yaml을 이용한 로컬 환경에서 진행하였습니다.


👉 1단계: GitHub에서 OAuth 앱 등록

첫 번째 단계는 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 인증을 설정할 때 사용됩니다.


👉 2단계: Grafana 설정

다음으로, Grafana 설정 파일을 수정하여 GitHub OAuth를 활성화합니다.

Grafana 서버에서 Grafana 설정 파일(grafana.ini 또는 custom.ini)을 엽니다.

[auth.github] 섹션을 찾아 다음 옵션을 설정합니다:

✅ grafana.ini

/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

✅ with helm

실제 운영환경에서는 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 서비스를 재시작합니다.


👉 3단계: Grafana에서 GitHub 로그인 테스트

Grafana 설정을 완료했다면, Grafana 로그인 페이지에서 GitHub 로그인 옵션이 표시되어야 합니다. GitHub 계정으로 로그인을 시도하여 설정이 정상적으로 작동하는지 확인합니다.

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



📌 Conclusion

Grafana와 GitHub OAuth의 연동은 보안 강화와 사용자 관리의 편의성을 제공합니다.

이 가이드를 통해 단계별로 설정을 완료하면, 팀원들이 GitHub 계정으로 Grafana 대시보드에 쉽고 안전하게 접근할 수 있게 됩니다.



🔗 Reference

profile
안녕하세요! DevOps 엔지니어 이재찬입니다. 블로그에 대한 피드백은 언제나 환영합니다! 기술, 개발, 운영에 관한 다양한 주제로 함께 나누며, 더 나은 협업과 효율적인 개발 환경을 만드는 과정에 대해 인사이트를 나누고 싶습니다. 함께 여행하는 기분으로, 즐겁게 읽어주시면 감사하겠습니다! 🚀

0개의 댓글