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

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 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

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

これらの設定を保存するには、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';

トラブルシューティング

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

この場合の認証の問題を回避するには、Zabbix Webインターフェースの設定ファイル(zabbix.conf.php)で requestedAuthnContext を "false" に設定する必要がある場合があります。

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