Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

3 認証

概要

管理 → 認証セクションでは、Zabbixおよび内部パスワード要件に対するグローバルユーザー認証方法を指定できます。使用可能な方法は、内部,HTTP,LDAPおよびSAML認証です。

デフォルト認証

デフォルトでは、Zabbixはすべてのユーザーに内部Zabbix認証を使用します。デフォルトの方法をシステム全体でLDAPに変更したり、特定のユーザーグループに対してのみLDAP認証を有効にしたりすることもできます。

LDAPをすべてのユーザーのデフォルトの認証方法として設定するには、LDAPタブに移動して認証パラメーターを構成してから、認証タブに戻り、デフォルト認証セレクターをLDAPに切り替えます。

認証方法はユーザーグループレベルで微調整できることに注意してください。 LDAP認証がグローバルに設定されている場合でも、一部のユーザーグループをZabbixで認証することもできます。これらのグループではフロントエンドアクセスを内部に設定する必要があります。逆に、内部認証をグローバルに使用する場合は、LDAP認証の詳細を指定して、フロントエンドアクセスがLDAPに設定されている特定のユーザーグループに使用できます。ユーザーが少なくともLDAP認証を使用している1つのユーザーグループに含まれている場合、このユーザーは内部認証方式を使用できません。

デフォルトの認証方法に加えてHTTPおよびSAML 2.0認証方法を使用できます。

認証

認証タブでは、Zabbix内部ユーザーのカスタムパスワード要件を定義できます。

次のパスワードポリシーオプションを設定できます。

パラメータ 説明
最小パスワード長 デフォルトではパスワードの最小長は8に設定されています。設定可能範囲:1〜70。 72文字を超えるパスワードは切り捨てられます。
パスワード必須項目 1つまたは複数のチェックボックスをオンにして、パスワードで指定した文字を使用するよう強制します。
-英字の大文字と小文字
-数字
-特殊記号

疑問符にカーソルを合わせると各オプションの文字リストを含むヒントを表示します。
推測されやすいパスワードの回避 チェックボックスがオンの場合、パスワードは次の要件に基づいてチェックされます。
-ユーザーの苗字、名前、またはユーザー名を含まないこと
-共通またはコンテキスト固有のパスワードの1つではないこと。

共通およびコンテキスト固有のパスワードのリストは、NCSCの"トップ100kパスワード"のリスト、SecListの"トップ1Mパスワード"のリスト、およびZabbixコンテキスト固有のパスワードのリストから自動的に生成されます。内部ユーザーは、このリストに含まれるパスワードを設定することはできません。このようなパスワードは、一般的に使用されているため、脆弱であると見なされるためです。

パスワードの複雑さの要件を変更しても、既存のユーザーパスワードには影響しませんが、既存のユーザーが管理 → ユーザーメニューからパスワードを変更する場合、新しいパスワードは現在の要件を満たす必要があります。要件のリストを含むヒントが、ユーザープロファイルおよびユーザー構成フォームPasswordフィールドの横に表示されます。

HTTP認証の設定

HTTPまたはWebサーバーベースの認証(例:Basic認証、NTLM / Kerberos)を使用して、ユーザー名とパスワードを確認できます。ユーザーはZabbixにも存在する必要がありますが、そのZabbixパスワードは使用されないことに注意してください。

オンにする前に、Webサーバー認証が構成され、正しく機能していることを確認してください。

設定値:

パラメーター 説明
HTTP認証の有効化 チェックボックスをオンにすると、HTTP認証が有効になります。
デフォルトのログイン画面 認証されていないユーザーをどの画面に誘導するかを指定します:
Zabbixのログイン画面 - 標準のZabbixログインページ
HTTPのログイン画面 - HTTPログインページ
index_http.phpページに対してのみWebサーバーベースの認証を有効にすることをお勧めします。 デフォルトのログイン画面が'HTTPログインページ'に設定されている場合、Webサーバー認証モジュールが$_SERVER変数に有効なユーザーログインを設定すると、ユーザーは自動的にログインします。
サポートされている$_SERVERキーはPHP_AUTH_USER, REMOTE_USER,AUTH_USERです。
ドメイン名の削除 ユーザー名から削除する必要があるドメイン名のカンマ区切りのリスト。
例: comp,any - ユーザー名が'[email protected]','comp\Admin'の場合、ユーザーは'Admin'としてログインします。ユーザー名が'notacompany\Admin'の場合、ログインは拒否されます。
ログイン時に大文字小文字を区別 ユーザー名の大文字と小文字を区別するログイン(デフォルトで有効)を無効にするには、チェックボックスをオフにします。
例:大文字と小文字を区別するログインを無効にすると、ユーザーが'Admin'でログインしたの場合でも'ADMIN'ユーザーでログインします。
大文字と小文字を区別するログインを無効にすると、Zabbixデータベースに同様のユーザー名を持つ複数のユーザーが存在する場合 (例:Admin, admin)、ログインが拒否されることに注意してください。

Webサーバー認証の場合、すべてのユーザー(フロントエンドアクセス がLDAP/Internalに設定されている場合でも)は、ZabbixではなくWebサーバーによって認証されます。

HTTP資格情報(HTTPログインフォームがデフォルトとして設定されている)を使用してログインできず、401エラーが発生する内部ユーザーは、Basic認証ディレクティブに ErrorDocument 401/index.php?form=default行を追加すると、通常のZabbixログイン画面にリダイレクトされます。

LDAP認証の設定

外部LDAP認証を使用して、ユーザー名とパスワードを確認できます。ユーザーはZabbixにも存在する必要がありますが、そのZabbixパスワードは使用されないことに注意してください。

Zabbix LDAP認証は、少なくともMicrosoft Active DirectoryとOpen LDAPで機能します。

設定値:

パラメータ 説明
LDAP認証の有効化 チェックボックスをオンにすると、LDAP認証が有効になります。
LDAPホスト LDAPサーバーの名前。例:ldap://ldap.zabbix.com
安全なLDAPサーバーの場合は、ldapsプロトコルを使用します。
ldaps://ldap.zabbix.com
OpenLDAP 2.x.x以降では、フルldap:// hostname:portまたはldaps:// hostname:port形式のLDAPURIを使用できます。
ポート LDAPサーバーのポート。デフォルトは389です。
安全なLDAP接続の場合、ポート番号は通常636です。
完全なLDAPURIを使用する場合は使用されません。
Base DN 検索アカウントへの基本パス:
ou=Users、ou=system(Open LDAPの場合)、
DC=company、DC=com(Microsoft Active Directoryの場合)
検索の属性 検索に使用される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の場合)
匿名バインディングもサポートされています。
ログイン時に大文字小文字を区別 ユーザー名の大文字と小文字を区別するログイン(デフォルトで有効)を無効にするには、チェックボックスをオフにします。
例:大文字と小文字を区別するログインを無効にすると、ユーザーが「Admin」でログインしたの場合でも「ADMIN」ユーザーでログインします。
大文字と小文字を区別するログインを無効にすると、Zabbixデータベースに同様のユーザー名を持つ複数のユーザーが存在する場合 (例:Admin, admin)、ログインが拒否されることに注意してください。
Bind password LDAPサーバーをバインドおよび検索するためのアカウントのLDAPパスワード。
認証のテスト テスト用セクションのヘッダー
ログイン テストユーザー(デフォルトでは現在ログイン中のユーザー)の名前。このユーザー名はLDAPサーバーに存在する必要があります。
Zabbixは、テストユーザーを認証できない場合、LDAP認証をアクティブにしません。
ユーザーのパスワード テストユーザーのLDAPパスワード。

証明書に問題がある場合、安全なLDAP接続(ldaps)を機能させるには /etc/openldap/ldap.conf設定ファイルにTLS_REQCERTallow行を追加する必要がある場合がありますが、 LDAPカタログへの接続のセキュリティが低下する可能性があります。

別のLDAPアカウント(Bind DN)を作成して、(Zabbixフロントエンドへのログインに使用している)実際のユーザーアカウントを使用する代わりに、LDAPで最小限の権限でLDAPサーバー上でバインドと検索を実行することをお勧めします。、ユーザーがLDAPサーバーで自分のパスワードを変更するときにバインドパスワードを変更する必要はありません。、* ldap_search*アカウント名です。

SAML認証の設定

SAML 2.0認証を使用して、Zabbixにサインインできます。ユーザーはZabbixに存在する必要がありますが、そのZabbixパスワードは使用されないことに注意してください。認証が成功すると、Zabbixはローカルユーザー名をSAMLによって返されたユーザー名属性と照合します。

SAML認証が有効になっている場合、ユーザーはローカルでログインするか、SAMLシングルサインオンを介してログインするかを選択できます。

IDプロバイダーの設定

SAML IDプロバイダーであるZabbix((onelogin.com, auth0.com,okta.com,など)を次の方法で設定する必要があります。

  • アサーションコンシューマURL<path_to_zabbix_ui>/index_sso.php?acsに設定する必要があります
  • シングルログアウト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 フロントエンドで利用可能な設定パラメータ:

パラメータ 説明
SAML認証の有効化 チェックボックスをマークして、SAML 認証を有効にします。
IdPエンティティID SAML ID プロバイダーのユニーク識別子。
SSOサービスURL ログイン時にユーザーがリダイレクトされる URL。
SLOサービスURL ログアウト時にユーザーがリダイレクトされる URL。 空のままにすると、SLO サービスは使用されません。
//ユーザー名の属性// 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のエンティティID SAML サービス プロバイダーのユニーク識別子。
SPのNameIDフォーマット 使用する名前識別子の形式を定義します。

例:
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos
urn:oasis:names:tc:SAML:2.0:nameid-format:entity
サイン チェックボックスをマークして、SAML 署名を有効にする必要があるエンティティを選択します。
メッセージ
アサーション
AuthNリクエスト
ログアウトリクエスト
ログアウトレスポンス
暗号化 チェックボックスをマークして、SAML 暗号化を有効にするエンティティを選択します:
アサーション
NameID
ログイン時に大文字小文字を区別 チェックボックスをマークして、ユーザー名の大文字と小文字を区別するログインを有効にします (デフォルトでは無効)。
例:大文字と小文字を区別するログインを無効にすると、たとえば、Zabbix ユーザーが'Admin'であっても'ADMIN'ユーザーでログインします。
大文字と小文字を区別するログインを無効にすると、Zabbix データベースに類似したユーザー名 (Admin、admin など) を持つ複数のユーザーが存在する場合、ログインが拒否されることに注意してください。
高度な設定

追加のSAMLパラメーターは、Zabbixフロントエンド設定ファイル(zabbix.conf.php)で設定できます。 Additional SAML parameters can be configured in the Zabbix frontend configuration file (zabbix.conf.php):

  • $SSO['SP_KEY'] = '<SP 秘密鍵ファイルへのパス>';
  • $SSO['SP_CERT'] = '<SP 証明書ファイルへのパス>';
  • $SSO['IDP_CERT'] = '<IDP 証明書ファイルへのパス>';
  • $SSO['SETTINGS']

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

$SSO['SETTINGS']の一部として設定できるのは、次のオプションです。

  • strict
  • baseurl
  • compress
  • contactPerson
  • organization
  • sp (only options specified in this list)
    • attributeConsumingService
    • x509certNew
  • idp (only options specified in this list)
    • singleLogoutService (only one option)
      • responseUrl
    • certFingerprint
    • certFingerprintAlgorithm
    • x509certMulti
  • security (only options specified in this list)
    • signMetadata
    • wantNameId
    • requestedAuthnContext
    • requestedAuthnContextComparison
    • wantXMLValidation
    • relaxDestinationValidation
    • destinationStrictlyMatches
    • rejectUnsolicitedResponsesWithInResponseTo
    • signatureAlgorithm
    • digestAlgorithm
    • lowercaseUrlencoding

他のすべてのオプションはデータベースから取得され、オーバーライドすることはできません。 debugオプションは無視されます。

さらに、Zabbix UIがプロキシまたはロードバランサーの背後にある場合は、カスタムのuse_proxy_headersオプションを使用できます。

  • false (default) - オプションを無効に;
  • true - use X-Forwarded-* ベースURLを構築するための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',
               // ...
           ],
           // ...
       ];