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 管理センターで、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 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

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

これらの設定を保存するには、Updateをクリックします。

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

1. Entra IDアプリケーションのページで、メインメニューから Provisioning ページを開きます。Get started をクリックし、次に自動プロビジョニングモードを選択します。

  • 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インターフェースの設定ファイル (zabbix.conf.php) で requestedAuthnContext を "false" に設定する必要がある場合があります。

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