You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

3 SAML

概要

SAML 2.0 認証を使用してZabbixにサインインできます。

SAMLサインインのみが設定されている場合、ユーザーはZabbixにも存在している必要がありますが、そのZabbixパスワードは使用されません。 認証が成功すると、ZabbixはSAMLから返されたユーザー名属性とローカルのユーザー名を照合します。

ユーザーのプロビジョニング

SAMLユーザーに対してJIT(ジャストインタイム)ユーザープロビジョニングを設定することができます。 この場合、Zabbixにユーザーがすでに存在している必要はありません。 ユーザーアカウントは、ユーザーが初めてZabbixにログインしたときに作成できます。

JITプロビジョニングが有効な場合、認証タブでプロビジョニング解除されたユーザー用のユーザーグループを指定する必要があります。

JITプロビジョニングに加えて、SCIM(System for Cross-domain Identity Management)プロビジョニング、つまりユーザープロビジョニングによって作成されたユーザーの継続的なユーザーアカウント管理を有効化および設定することも可能です。 SCIMプロビジョニングには、Zabbixへの認証のためにZabbixのAPIトークン(スーパ管理者権限付き)が必要です。

たとえば、ユーザーがあるSAMLグループから別のグループに移動された場合、Zabbixでもユーザーは一方のグループからもう一方のグループに移動されます。ユーザーがSAMLグループから削除された場合、Zabbixでもそのグループから削除され、他のグループに属していない場合はプロビジョニング解除されたユーザー用のユーザーグループに追加されます。

SCIMが有効かつ設定されている場合、SAMLユーザーはZabbixにログインした時点でプロビジョニングされ、その後SAMLの変更に基づいて継続的に更新されます。 すでに存在するSAMLユーザーはプロビジョニングされず、プロビジョニングされたユーザーのみが更新されます。 ユーザーがプロビジョニングまたは更新される際、有効なメディアのみがユーザーに追加されることに注意してください。

SCIMが有効でない場合、SAMLユーザーはZabbixにログインした時点でプロビジョニング(および後で更新)されます。

SAML認証が有効な場合、ユーザーはローカルログインまたはSAMLシングルサインオンのいずれかを選択できます。 JITプロビジョニングを使用する場合、シングルサインオンのみが可能です。

アイデンティティプロバイダーの設定

Zabbixで動作させるためには、SAMLアイデンティティプロバイダー(onelogin.comauth0.comokta.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. SPの秘密鍵と証明書を用意します。 SAMLをフロントエンドで有効にするには、IdP証明書を指定する必要があります(貼り付けまたはファイル選択)。 署名または暗号化オプションを選択した場合は、SP証明書とSP秘密鍵を指定する必要があります。

zabbix.conf.phpで$SSO['CERT_STORAGE'] = 'database'が設定されている場合、SAML設定時にフロントエンドで証明書テキストを貼り付けるか、証明書ファイルをアップロードできます。ファイルシステム上にファイルは不要です。

zabbix.conf.phpで$SSO['CERT_STORAGE'] = 'file'が設定されている場合、証明書はファイルシステム上(デフォルトではui/conf/certsまたはzabbix.conf.phpで設定したパス)に配置する必要があり、フロントエンドは証明書をデータベースに保存しません。 $SSO['CERT_STORAGE']が設定されていない、またはコメントアウトされている場合は、ファイル保存が前提となります。

デフォルトでは、Zabbixは以下の場所を参照します。

  • ui/conf/certs/sp.key - SP秘密鍵ファイル
  • ui/conf/certs/sp.crt - SP証明書ファイル
  • ui/conf/certs/idp.crt - IDP証明書ファイル

証明書情報は、フロントエンドでテキストを貼り付けるかファイルをアップロードしてインポートできます。 一部の環境では利便性のために暗号化されていないインポートも許可されていますが、暗号化された通信の使用を強く推奨します(例:ZabbixフロントエンドでHTTPS/TLSを有効化)。 SAML証明書/鍵をデータベースに保存する場合は、アプリケーションとデータベース間の通信を保護するためにデータベース接続でTLS/SSLを有効化してください。
SAML証明書や秘密鍵を含む可能性のあるデータベースバックアップは暗号化し、バックアップファイルやSAML情報を保存するデータベーステーブルへのアクセスを制限してください。 データベースユーザーの権限は必要最小限に制限してください。

2. 主要な設定はすべてZabbixフロントエンドで設定できます。 ただし、設定ファイルで追加設定を指定することも可能です。

Zabbixフロントエンドで設定可能なパラメータ:

パラメータ 説明
SAML認証を有効 チェックボックスをオンにするとSAML認証が有効になります。
JITプロビジョニングを有効 チェックボックスをオンにするとJITユーザープロビジョニングが有効になります。
IDPエンティティID SAMLアイデンティティプロバイダー内で一意のエンティティ識別子。
SSOサービスURL ログイン時にリダイレクトされるURL。
SLOサービスURL ログアウト時にリダイレクトされるURL。空欄の場合、SLOサービスは使用されません。
ユーザー名属性 Zabbixログイン時にユーザー名として使用するSAML属性。
サポートされる値のリストはアイデンティティプロバイダーによって決まります。

例:
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エンティティID サービスプロバイダーの一意の識別子(不一致の場合は操作が拒否されます)。
URLまたは任意の文字列を指定できます。
SP name IDフォーマット レスポンスで特定の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
IdP証明書 SAMLシングルサインオン(SSO)サービス設定用のサービスプロバイダー(SP)証明書の内容。
SP秘密鍵 SAMLシングルサインオン(SSO)サービス設定用のサービスプロバイダー(SP)秘密鍵の内容。アイデンティティプロバイダー(IdP)との安全な認証とデータ交換を提供します。
SP証明書 SAMLシングルサインオン(SSO)サービス設定用のサービスプロバイダー(SP)証明書の内容。
署名 SAML署名を有効にするエンティティを選択するためにチェックボックスをオンにします:
メッセージ
アサーション
AuthNリクエスト
ログアウトリクエスト
ログアウトレスポンス
暗号化 SAML暗号化を有効にするエンティティを選択するためにチェックボックスをオンにします:
Name ID
アサーション
大文字小文字を区別したログイン ユーザー名の大文字小文字を区別したログインを無効にするにはチェックを外します(デフォルトは有効)。
大文字小文字を区別しない場合、たとえばZabbixユーザーが「Admin」や「ADMIN」でも「admin」でログインできます。
ただし、大文字小文字を区別しない設定で同じようなユーザー名(例:Adminとadmin)が複数存在する場合、これらのユーザーのログインは常に「認証に失敗しました:指定された認証情報が一意ではありません。」というエラーで拒否されます。
JITプロビジョニングを設定 このチェックボックスをオンにすると、JITユーザープロビジョニングに関連するオプションが表示されます。
グループ名属性 JITユーザープロビジョニング用のグループ名属性を指定します。
ユーザー名属性 JITユーザープロビジョニング用のユーザー名属性を指定します。
ユーザー姓属性 JITユーザープロビジョニング用のユーザー姓属性を指定します。
ユーザーグループマッピング SAMLユーザーグループパターンをZabbixユーザーグループおよびユーザーロールにマッピングします。
プロビジョニングされたユーザーがZabbixでどのユーザーグループ/ロールを取得するかを決定するために必要です。
追加をクリックしてマッピングを追加します。
SAMLグループパターンフィールドはワイルドカードをサポートします。グループ名は既存のグループと一致する必要があります。
SAMLユーザーが複数のZabbixユーザーグループに一致する場合、ユーザーはすべてのグループのメンバーになります。
複数のZabbixユーザーロールに一致する場合、ユーザーはその中で最も高い権限レベルを取得します。
メディアタイプマッピング ユーザーのSAMLメディア属性(例:メール)をZabbixユーザーメディアにマッピングし、通知送信に使用します。
SCIMプロビジョニングを有効 このチェックボックスをオンにするとSCIM 2.0プロビジョニングが有効になります。

Zabbixへのサインインやユーザープロビジョニング用のSAMLアイデンティティプロバイダー設定例:

SCIMプロビジョニングに関する注意事項

SCIMプロビジョニングの場合、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']

ZabbixはOneLoginのSAML PHP Toolkitライブラリ(バージョン3.4.1)を使用しています。 $SSO['SETTINGS']セクションの構造は、ライブラリで使用されている構造と同様である必要があります。 設定オプションの説明については、公式ライブラリのドキュメントを参照してください。

$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 - base 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