Auth Proxy 인증 구성
Auth Proxy 인증 구성 (Configure auth proxy authentication)
Grafana를 리버스 프록시 뒤에서 실행하면 auth proxy 인증을 사용해 프록시가 이미 인증한 사용자를 Grafana에 전달할 수 있어요. 프록시가 HTTP 헤더에 사용자 정보를 추가하고, Grafana는 그 헤더를 신뢰해 사용자를 로그인시켜요. SSO(Single Sign-On)와 연동해 사용자가 애플리케이션에 로그인하면 Grafana에도 자동으로 로그인되게 하는 데 유용해요.
출처: 문서
본문
둘러싼 시스템이 이미 사용자 자격 증명을 처리하고 있고 Grafana가 사용자를 다시 인증하게 하고 싶지 않다면 auth proxy 인증이 좋은 선택이에요. Grafana는 요청에 사용자 정보를 제공하는 헤더(보통 X-WEBAUTH-USER)를 읽어 로그인시켜요.
Grafana 구성
구성 파일에서 [auth.proxy] 섹션을 활성화하고 헤더 이름을 설정해요:
[auth.proxy]
enabled = true
header_name = X-WEBAUTH-USER
주요 옵션
| 설정 | 설명 |
|---|---|
enabled |
Auth proxy 인증 활성화 |
header_name |
사용자 이름을 담는 HTTP 헤더 이름 |
header_property |
사용자 이름을 담는 헤더의 속성. username(기본) 또는 email |
auto_sign_up |
true면 인증된 새 사용자를 자동으로 Grafana에 생성 |
sync_ttl |
사용자 동기화를 강제하는 TTL(기본 0, 즉 동기화하지 않음). 최소 1분 |
whitelist |
중괄호로 감싼 콤마 구분 CIDR 목록(예: 192.168.1.0/24)으로, 이 주소에서 온 요청만 auth proxy 인증 허용 |
headers |
Grafana 헤더 이름을 로그·역할 같은 사용자 속성에 매핑 |
enable_login_token |
true면 Grafana가 생성한 로그인 토큰으로 자동 로그인(SSO에 유용) |
login_token_header |
Grafana 로그인 토큰을 담는 헤더(기본 X-Grafana-Login-Token) |
allow_sign_up |
auth proxy 인증으로 가입 허용 여부 |
allow_org_role_override |
역할을 헤더에서 가져오는지 여부 |
org_role_header |
org 역할을 담는 헤더 이름. allow_org_role_override가 true일 때 사용 |
headers_encode_as_json |
JSON으로 인코딩할 헤더 목록 |
역할 매핑
allow_org_role_override를 true로 설정하면 org_role_header(기본 X-WEBAUTH-ROLE)가 값을 Grafana 조직 역할(Viewer, Editor, Admin)에 매핑해요.
[auth.proxy]
enabled = true
header_name = X-WEBAUTH-USER
allow_org_role_override = true
org_role_header = X-WEBAUTH-ROLE
로그 토큰 (SSO)
enable_login_token을 true로 설정하면 Grafana가 사용자를 대신해 로그인 토큰을 생성해 자동 로그인을 활성화해요. 이는 다른 시스템이 Grafana로 요청을 리다이렉트할 때 유용해요.
[auth.proxy]
enabled = true
header_name = X-WEBAUTH-USER
enable_login_token = true
리버스 프록시 구성
Nginx, Apache, HAProxy, Traefik 등 어떤 리버스 프록시든 사용자 이름 헤더를 설정할 수 있어요. 예를 들어 Nginx에서 기본 인증을 사용하는 경우:
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_pass http://localhost:3000;
proxy_set_header X-WEBAUTH-USER $remote_user;
}
프록시 뒤에서 Grafana가 올바른 URL을 생성하도록 [server]의 root_url과 serve_from_sub_path를 설정해야 할 수 있어요.