11 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 管理センターで、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 をクリックします。

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

この claim では、選択した Source attribute によって、グループ ID ではなくグループ名が Zabbix に渡されることが重要です。そうしないと、JIT ユーザープロビジョニングが正しく機能しません。
4. SAML Certificates で、Entra ID が提供する Base64 証明書をダウンロードし、Zabbix Webインターフェース のインストール先の conf/certs に配置します。
次を実行して、これに 644 の権限を設定します。
chmod 644 entra.cer
conf/zabbix.conf.php に次の行が含まれていることを確認してください。
$SSO['IDP_CERT'] = 'conf/certs/entra.cer';
5. Entra ID の Set up <your app name> の値を使用して、Zabbix の SAML 認証を設定します(次のセクションを参照)。

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

| Zabbixのフィールド | Entra IDの設定フィールド | サンプル値 |
|---|---|---|
| IdP entity ID | Microsoft Entra identifier | |
| SSO service URL | Login URL | |
| SLO service URL | Logout URL | |
| SP entity ID | Identifier (Entity ID) | |
| Username attribute | カスタム属性(クレーム) | user_email |
| Group name attribute | カスタム属性(クレーム) | groups |
| User name attribute | カスタム属性(クレーム) | user_name |
| User last name attribute | カスタム属性(クレーム) | user_lastname |
ユーザーグループのマッピングも設定する必要があります。メディアのマッピングは任意です。
これらの設定を保存するには、Updateをクリックします。
SCIM ユーザーのプロビジョニング
1. Entra ID アプリケーションページのメインメニューから プロビジョニング ページを開きます。開始をクリックし、 自動プロビジョニング モードを選択します。
- テナント URLに、以下の値を設定します:
https://<path-to-zabbix-ui>/api_scim.php - シークレット トークンに、スーパー管理者権限を持つ Zabbix API トークンを入力します。
- 接続テストをクリックし、接続が確立されているかどうかを確認します。

2. SCIM で Zabbix に渡すすべての属性を追加します。マッピングをクリックし、Microsoft Entra ID ユーザーのプロビジョニングをクリックします。

属性マッピングリストの下部で、詳細オプションを表示をオンにし、customappsso の属性リストを編集をクリックします。
属性リストの下部に、'文字列'型で独自の属性を追加します。

リストを保存します。
3. これで、追加した属性のマッピングを追加できます。属性マッピングリストの下部にある新しいマッピングの追加をクリックし、以下のようにマッピングを作成します。

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

4. Zabbixへのユーザープロビジョニングの前提条件として、Entra IDでユーザーとグループが設定されている必要があります。
これを行うには、Microsoft Entra管理センターにアクセスし、 ユーザーとグループ ページでユーザー/グループを追加します。
5. Entra AD にユーザーとグループが作成されたら、アプリケーションのユーザーとグループメニューに移動して、アプリに追加できます。
6. アプリのプロビジョニングメニューに移動し、プロビジョニングの開始をクリックして、ユーザーを Zabbix にプロビジョニングします。
Entra ID のユーザー 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
]
];