SAML

Zabbix v7.4번역일: 2026-09-09원본 보기

개요

SAML 2.0 인증을 Zabbix 로그인에 사용할 수 있습니다.

SAML 로그인이 JIT 사용자 프로비저닝 없이 구성된 경우, 사용자는 Zabbix에 이미 존재해야 하며 사용자의 Zabbix 비밀번호는 인증에 사용되지 않습니다. SAML 인증이 성공하면 Zabbix는 SAML에서 받은 username 속성을 기존 로컬 Zabbix 사용자 이름과 매칭합니다.

사용자 프로비저닝

SAML 사용자에 대해 JIT(just-in-time) 사용자 프로비저닝을 구성할 수 있습니다. 이 경우 사용자가 Zabbix에 미리 존재할 필요가 없습니다. 사용자 계정은 사용자가 처음 Zabbix에 로그인할 때 생성됩니다.

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

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 프로비저닝을 사용하는 경우에는 싱글 사인온만 가능합니다.

ID 공급자 설정

Zabbix와 함께 작동하려면 SAML ID 공급자(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. 개인 키와 인증서는 zabbix.conf.php에서 사용자 지정 경로를 제공하지 않는 한 ui/conf/certs/에 저장해야 합니다.

기본적으로 Zabbix는 다음 위치를 찾습니다:

  • ui/conf/certs/sp.key - SP 개인 키 파일
  • ui/conf/certs/sp.crt - SP 인증서 파일
  • ui/conf/certs/idp.crt - IDP 인증서 파일

2. 가장 중요한 설정은 모두 Zabbix 프론트엔드에서 구성할 수 있습니다. 다만 구성 파일에서 추가 설정을 지정할 수도 있습니다.

Zabbix 프론트엔드에서 사용 가능한 구성 파라미터:

파라미터 설명
Enable SAML authentication SAML 인증을 활성화하려면 체크박스를 표시하십시오.
Enable JIT provisioning 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 응답에서 특정 name 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
Case-sensitive login 사용자 이름에 대해 대소문자 구분 로그인을 비활성화하려면 체크박스 표시를 해제하십시오(기본적으로 활성화되어 있습니다).
대소문자 구분 로그인을 비활성화하면 예를 들어 Zabbix 사용자가 "Admin" 또는 "ADMIN"이더라도 "admin"으로 로그인할 수 있습니다.
대소문자 구분 로그인이 비활성화되어 있고 유사한 사용자 이름을 가진 Zabbix 사용자가 여러 명 있는 경우(예: Admin과 admin), 해당 사용자의 로그인은 항상 다음 오류 메시지와 함께 거부됩니다: "Authentication failed: supplied credentials are not unique."
Configure JIT provisioning JIT 사용자 프로비저닝 관련 옵션을 표시하려면 이 체크박스를 표시하십시오.
Group name attribute JIT 사용자 프로비저닝을 위한 그룹 이름 속성을 지정합니다.
User name attribute JIT 사용자 프로비저닝을 위한 사용자 이름(이름) 속성을 지정합니다.
User last name attribute JIT 사용자 프로비저닝을 위한 사용자 성(姓) 속성을 지정합니다.
User group mapping SAML 사용자 그룹 패턴을 Zabbix 사용자 그룹 및 사용자 역할에 매핑합니다.
프로비저닝된 사용자가 Zabbix에서 받을 사용자 그룹/역할을 결정하는 데 필요합니다.
매핑을 추가하려면 Add를 클릭하십시오.
SAML group pattern 필드는 와일드카드를 지원합니다. 그룹 이름은 기존 그룹과 일치해야 합니다.
SAML 사용자가 여러 Zabbix 사용자 그룹과 일치하면 해당 사용자는 모든 그룹의 멤버가 됩니다.
사용자가 여러 Zabbix 사용자 역할과 일치하면 그중 가장 높은 권한 수준을 받게 됩니다.
Media type mapping 알림 전송을 위해 사용자의 SAML 미디어 속성(예: 이메일)을 Zabbix 사용자 미디어에 매핑합니다.
Enable SCIM provisioning 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(옵션 1개만 해당)
      • responseUrl
    • certFingerprint
    • certFingerprintAlgorithm
    • x509certMulti
  • security(이 목록에 지정된 옵션만 해당)
    • signMetadata
    • wantNameId
    • requestedAuthnContext
    • requestedAuthnContextComparison
    • wantXMLValidation
    • relaxDestinationValidation
    • destinationStrictlyMatches
    • rejectUnsolicitedResponsesWithInResponseTo
    • signatureAlgorithm
    • digestAlgorithm
    • lowercaseUrlencoding

다른 모든 옵션은 데이터베이스에서 가져오며 재정의할 수 없습니다. debug 옵션은 무시됩니다.

또한 Zabbix UI가 프록시나 로드 밸런서 뒤에 있는 경우, 사용자 지정 use_proxy_headers 옵션을 사용할 수 있습니다:

  • false(기본값) - 옵션 무시;
  • true - 기본 URL을 구성할 때 X-Forwarded-* HTTP 헤더 사용.

로드 밸런서가 TLS/SSL을 사용하고 Zabbix는 사용하지 않는 방식으로 로드 밸런서를 통해 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