2 LDAP

개요

외부 LDAP 인증을 사용하여 사용자 이름과 비밀번호를 확인할 수 있습니다.

Zabbix LDAP 인증은 최소한 Microsoft Active Directory와 OpenLDAP에서 작동합니다.

LDAP 로그인만 구성된 경우, 사용자는 여전히 Zabbix에 존재해야 하지만 해당 Zabbix 비밀번호는 사용되지 않습니다. 인증이 성공하면 Zabbix는 로컬 사용자 이름을 LDAP에서 반환된 사용자 이름 속성과 일치시킵니다.

사용자 프로비저닝

LDAP 사용자를 위한 JIT(적시) 사용자 프로비저닝을 구성할 수 있습니다. 이 경우 Zabbix에 사용자가 이미 존재할 필요가 없습니다. 사용자가 처음으로 Zabbix에 로그인할 때 사용자 계정이 생성될 수 있습니다.

LDAP 사용자가 LDAP 로그인과 비밀번호를 입력하면, Zabbix는 이 사용자가 존재하는지 기본 LDAP 서버를 확인합니다. 사용자가 존재하고 아직 Zabbix에 계정이 없다면, Zabbix에서 새 사용자가 생성되고 사용자가 로그인할 수 있습니다.

JIT 프로비저닝을 통해 생성된 사용자는 생성 시점에 기본값으로 설정된 LDAP 서버(디렉토리)와 연결됩니다. 나중에 기본 LDAP 서버를 변경해도 이미 프로비저닝된 사용자와 연결된 LDAP 서버는 변경되거나 업데이트되지 않습니다.

JIT 프로비저닝이 활성화된 경우, 디프로비저닝된 사용자를 위한 사용자 그룹을 인증 탭에서 지정해야 합니다.

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 인증이 필요한 프로비저닝 작업(예: 지금 프로비저닝 버튼 사용 또는 사용자가 적극적으로 로그인하지 않았을 때 백그라운드 프로비저닝 실행)은 인증할 수 없으므로 작동하지 않습니다. 직접 사용자 바인딩의 프로비저닝 및 업데이트는 사용자가 로그인하는 순간에만 발생합니다.

여러 서버

필요한 경우 여러 LDAP 서버를 정의할 수 있습니다. 예를 들어, 다른 사용자 그룹을 인증하기 위해 다른 서버를 사용할 수 있습니다. LDAP 서버가 구성되면 사용자 그룹 구성에서 해당 사용자 그룹에 필요한 LDAP 서버를 선택할 수 있습니다.

사용자가 여러 사용자 그룹과 여러 LDAP 서버에 속한 경우, 이름순으로 오름차순 정렬된 LDAP 서버 목록에서 첫 번째 서버가 인증에 사용됩니다.

설정

설정 매개변수:

매개변수 설명
LDAP 인증 활성화 LDAP 인증을 활성화하려면 체크박스를 선택하세요.
JIT 프로비저닝 활성화 JIT 프로비저닝을 활성화하려면 체크박스를 선택하세요.
서버 LDAP 서버를 구성하려면 추가를 클릭하세요 (아래 LDAP 서버 구성 참조).
대소문자 구분 로그인 사용자명의 대소문자 구분 로그인을 비활성화하려면 체크박스를 해제하세요 (기본값은 활성화).
대소문자 구분 로그인을 비활성화하면 예를 들어 Zabbix 사용자가 "Admin" 또는 "ADMIN"이어도 "admin"으로 로그인할 수 있습니다.
대소문자 구분 로그인이 비활성화되어 있고 유사한 사용자명을 가진 여러 Zabbix 사용자가 있는 경우 (예: Admin과 admin), 해당 사용자들의 로그인은 "인증 실패: 제공된 자격 증명이 고유하지 않습니다."라는 오류 메시지와 함께 항상 거부됩니다.
프로비저닝 주기 프로비저닝 주기를 설정하세요. 즉, 로그인한 사용자가 프런트엔드에서 작업하는 동안 얼마나 자주 프로비저닝될지 설정합니다.

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 - 멤버 속성을 통해 그룹을 검색하여
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 사용자의 이름을 포함하는 속성을 지정하세요.
User last name attribute 사용자의 성을 포함하는 속성을 지정하세요.
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) BindDNBind 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)는 그룹의 멤버 속성이 uid=User1,ou=Users,dc=example,dc=com인 경우 "User1"과 일치하고 "User1"이 멤버인 그룹을 반환합니다.

인증서 문제가 발생하는 경우, 보안 LDAP 연결(ldaps)이 작동하도록 하려면 /etc/openldap/ldap.conf 구성 파일에 TLS_REQCERT allow 라인을 추가해야 할 수 있습니다. 이는 LDAP 카탈로그에 대한 연결의 보안을 감소시킬 수 있습니다.

실제 사용자 계정(Zabbix 프론트엔드 로그인에 사용)을 사용하는 대신, LDAP에서 최소 권한으로 LDAP 서버에 대한 바인딩 및 검색을 수행할 별도의 LDAP 계정(Bind DN)을 만드는 것이 권장됩니다.
이러한 접근 방식은 더 많은 보안을 제공하고 사용자가 LDAP 서버에서 자신의 비밀번호를 변경할 때 Bind password를 변경할 필요가 없습니다.
위 표에서는 ldap_search 계정 이름입니다.

액세스 테스트

테스트 버튼을 사용하여 사용자 액세스를 테스트할 수 있습니다:

매개변수 설명
로그인 테스트할 LDAP 사용자 이름(Zabbix 프론트엔드의 현재 사용자 이름으로 미리 채워짐). 이 사용자 이름은 LDAP 서버에 존재해야 합니다.
Zabbix는 테스트 사용자를 인증할 수 없는 경우 LDAP 인증을 활성화하지 않습니다.
사용자 비밀번호 테스트할 LDAP 사용자 비밀번호입니다.

다음은 무엇인가요?