Microsoft Entra ID を使用した SAML の設定

概要

このセクションでは、SAML 2.0認証を使用してMicrosoft Entra ID(旧Microsoft Azure Active Directory)からZabbixへのシングルサインオンおよびユーザーのプロビジョニングを設定するためのガイドラインを提供します。

Microsoft Entra IDの設定

アプリケーションの作成

1. Microsoft Entra ID で Microsoft Entra admin center にログインします。 テスト目的で、Microsoft Entra ID に無料試用アカウントを作成できます。

2. Microsoft Entra admin center で、Applications > Enterprise applications > New application > Create your own application を選択します。

3. アプリの名前を追加し、Integrate any other application... オプションを選択します。 その後、Create をクリックします。

シングルサインオンの設定

1. アプリケーションページで Set up single sign on に移動し、Get started をクリックします。 次に、SAML を選択します。

2. Basic SAML Configuration を編集します。

  • Identifier (Entity ID) に、Microsoft Entra ID でアプリを識別するための一意の名前を設定します。例: zabbix
  • Reply URL (Assertion Consumer Service URL) に、Zabbixのシングルサインオンエンドポイントを設定します: https://<path-to-zabbix-ui>/index_sso.php?acs

https が必須であることに注意してください。 Zabbixでこれを使用するには、Webインターフェース設定ファイルに次の行を追加します。

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

3. Attributes & Claims を編集します。 Zabbixに渡すすべての属性(user_name、user_lastname、user_email、user_mobile、groups)を追加する必要があります。

属性名は任意です。 異なる属性名を使用できますが、ZabbixのSAML設定における対応するフィールド値と一致している必要があります。

  • Add new claim をクリックして属性を追加します。

  • Add a group claim をクリックして、Zabbixにグループを渡すための属性を追加します。

このクレームでは、選択した Source attribute によって、グループIDではなくグループ名がZabbixに渡されることが重要です。 そうしないと、JITユーザープロビジョニングが正しく機能しません。

4. SAML Certificates で、Entra IDが提供するBase64証明書をダウンロードし、ZabbixのWebインターフェースのインストール先にある conf/certs に配置します(場所は、Zabbixのインストール元やOSによって異なる場合があります)。

次のコマンドを実行して、権限を644に設定します。

chmod 644 entra.cer

5. Entra IDの Set up <your app name> に表示される値を使用して、ZabbixのSAML認証を設定します(次のセクションを参照)。

Zabbixの設定

1. Zabbixで、SAML設定に移動し、Entra IDの設定に基づいて設定オプションを入力します。

Zabbixのフィールド Entra IDの設定フィールド サンプル値
IdPエンティティID Microsoft Entra識別子
SSOサービスURL ログインURL
SLOサービスURL ログアウトURL
SPエンティティID 識別子(エンティティID)
ユーザー名属性 カスタム属性(クレーム) user_email
グループ名属性 カスタム属性(クレーム) groups
ユーザー名属性 カスタム属性(クレーム) user_name
ユーザー姓属性 カスタム属性(クレーム) user_lastname

2.Entra IDから提供されたBase64証明書を追加します。

Webインターフェース設定ファイルzabbix.conf.php)で $SSO['CERT_STORAGE'] = 'database' が設定されている場合は、SAML設定中にWebインターフェースで証明書のテキストを貼り付けるか、証明書ファイルをアップロードできます。ファイルシステム上にファイルを用意する必要はありません。

設定ファイルで $SSO['CERT_STORAGE'] = 'file' が設定されている場合は、証明書をファイルシステム上(デフォルトでは ui/conf/certs、または設定ファイルで設定されたパス)で利用できるようにする必要があります。また、Webインターフェースは証明書をデータベースに保存しません。 $SSO['CERT_STORAGE'] が設定されていないか、コメントアウトされている場合は、ファイルストレージが使用され、証明書は ui/conf/certs から読み込まれることに注意してください。

ユーザーグループのマッピングも設定する必要があります。 メディアのマッピングは任意です。

3. 更新ボタンをクリックして、これらの設定を保存します。

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

1. Entra ID アプリケーションページで、メインメニューから Provisioning ページを開きます。
Get started をクリックし、Automatic provisioning mode を選択します。

  • Tenant URL に次の値を設定します: https://<path-to-zabbix-ui>/api_scim.php
  • Secret token に、Super admin 権限を持つ Zabbix API トークンを入力します。
  • 接続が確立されているか確認するには、Test connection をクリックします。

2. 次に、SCIM で Zabbix に渡されるすべての属性を追加できます。
そのためには、Mappings をクリックし、続いて Provision Microsoft Entra ID Users をクリックします。

Attribute Mapping リストの下部で Show advanced options を有効にし、Edit attribute list for customappsso をクリックします。

属性リストの下部に、型が 'String' の独自の属性を追加します。

リストを保存します。

3. 次に、追加した属性のマッピングを追加できます。
Attribute Mapping リストの下部で Add New Mapping をクリックし、以下のようにマッピングを作成します。

すべてのマッピングを追加したら、マッピングのリストを保存します。

4. Zabbix へのユーザープロビジョニングの前提条件として、Entra ID でユーザーとグループを設定しておく必要があります。

そのためには、Microsoft Entra admin center に移動し、各 Users および Groups ページでユーザー/グループを追加します。

5. Entra ID でユーザーとグループを作成したら、アプリケーションの Users and groups メニューに移動し、それらをアプリに追加できます。

6. アプリの Provisioning メニューに移動し、Start provisioning をクリックして、ユーザーを Zabbix にプロビジョニングします。

Entra ID の Users PATCH リクエストは、メディアの変更をサポートしていないことに注意してください。

認証リクエストの署名

Entra ID で、署名付き認証リクエストの署名を検証するように設定できます。

これを機能させるには、公開鍵と秘密鍵を作成します。

openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes

権限を設定します。

chown apache /usr/share/zabbix/conf/certs/request-sign.key 
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key

次の設定を追加して、ZabbixのWebインターフェース設定を更新します。

$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';

トラブルシューティング

SAMLを使用してZabbixにログインしようとするユーザーが、すでにMicrosoft Edgeのプロファイルにログインしている場合、Microsoft Edgeブラウザーで認証の問題が発生することがあります。 このような問題の兆候として、ユーザーがMicrosoft Edgeのプライベートモードを使用するとZabbixにログインできる場合があります。

この場合、認証の問題を回避するには、ZabbixのWebインターフェース設定ファイルrequestedAuthnContextfalseに設定する必要があります。

$SSO['SETTINGS'] = [
    'security' => [
        'requestedAuthnContext' => false
    ]
];