3 SAML
원본 보기3 SAML
개요
SAML 2.0 인증을 사용하여 Zabbix에 로그인할 수 있습니다.
SAML 로그인만 구성된 경우, 사용자는 Zabbix에 존재해야 하지만, Zabbix 비밀번호는 사용되지 않습니다. 인증이 성공하면 Zabbix는 로컬 사용자명과 SAML에서 반환된 사용자명 속성을 일치시킵니다.
사용자 프로비저닝
SAML 사용자를 위한 JIT(just-in-time) 사용자 프로비저닝을 구성할 수 있습니다. 이 경우 사용자가 Zabbix에 이미 존재할 필요가 없습니다. 사용자가 Zabbix에 처음 로그인할 때 사용자 계정이 생성될 수 있습니다.
JIT 프로비저닝이 활성화된 경우, 프로비저닝 해제된 사용자를 위한 사용자 그룹을 인증 탭에서 지정해야 합니다.
JIT 프로비저닝과 함께 SCIM(System for Cross-domain Identity Management) 프로비저닝도 활성화하고 구성할 수 있습니다 - 사용자 프로비저닝으로 생성된 사용자들을 위한 지속적인 사용자 계정 관리입니다. SCIM 프로비저닝은 Zabbix 인증을 위해 (Super admin 권한을 가진) Zabbix API 토큰이 필요합니다.
예를 들어, 사용자가 한 SAML 그룹에서 다른 그룹으로 이동되면, 해당 사용자는 Zabbix에서도 한 그룹에서 다른 그룹으로 이동됩니다; 사용자가 SAML 그룹에서 제거되면, 해당 사용자는 Zabbix의 그룹에서도 제거되고, 다른 그룹에 속하지 않는 경우 프로비저닝 해제된 사용자 그룹에 추가됩니다.
SCIM이 활성화되고 구성되면, SAML 사용자는 Zabbix에 로그인하는 순간 프로비저닝되고 SAML의 변경사항에 따라 지속적으로 업데이트됩니다. 이미 존재하는 SAML 사용자는 프로비저닝되지 않으며, 프로비저닝된 사용자만 업데이트됩니다. 사용자가 프로비저닝되거나 업데이트될 때는 유효한 미디어만 사용자에게 추가됩니다.
SCIM이 활성화되지 않은 경우, SAML 사용자는 Zabbix에 로그인하는 순간 프로비저닝되고 (나중에 업데이트됩니다).
SAML 인증이 활성화된 경우, 사용자는 로컬 로그인과 SAML 단일 로그인 중에서 선택할 수 있습니다. JIT 프로비저닝을 사용하는 경우에는 단일 로그인만 가능합니다.
신원 공급자 설정
Zabbix와 작업하려면 SAML 신원 공급자(onelogin.com, auth0.com, okta.com 등)를 다음과 같이 구성해야 합니다:
- Assertion Consumer URL은
<path_to_zabbix_ui>/index_sso.php?acs로 설정해야 합니다 - Single Logout URL은
<path_to_zabbix_ui>/index_sso.php?sls로 설정해야 합니다
<path_to_zabbix_ui> 예시: https://example.com/zabbix/ui,
http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix
Zabbix 설정
프론트엔드에서 SAML 인증을 사용하려면 php-openssl을 설치해야 합니다.
SAML 인증을 사용하려면 Zabbix를 다음과 같이 구성해야 합니다:
1. 개인 키와 인증서는 ui/conf/certs/에 저장해야 하며, 사용자 지정 경로는 zabbix.conf.php에서 제공할 수 있습니다.
기본적으로 Zabbix는 다음 위치에서 찾습니다:
- ui/conf/certs/sp.key - SP 개인 키 파일
- ui/conf/certs/sp.crt - SP 인증서 파일
- ui/conf/certs/idp.crt - IDP 인증서 파일
2. 가장 중요한 설정은 모두 Zabbix 프론트엔드에서 구성할 수 있습니다. 하지만 구성 파일에서 추가 설정을 지정할 수도 있습니다.

Zabbix 프론트엔드에서 사용 가능한 구성 매개변수:
| 매개변수 | 설명 |
|---|---|
| SAML 인증 활성화 | SAML 인증을 활성화하려면 체크박스를 표시하세요. |
| JIT 프로비저닝 활성화 | JIT 사용자 프로비저닝을 활성화하려면 체크박스를 표시하세요. |
| IDP entity ID | SAML ID 제공업체 내의 고유 엔티티 식별자입니다. |
| SSO service URL | 로그인할 때 사용자가 리디렉션될 URL입니다. |
| SLO service URL | 로그아웃할 때 사용자가 리디렉션될 URL입니다. 비워두면 SLO 서비스가 사용되지 않습니다. |
| Username attribute | Zabbix에 로그인할 때 사용자명으로 사용될 SAML 속성입니다. 지원되는 값의 목록은 ID 제공업체에 의해 결정됩니다. 예시: uid userprincipalname samaccountname username userusername urn:oid:0.9.2342.19200300.100.1.1 urn:oid:1.3.6.1.4.1.5923.1.1.1.13 urn:oid:0.9.2342.19200300.100.1.44 |
| SP entity ID | 고유 서비스 제공업체 식별자입니다 (일치하지 않으면 작업이 거부됩니다). URL 또는 임의의 데이터 문자열을 지정할 수 있습니다. |
| SP name ID format | 응답에서 특정 이름 ID 형식을 요청합니다. 예시: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified urn:oasis:names:tc:SAML:2.0:nameid-format:transient |
| Sign | SAML 서명을 활성화할 엔티티를 선택하려면 체크박스를 표시하세요: Messages Assertions AuthN requests Logout requests Logout responses |
| Encrypt | SAML 암호화를 활성화할 엔티티를 선택하려면 체크박스를 표시하세요: Name ID Assertions |
| 대소문자 구분 로그인 | 사용자명에 대한 대소문자 구분 로그인을 비활성화하려면 체크박스를 해제하세요 (기본적으로 활성화됨). 대소문자 구분 로그인을 비활성화하면 Zabbix 사용자가 "Admin" 또는 "ADMIN"이어도 "admin"으로 로그인할 수 있습니다. 대소문자 구분 로그인이 비활성화되고 비슷한 사용자명(예: Admin과 admin)을 가진 여러 Zabbix 사용자가 있는 경우, 해당 사용자들의 로그인은 항상 "인증 실패: 제공된 자격 증명이 고유하지 않습니다."라는 오류 메시지와 함께 거부됩니다. |
| JIT 프로비저닝 구성 | JIT 사용자 프로비저닝과 관련된 옵션을 표시하려면 이 체크박스를 표시하세요. |
| Group name attribute | JIT 사용자 프로비저닝을 위한 그룹 이름 속성을 지정합니다. |
| User name attribute | JIT 사용자 프로비저닝을 위한 사용자 이름 속성을 지정합니다. |
| User last name attribute | JIT 사용자 프로비저닝을 위한 사용자 성 속성을 지정합니다. |
| 사용자 그룹 매핑 | SAML 사용자 그룹 패턴을 Zabbix 사용자 그룹 및 사용자 역할에 매핑합니다. 이는 프로비저닝된 사용자가 Zabbix에서 어떤 사용자 그룹/역할을 가질지 결정하는 데 필요합니다. 추가를 클릭하여 매핑을 추가합니다. SAML group pattern 필드는 와일드카드를 지원합니다. 그룹 이름은 기존 그룹과 일치해야 합니다. SAML 사용자가 여러 Zabbix 사용자 그룹과 일치하면, 사용자는 모든 그룹의 구성원이 됩니다. 사용자가 여러 Zabbix 사용자 역할과 일치하면, 사용자는 그중 가장 높은 권한 수준을 갖게 됩니다. |
| 미디어 타입 매핑 | 사용자의 SAML 미디어 속성(예: 이메일)을 알림 전송을 위한 Zabbix 사용자 미디어에 매핑합니다. |
| SCIM 프로비저닝 활성화 | SCIM 2.0 프로비저닝을 활성화하려면 이 체크박스를 표시하세요. |
다음을 사용하여 Zabbix에 로그인 및 사용자 프로비저닝을 위한 SAML ID 제공업체 구성 예시를 참조하세요:
SCIM 프로비저닝에 대한 참고사항
SCIM 프로비저닝의 경우 ID 공급자 측에서 Zabbix 프론트엔드 경로를 지정하고 api_scim.php를 추가하세요:
https://<path-to-zabbix-ui>/api_scim.php
Zabbix에서 사용되는 사용자 속성(사용자명, 사용자 이름, 사용자 성, 미디어 속성)은 사용자 정의 속성으로 추가해야 하며, 필요한 경우 외부 네임스페이스는 사용자 스키마와 동일해야 합니다: urn:ietf:params:scim:schemas:core:2.0:User.
고급 설정
추가적인 SAML 매개변수는 Zabbix 프론트엔드 구성 파일(zabbix.conf.php)에서 구성할 수 있습니다:
- $SSO['SP_KEY'] = '<SP 개인 키 파일 경로>';
- $SSO['SP_CERT'] = '<SP 인증서 파일 경로>';
- $SSO['IDP_CERT'] = '<IDP 인증서 파일 경로>';
- $SSO['SETTINGS']
$SSO['SETTINGS'] 배열은 Zabbix와 함께 제공되는 SAML PHP Toolkit 라이브러리에서 요구하는 동일한 구조를 따라야 합니다.
사용 가능한 구성 옵션의 전체 설명은 공식 라이브러리 문서를 참조하세요.
$SSO['SETTINGS']의 일부로 설정할 수 있는 옵션은 다음과 같습니다:
- strict
- baseurl
- compress
- contactPerson
- organization
- sp (이 목록에 지정된 옵션만)
- attributeConsumingService
- x509certNew
- idp (이 목록에 지정된 옵션만)
- singleLogoutService (한 가지 옵션만)
- responseUrl
- certFingerprint
- certFingerprintAlgorithm
- x509certMulti
- singleLogoutService (한 가지 옵션만)
- security (이 목록에 지정된 옵션만)
- signMetadata
- wantNameId
- requestedAuthnContext
- requestedAuthnContextComparison
- wantXMLValidation
- relaxDestinationValidation
- destinationStrictlyMatches
- rejectUnsolicitedResponsesWithInResponseTo
- signatureAlgorithm
- digestAlgorithm
- lowercaseUrlencoding
다른 모든 옵션은 데이터베이스에서 가져오며 재정의할 수 없습니다. debug 옵션은 무시됩니다.
또한 Zabbix UI가 프록시나 로드 밸런서 뒤에 있는 경우, 사용자 정의 use_proxy_headers 옵션을 사용할 수 있습니다:
- false (기본값) - 옵션을 무시합니다;
- true - 기본 URL 구성을 위해 X-Forwarded-* HTTP 헤더를 사용합니다.
Zabbix 인스턴스에 연결하기 위해 로드 밸런서를 사용하는데, 로드 밸런서는 TLS/SSL을 사용하지만 Zabbix는 그렇지 않은 경우, 다음과 같이 'baseurl', 'strict' 및 'use_proxy_headers' 매개변수를 지정해야 합니다:
$SSO['SETTINGS'] = [
'strict' => false,
'baseurl' => 'https://zabbix.example.com/zabbix/',
'use_proxy_headers' => true
];
구성 예제:
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];
Kerberos/ADFS를 사용한 프론트엔드 구성
Zabbix 프론트엔드 구성 파일(zabbix.conf.php)을 사용하여 Kerberos 인증 및 ADFS와 함께 SSO를 구성할 수 있습니다:
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => [
'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
],
'requestedAuthnContextComparison' => 'exact'
]
];
이 경우, SAML 구성의 SP name ID 필드에 다음을 설정하세요:
urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified