12 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 で動作させるには、conf/zabbix.conf.php に次の行を追加する必要があります。
$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 に配置します。
次のコマンドを実行して、権限を 644 に設定します。
chmod 644 entra.cer
5. Entra ID の Set up <your app name> にある値を使用して、Zabbix の SAML 認証を設定します(次のセクションを参照してください):

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

| Zabbix field | Setup field in Entra ID | Sample value |
|---|---|---|
| IdP entity ID | Microsoft Entra identifier | |
| SSO service URL | Login URL | |
| SLO service URL | Logout URL | |
| SP entity ID | Identifier (Entity ID) | |
| Username attribute | Custom attribute (claim) | user_email |
| Group name attribute | Custom attribute (claim) | groups |
| User name attribute | Custom attribute (claim) | user_name |
| User last name attribute | Custom attribute (claim) | user_lastname |
2. Entra IDから提供されたBase64証明書を追加します。
zabbix.conf.phpで$SSO['CERT_STORAGE'] = 'database'が設定されている場合、SAML設定時にWebインターフェースで証明書テキストを貼り付けるか、証明書ファイルをアップロードできます。ファイルシステム上にファイルを用意する必要はありません。
zabbix.conf.phpで$SSO['CERT_STORAGE'] = 'file'が設定されている場合、証明書はファイルシステム上で利用可能である必要があります(既定ではui/conf/certs、またはzabbix.conf.phpで設定されたパス)。この場合、Webインターフェースは証明書をデータベースに保存しません。
なお、$SSO['CERT_STORAGE']が設定されていない、またはコメントアウトされている場合は、ファイル保存が前提となり、証明書はui/conf/certsから読み取られます。
ユーザーグループのマッピングも設定する必要があります。
メディアのマッピングは任意です。
3. Updateボタンをクリックして、これらの設定を保存します。
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フロントエンドの設定を更新し、以下を追加します:
$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フロントエンドの設定ファイル(zabbix.conf.php)でrequestedAuthnContextを"false"に設定する必要がある場合があります。
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];