LDAP
개요
사용자 이름과 비밀번호를 확인하기 위해 외부 LDAP 인증을 사용할 수 있습니다.
Zabbix LDAP 인증은 최소한 Microsoft Active Directory 및 OpenLDAP과 함께 작동합니다.
LDAP 로그인만 구성된 경우, 사용자는 Zabbix에도 존재해야 하지만, 해당 사용자의 Zabbix 비밀번호는 사용되지 않습니다. 인증이 성공하면 Zabbix는 로컬 사용자 이름을 LDAP가 반환한 사용자 이름 속성과 매칭합니다.
사용자 프로비저닝
LDAP 사용자를 위한 JIT(just-in-time) 사용자 프로비저닝을 구성할 수 있습니다. 이 경우, 사용자가 Zabbix에 미리 존재할 필요가 없습니다. 사용자 계정은 사용자가 처음으로 Zabbix에 로그인할 때 생성될 수 있습니다.
LDAP 사용자가 LDAP 로그인과 비밀번호를 입력하면, Zabbix는 이 사용자가 존재하는지 기본 LDAP 서버에서 확인합니다. 사용자가 존재하고 아직 Zabbix에 계정이 없는 경우, Zabbix에 새 사용자가 생성되고 사용자는 로그인할 수 있게 됩니다.
JIT 프로비저닝을 통해 생성된 사용자는 생성 시점에 기본으로 설정된 LDAP 서버(디렉터리)와 연결됩니다. 이후 기본 LDAP 서버를 변경해도 이미 프로비저닝된 사용자에 연결된 LDAP 서버는 변경되거나 갱신되지 않습니다.
JIT 프로비저닝이 활성화된 경우, Authentication 탭에서 프로비저닝 해제된 사용자를 위한 사용자 그룹을 지정해야 합니다.
JIT 프로비저닝은 LDAP의 변경 사항을 기반으로 프로비저닝된 사용자 계정을 업데이트하는 것도 지원합니다. 예를 들어, 사용자가 한 LDAP 그룹에서 다른 그룹으로 이동하면 Zabbix에서도 사용자가 한 그룹에서 다른 그룹으로 이동합니다. 사용자가 LDAP 그룹에서 제거되면 Zabbix에서도 해당 그룹에서 제거되며, 다른 그룹에 속하지 않는 경우 프로비저닝 해제된 사용자를 위한 사용자 그룹에 추가됩니다. 프로비저닝된 사용자 계정은 구성된 프로비저닝 주기에 따라 또는 사용자가 Zabbix에 로그인할 때 업데이트됩니다.
백그라운드 프로비저닝은 사용자가 프론트엔드와 상호작용하고 있거나 최소한 브라우저에 프론트엔드 페이지를 열어둔 상태에서 Zabbix 프론트엔드에 의해 수행된다는 점에 유의하세요. 사용자를 프로비저닝하기 위한 별도의 백그라운드 프로세스는 없습니다.
LDAP는 인증 및 검색을 위해 디렉터리에 바인딩하는 세 가지 방법을 지원합니다:
- 익명 바인딩 — Bind DN / Bind password가 제공되지 않고 LDAP 서버가 익명 쿼리를 허용하는 경우.
- 전용 바인드 사용자(서비스 계정) — 특정 LDAP 계정이 Bind DN / Bind password에 설정되어 Zabbix가 검색 및 프로비저닝에 사용합니다. Zabbix가 최종 사용자 자격 증명 없이 검색과 백그라운드 프로비저닝을 수행할 수 있으므로 권장되고 가장 유연한 옵션입니다.
- 직접 사용자 바인딩 — Zabbix는 사용자가 로그인 시 입력한 자격 증명을 사용하여 바인딩을 수행합니다(Bind DN / Bind password는 구성되지 않음). 이는 Base DN에
uid=%{user}와 같은 플레이스홀더를 포함시켜 구성합니다. 이 모드에서 Zabbix는 대화형 로그인 중에만 사용자의 비밀번호에 접근할 수 있습니다. 그 결과, 사용자의 로그인 세션 외부에서 LDAP에 인증해야 하는 프로비저닝 작업(예: Provision now 버튼 사용 또는 사용자가 활성 로그인 상태가 아닐 때 백그라운드 프로비저닝 실행)은 인증할 수 없으므로 작동하지 않습니다. 직접 사용자 바인딩의 프로비저닝 및 업데이트는 사용자가 로그인하는 순간에만 발생합니다.
다중 서버
필요한 경우 여러 LDAP 서버를 정의할 수 있습니다. 예를 들어, 서로 다른 사용자 그룹을 인증하기 위해 서로 다른 서버를 사용할 수 있습니다. LDAP 서버가 구성되면, 사용자 그룹 구성에서 각 사용자 그룹에 필요한 LDAP 서버를 선택할 수 있게 됩니다.
사용자가 여러 사용자 그룹과 여러 LDAP 서버에 속한 경우, 이름을 오름차순으로 정렬한 LDAP 서버 목록에서 첫 번째 서버가 인증에 사용됩니다.
구성

구성 매개변수:
| 매개변수 | 설명 |
|---|---|
| Enable LDAP authentication | LDAP 인증을 활성화하려면 체크박스를 선택하세요. |
| Enable JIT provisioning | JIT 프로비저닝을 활성화하려면 체크박스를 선택하세요. |
| Servers | LDAP 서버를 구성하려면 Add를 클릭하세요(아래 LDAP 서버 구성 참조). |
| Case-sensitive login | 사용자 이름에 대한 대소문자 구분 로그인을 비활성화하려면 체크박스 선택을 해제하세요(기본적으로 활성화됨). 대소문자 구분 로그인을 비활성화하면, 예를 들어 Zabbix 사용자가 "Admin" 또는 "ADMIN"이더라도 "admin"으로 로그인할 수 있습니다. 대소문자 구분 로그인이 비활성화되어 있고 비슷한 사용자 이름을 가진 여러 Zabbix 사용자가 있는 경우(예: Admin과 admin), 해당 사용자들의 로그인은 항상 다음 오류 메시지와 함께 거부된다는 점에 유의하세요: "Authentication failed: supplied credentials are not unique." |
| Provisioning period | 프로비저닝 주기, 즉 로그인한 사용자가 프론트엔드를 사용하는 동안 얼마나 자주 프로비저닝될지를 설정합니다. |
LDAP 서버 구성

LDAP 서버 구성 매개변수:
| 매개변수 | 설명 |
|---|---|
| Name | Zabbix 구성에서 사용할 LDAP 서버 이름. |
| Host | LDAP 서버의 호스트 이름, IP 또는 URI. 예: ldap.example.com, 127.0.0.1, ldap://ldap.example.com 보안 LDAP 서버의 경우 ldaps 프로토콜과 호스트 이름을 사용하세요. 예: ldaps://ldap.example.com OpenLDAP 2.x.x 이상에서는 ldap://hostname:port 또는 ldaps://hostname:port 형식의 전체 LDAP URI를 사용할 수 있습니다. |
| Port | LDAP 서버의 포트. 기본값은 389입니다. 보안 LDAP 연결의 경우 포트 번호는 일반적으로 636입니다. 전체 LDAP URI를 사용할 때는 사용되지 않습니다. |
| Base DN | LDAP 서버 내 사용자 계정의 기본 경로: ou=Users,ou=system (OpenLDAP의 경우), DC=company,DC=com (Microsoft Active Directory의 경우) uid=%{user},dc=example,dc=com (직접 사용자 바인딩의 경우, 아래 참고 사항 참조) |
| Search attribute | 검색에 사용되는 LDAP 계정 속성: uid (OpenLDAP의 경우), sAMAccountName (Microsoft Active Directory의 경우) |
| Bind DN | LDAP 서버에서 바인딩 및 검색을 위한 LDAP 계정, 예: uid=ldap_search,ou=system (OpenLDAP의 경우), CN=ldap_search,OU=user_group,DC=company,DC=com (Microsoft Active Directory의 경우) 익명 바인딩도 지원됩니다. 익명 바인딩은 인증되지 않은 사용자에게 도메인 구성(사용자, 컴퓨터, 서버, 그룹, 서비스 등에 대한 정보)을 노출시킬 수 있다는 점에 유의하세요. 보안상의 이유로 LDAP 호스트에서 익명 바인딩을 비활성화하고 대신 인증된 접근을 사용하세요. |
| Bind password | LDAP 서버에서 바인딩 및 검색을 위한 계정의 LDAP 비밀번호. |
| Description | LDAP 서버에 대한 설명. |
| Configure JIT provisioning | JIT 프로비저닝과 관련된 옵션을 표시하려면 이 체크박스를 선택하세요. |
| Group configuration | 그룹 구성 방법을 선택하세요: memberOf - 사용자 및 그룹 멤버십 속성을 검색하는 방식 groupOfNames - member 속성을 통해 그룹을 검색하는 방식 memberOf가 더 빠르므로 선호되며, LDAP 서버가 memberOf를 지원하지 않거나 그룹 필터링이 필요한 경우 groupOfNames를 사용하세요. |
| Group name attribute | memberOf 속성(User group membership attribute 필드 참조)에 있는 모든 객체에서 그룹 이름을 가져올 속성을 지정하세요.그룹 이름은 사용자 그룹 매핑에 필요합니다. |
| User group membership attribute | 사용자가 속한 그룹에 대한 정보를 담고 있는 속성을 지정하세요(예: memberOf).예를 들어, memberOf 속성은 다음과 같은 정보를 담을 수 있습니다: memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=com이 필드는 memberOf 방식에서만 사용할 수 있습니다. |
| User name attribute | 사용자의 이름(first name)을 담고 있는 속성을 지정하세요. |
| User last name attribute | 사용자의 성(last name)을 담고 있는 속성을 지정하세요. |
| User group mapping | LDAP 사용자 그룹 패턴을 Zabbix 사용자 그룹 및 사용자 역할에 매핑하세요. 이는 프로비저닝된 사용자가 Zabbix에서 어떤 사용자 그룹/역할을 받을지 결정하는 데 필요합니다. 매핑을 추가하려면 Add를 클릭하세요. LDAP group pattern 필드는 와일드카드를 지원합니다. 그룹 이름은 기존 그룹과 일치해야 합니다. LDAP 사용자가 여러 Zabbix 사용자 그룹과 일치하는 경우, 사용자는 해당 그룹 모두의 구성원이 됩니다. 사용자가 여러 Zabbix 사용자 역할과 일치하는 경우, 사용자는 그중 가장 높은 권한 수준을 가진 역할을 받게 됩니다. |
| Media type mapping | 사용자의 LDAP 미디어 속성(예: 이메일)을 알림 전송을 위한 Zabbix 사용자 미디어에 매핑합니다(속성 값이 미디어의 Send to 필드로 사용됨). |
| Advanced configuration | 고급 구성 옵션을 표시하려면 Advanced configuration 헤더를 클릭하세요(아래 참조). |
| StartTLS | LDAP 서버에 연결할 때 StartTLS 작업을 사용하려면 체크박스를 선택하세요. 서버가 StartTLS를 지원하지 않으면 연결이 실패합니다. StartTLS는 ldaps 프로토콜을 사용하는 서버와 함께 사용할 수 없습니다. |
| Search filter | LDAP에서 사용자를 인증할 때 사용할 사용자 정의 문자열을 정의하세요. 다음 플레이스홀더가 지원됩니다:%{attr} - 검색 속성 이름(uid, sAMAccountName)%{user} - 인증할 사용자 이름 값예를 들어, 대소문자를 구분하지 않는 LDAP 또는 Microsoft Active Directory 환경 내에서 대소문자를 구분하는 검색을 수행하려면 문자열을 다음과 같이 정의할 수 있습니다: (%{attr}:caseExactMatch:=%{user}).필터가 사용자 정의되지 않은 경우, LDAP는 기본값을 사용합니다: (%{attr}=%{user}). |
직접 사용자 바인딩을 위한 LDAP 서버를 구성하려면, Base DN 매개변수에 uid=%{user} 속성을 추가하고(예: uid=%{user},dc=example,dc=com) BindDN과 Bind password 매개변수는 비워두세요.
인증 시 플레이스홀더 %{user}는 로그인 중 입력된 사용자 이름으로 대체됩니다.
직접 사용자 바인딩을 사용하면 Zabbix는 대화형 로그인 중에만 사용자의 자격 증명에 접근할 수 있습니다.
따라서 대화형 로그인 없이 작동하는 프로비저닝 작업(예: Provision now 버튼 또는 user.provision API 메서드)은 Zabbix가 해당 사용자를 대신하여 바인딩할 수 없으므로 직접 사용자 바인딩으로 인증하는 사용자를 무시합니다.
프론트엔드에서 최종 사용자의 로그인 없이도 프로비저닝과 LDAP 검색이 작동해야 하는 경우 익명 바인딩 또는 전용 바인드 사용자(서비스 계정)를 사용하세요.
다음 필드는 Group configuration 방식으로 "groupOfNames"를 사용할 때 특정하게 적용됩니다:

| 매개변수 | 설명 |
|---|---|
| Group base DN | LDAP 서버 내 그룹의 기본 경로. |
| Group name attribute | 지정된 그룹 기본 경로에서 그룹 이름을 가져올 속성을 지정하세요. 그룹 이름은 사용자 그룹 매핑에 필요합니다. |
| Group member attribute | LDAP에서 그룹 구성원에 대한 정보를 담고 있는 속성을 지정하세요(예: member). |
| Reference attribute | 그룹 필터를 위한 참조 속성을 지정하세요(Group filter 필드 참조). 그런 다음 그룹 필터에서 %{ref}를 사용하여 여기서 지정한 속성의 값을 가져오세요. |
| Group filter | 사용자가 속한 그룹을 조회하기 위한 필터를 지정하세요. 예를 들어, (member=uid=%{ref},ou=Users,dc=example,dc=com)은 그룹의 member 속성이 uid=User1,ou=Users,dc=example,dc=com인 경우 "User1"과 일치하며 "User1"이 속한 그룹을 반환합니다. |
인증서 관련 문제가 있는 경우, 보안 LDAP 연결(ldaps)이 작동하도록 하려면 /etc/openldap/ldap.conf 구성 파일에 TLS_REQCERT allow 줄을 추가해야 할 수 있습니다.
이는 LDAP 카탈로그에 대한 연결 보안을 저하시킬 수 있습니다.
실제 사용자 계정(Zabbix 프론트엔드 로그인에 사용됨)을 사용하는 대신, LDAP 서버에서 최소한의 권한으로 바인딩 및 검색을 수행할 별도의 LDAP 계정(Bind DN)을 생성하는 것이 권장됩니다.
이러한 방식은 보안을 더 강화하며, 사용자가 LDAP 서버에서 자신의 비밀번호를 변경할 때 Bind password를 변경할 필요가 없습니다.
위 표에서는 ldap_search 계정 이름이 이에 해당합니다.
접근 테스트
Test 버튼을 사용하면 사용자 접근을 테스트할 수 있습니다:
| 매개변수 | 설명 |
|---|---|
| Login | 테스트할 LDAP 사용자 이름(Zabbix 프론트엔드의 현재 사용자 이름으로 미리 채워짐). 이 사용자 이름은 LDAP 서버에 존재해야 합니다. 테스트 사용자를 인증할 수 없는 경우 Zabbix는 LDAP 인증을 활성화하지 않습니다. |
| User password | 테스트할 LDAP 사용자 비밀번호. |