향상된 LDAP 통합 구성

향상된 LDAP 통합 구성 (Configure enhanced LDAP integration)

향상된(enhanced) LDAP 통합은 Grafana 오픈소스 에디션에서 사용할 수 있는 LDAP 통합 위에 추가 기능을 더해줘요. 팀과 LDAP 그룹 간 동기화를 설정하고, LDAP 서버와 백그라운드에서 능동적으로 사용자를 동기화할 수 있죠. 이 기능은 Grafana Enterprise와 Grafana Cloud에서 사용할 수 있어요.

출처: 문서

본문

Note: Grafana Enterprise와 Grafana Cloud에서 사용 가능해요. Grafana Cloud 고객이라면 이 기능을 요청하려면 Cloud Portal에서 지원 티켓을 열어야 해요.

역할 기반 권한으로 사용자 접근을 제어하려면 role-based access control 문서를 참고하세요.

팀을 위한 LDAP 그룹 동기화

향상된 LDAP 통합으로 LDAP 그룹과 팀 간의 동기화를 설정할 수 있어요. 이를 통해 특정 LDAP 그룹의 멤버인 LDAP 사용자가 Grafana의 특정 팀 멤버로 자동 추가되거나 제거될 수 있어요. Grafana는 팀의 모든 동기화된 사용자를 추적하며, 팀 멤버 목록에서 LDAP에서 동기화된 사용자를 확인할 수 있어요. 이 메커니즘 덕분에 사용자의 LDAP 그룹 멤버십이 바뀌면 Grafana가 팀에서 기존 동기화 사용자를 제거할 수 있어요. 또한 사용자를 팀 멤버로 수동 추가해도 그가 로그인할 때 제거되지 않아요 — 따라서 LDAP 그룹 멤버십과 Grafana 팀 멤버십을 유연하게 결합할 수 있죠. 자세한 내용은 team sync 문서를 참고하세요.

능동적(Active) LDAP 동기화

Grafana 오픈소스 버전에서는 LDAP의 사용자 데이터가 LDAP 인증 로그인 과정에서만 동기화돼요. 능동적 LDAP 동기화를 사용하면 Grafana가 백그라운드에서 LDAP 서버와 사용자를 능동적으로 동기화하도록 구성할 수 있어요. Grafana에 최소 한 번 로그인한 사용자만 동기화돼요. 역할과 팀 멤버십이 업데이트된 사용자는 새 기능에 접근하려면 페이지를 새로고침해야 해요. 제거된 사용자는 자동으로 로그아웃되고 계정이 비활성화돼요. 이 계정들은 Server Admin > Users 페이지에 disabled 라벨로 표시돼요. 비활성화된 사용자는 대시보드·폴더·데이터 소스에 대한 커스텀 권한을 유지하므로, LDAP 데이터베이스에 다시 추가하면 이전과 같은 커스텀 권한으로 애플리케이션에 접근할 수 있어요.

[auth.ldap]
...

# 크론 문법 또는 몇 가지 미리 정의된 스케줄러를 사용할 수 있어요 -
# @yearly (or @annually) | 1년에 한 번, 1월 1일 자정        | 0 0 1 1 *
# @monthly               | 한 달에 한 번, 1일 자정           | 0 0 1 * *
# @weekly                | 일주일에 한 번, 토/일 자정 사이    | 0 0 * * 0
# @daily (or @midnight)  | 하루에 한 번, 자정                | 0 0 * * *
# @hourly                | 한 시간에 한 번, 정시               | 0 * * * *
sync_cron = "0 1 * * *" # 기본값 (매일 오전 1시)
# 이 크론 표현식 형식은 공백으로 구분된 5개 필드를 사용해요, 예:
# sync_cron = "*/10 * * * *"
# 이렇게 하면 LDAP 동기화가 10분마다 실행되는데, 이것이 Grafana 동기화 시간 사이의 최소 간격이에요
# 즉 9분마다로는 설정할 수 없어요

# 능동적 LDAP 동기화를 비활성화할 수도 있어요
active_sync_enabled = true # 기본적으로 활성화

능동적 LDAP 동기화에서는 단일 바인드(Single bind) 구성이 지원되지 않아요 — Grafana가 LDAP 검색을 수행하려면 사용자 정보가 필요하기 때문이에요. 동기화가 동작하려면 ldap.toml 구성 파일의 servers.search_filterservers.attributes.username이 일치해야 해요. 기본적으로 servers.attributes.usernamecn이므로, 검색 필터로 다른 속성을 쓰려면 username 속성도 함께 업데이트해야 해요. 예를 들어:

[[servers]]
search_filter = "(sAMAccountName=%s)"

[servers.attributes]
username  = "sAMAccountName"

속성이 서로 다르면 사용자 세션이 매 동기화 후 종료돼요. 검색이 username 값으로 수행되는데, 그 값이 검색 필터에 사용된 속성에는 존재하지 않기 때문이에요.

더 알아보기 (Learn more)