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管理センターにログインします。 テスト目的の場合は、Microsoft Entra IDで無料トライアルアカウントを作成できます。
2. Microsoft Entra管理センターで、アプリケーション -> エンタープライズアプリケーション -> 新しいアプリケーション -> 独自のアプリケーションを作成 を選択します。
3. アプリケーション名を追加し、他のアプリケーションを統合... オプションを選択します。 その後、作成をクリックします。

シングルサインオンの設定
-
アプリケーションページで、Set up single sign on に移動し、Get started をクリックします。 次に SAML を選択します。
-
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];
- 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ユーザープロビジョニングが正しく機能しません。
- SAML Certificates で、Entra ID から提供されたBase64証明書をダウンロードし、Zabbixフロントエンドインストールの
conf/certsに配置します。
以下のコマンドで644パーミッションを設定します。
chmod 644 entra.cer
- 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証明書を追加します。
zabbix.conf.phpで$SSO['CERT_STORAGE'] = 'database'が設定されている場合、SAML設定時にフロントエンドで証明書テキストを貼り付けるか、証明書ファイルをアップロードできます。ファイルシステム上にファイルは不要です。
zabbix.conf.phpで$SSO['CERT_STORAGE'] = 'file'が設定されている場合、証明書はファイルシステム上(デフォルトではui/conf/certsまたはzabbix.conf.phpで設定されたパス)に配置する必要があり、フロントエンドは証明書をデータベースに保存しません。
$SSO['CERT_STORAGE']が設定されていない、またはコメントアウトされている場合は、ファイルストレージが想定され、証明書はui/conf/certsから読み込まれます。
ユーザーグループのマッピングも設定する必要があります。
メディアのマッピングはオプションです。
3. 更新ボタンを押してこれらの設定を保存します。
SCIMユーザーのプロビジョニング
1. Entra IDアプリケーションページのメインメニューから、プロビジョニングページを開きます。 Get startedをクリックし、自動プロビジョニングモードを選択します:
- Tenant URLには、次の値を設定します:
https://<path-to-zabbix-ui>/api_scim.php - Secret tokenには、スーパ管理者権限を持つZabbix APIトークンを入力します。
- Test connectionをクリックして、接続が確立されているか確認します。

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

属性マッピングリストの一番下でShow advanced optionsを有効にし、Edit attribute list for customappssoをクリックします。
属性リストの一番下に、タイプ「String」で独自の属性を追加します:

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

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

4. Zabbixへのユーザープロビジョニングの前提条件として、Entra IDでユーザーとグループが設定されている必要があります。
そのためには、Microsoft Entra admin centerに移動し、該当するユーザーおよびグループページでユーザー/グループを追加します。
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
]
];