[comment]: # ({2ac94e21-11206317})
# 12 Microsoft Entra ID での SAML 設定

[comment]: # ({/2ac94e21-11206317})

[comment]: # ({8babfe4a-d1a8a2fc})
#### 概要

このセクションでは、SAML 2.0認証を使用してMicrosoft Entra ID（旧Microsoft Azure Active Directory）からZabbixへのシングルサインオンおよびユーザーのプロビジョニングを設定するためのガイドラインを提供します。

[comment]: # ({/8babfe4a-d1a8a2fc})

[comment]: # ({b4d9f9a1-ed685e3c})
#### Microsoft Entra IDの設定

[comment]: # ({/b4d9f9a1-ed685e3c})

[comment]: # ({55e50911-440025da})
##### アプリケーションの作成

1\. [Microsoft Entra ID](https://entra.microsoft.com)でMicrosoft Entra管理センターにログインします。
テスト目的の場合は、Microsoft Entra IDで無料トライアルアカウントを作成できます。

2\. Microsoft Entra管理センターで、*アプリケーション* -> *エンタープライズアプリケーション* -> *新しいアプリケーション* -> *独自のアプリケーションを作成* を選択します。

3\. アプリケーション名を追加し、*他のアプリケーションを統合...* オプションを選択します。
その後、*作成*をクリックします。

![](../../../../assets/en/manual/appendix/install/entra_create_app.png){width="550"}

[comment]: # ({/55e50911-440025da})

[comment]: # ({d3006f29-82aca309})
##### シングルサインオンの設定

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` を設定します。

![](../../../../assets/en/manual/appendix/install/entra_basic_saml.png){width="600"}

"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* をクリックして属性を追加します。

![](../../../../assets/en/manual/appendix/install/azure_claim.png)

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

![](../../../../assets/en/manual/appendix/install/entra_claim_group.png){width="600"}

このクレームでは、選択した *Source attribute* によってグループ名（グループIDではなく）が Zabbix に渡されることが重要です。
そうでない場合、JITユーザープロビジョニングが正しく機能しません。

4. *SAML Certificates* で、Entra ID から提供されたBase64証明書をダウンロードし、Zabbixフロントエンドインストールの `conf/certs` に配置します。

以下のコマンドで644パーミッションを設定します。

```bash
chmod 644 entra.cer
```

5. Entra ID の *Set up <your app name>* の値を使用して、Zabbix の SAML認証を設定します（次のセクションを参照）。

![](../../../../assets/en/manual/appendix/install/entra_sso_settings.png){width="550"}

[comment]: # ({/d3006f29-82aca309})

[comment]: # ({a9cc51da-b1c1c877})
#### Zabbixの設定

1\. Zabbixで、[SAML設定](/manual/web_interface/frontend_sections/users/authentication/saml#setting-up-zabbix)に移動し、Entra IDの設定に基づいて設定オプションを入力します。

![](../../../../assets/en/manual/appendix/install/entra_zabbix_conf.png){width="600"}

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

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*ボタンを押して、これらの設定を保存します。

[comment]: # ({/a9cc51da-b1c1c877})

[comment]: # ({ecf9190c-8c2fcfa4})
#### SCIMユーザーのプロビジョニング

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

-   *Tenant URL*には、次の値を設定します: `https://<path-to-zabbix-ui>/api_scim.php`
-   *Secret token*には、スーパ管理者権限を持つZabbix APIトークンを入力します。
-   *Test connection*をクリックして、接続が確立されているか確認します。

![](../../../../assets/en/manual/appendix/install/entra_api_connection.png){width="550"}

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

![](../../../../assets/en/manual/appendix/install/entra_scim_mappings_add.png){width="550"}

属性マッピングリストの一番下で*Show advanced options*を有効にし、*Edit attribute list for customappsso*をクリックします。

属性リストの一番下に、タイプ「String」で独自の属性を追加します:

![](../../../../assets/en/manual/appendix/install/azure_scim_attrib.png){width="550"}

リストを保存します。

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

![](../../../../assets/en/manual/appendix/install/azure_scim_mapping.png){width="550"}

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

![](../../../../assets/en/manual/appendix/install/azure_scim_mappings.png){width="550"}

4\. Zabbixへのユーザープロビジョニングの前提条件として、Entra IDでユーザーとグループが設定されている必要があります。

そのためには、*Microsoft Entra admin center*に移動し、該当するユーザーおよびグループページでユーザー/グループを追加します。

5\. Entra IDでユーザーとグループが作成されたら、アプリケーションの*Users and groups*メニューに移動し、アプリに追加できます。

6\. アプリの*Provisioning*メニューに移動し、*Start provisioning*をクリックして、ユーザーをZabbixにプロビジョニングします。

Entra IDのUsers PATCHリクエストはメディアの変更をサポートしていないことに注意してください。

[comment]: # ({/ecf9190c-8c2fcfa4})

[comment]: # ({c0cb36b9-ff9d0f6b})
#### 認証リクエストの署名

Entra IDを構成して、署名付き認証リクエストの[署名を検証](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-enforce-signed-saml-authentication)することができます。

これを機能させるには、公開鍵/秘密鍵を作成します:

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

権限を割り当てます:

```bash
chown apache /usr/share/zabbix/conf/certs/request-sign.key 
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key
```

Zabbixフロントエンドの設定を更新し、以下を追加します:

```php
$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';
```

[comment]: # ({/c0cb36b9-ff9d0f6b})

[comment]: # ({8b9836aa-80731412})
#### トラブルシューティング

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

この場合の認証問題を回避するには、Zabbixフロントエンドの設定ファイル（*zabbix.conf.php*）で`requestedAuthnContext`を"false"に設定する必要がある場合があります。

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

[comment]: # ({/8b9836aa-80731412})
