[comment]: # ({2ac94e21-11206317})
# 12 Настройка SAML с Microsoft Entra ID

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

[comment]: # ({8babfe4a-d1a8a2fc})
#### Обзор

В этом разделе приведены рекомендации по настройке единого входа и инициализации пользователей в Zabbix
из Microsoft Entra ID (ранее Microsoft Azure Active Directory) с использованием аутентификации SAML 2.0.

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

[comment]: # ({b4d9f9a1-ed685e3c})
#### Настройка Microsoft Entra ID

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

[comment]: # ({42f21e5b-440025da})
##### Создание приложения

1\. Войдите в центр администрирования Microsoft Entra по адресу [Microsoft Entra ID](https://entra.microsoft.com). Для тестирования вы можете создать бесплатную пробную учётную запись в Microsoft Entra ID.

2\. В центре администрирования Microsoft Entra выберите *Applications (Приложения)* -> *Enterprise applications (Корпоративные приложения)* -> *New application (Новое приложение)* -> *Create your own application (Создать собственное приложение)*.

3\. Добавьте имя своего приложения и выберите опцию *Integrate any other application... (Интеграция любого другого приложения...)*. После этого нажмите *Create (Создать)*.

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

[comment]: # ({/42f21e5b-440025da})

[comment]: # ({70c506a8-82aca309})
##### Настройка единого входа

1\. На странице приложения перейдите в раздел *Set up single sign on (Настройка единого входа)* и нажмите *Get started (Начать)*. Затем выберите *SAML*.

2\. Отредактируйте *Basic SAML Configuration (Базовую конфигурацию SAML)*:

-   В поле *Identifier (Entity ID)* задайте уникальное имя для идентификации вашего приложения в Azure Active Directory, например, `zabbix`;
-   В поле *Reply URL (Assertion Consumer Service URL)* задайте конечную точку единого входа Zabbix: `https://<путь-к-веб-интерфейсу-zabbix>/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).

Имена атрибутов произвольны. Можно использовать разные имена атрибутов, однако необходимо, чтобы они совпадали со значениями соответствующего поля в настройках SAML в Zabbix.

-   Нажмите *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"}

Важно, чтобы в этом утверждении (claim) в выбранном *Source attribute (Исходном атрибуте* передавались в Zabbix именно имена групп (а не идентификаторы групп). В противном случае JIT-инициализация пользователей не будет работать должным образом.

4\. В *SAML Certificates (Сертификаты SAML)* загрузите сертификат Base64, предоставленный Entra ID, и поместите его в `conf/certs` вашей инсталляции веб-интерфейса Zabbix.

Установите для него права доступа 644, выполнив:

    chmod 644 entra.cer

Убедитесь, что `conf/zabbix.conf.php` содержит строку:

```
$SSO['IDP_CERT'] = 'conf/certs/entra.cer';
```

5\. Используйте значения из *Set up <имя вашего приложения>* в Entra ID для настройки аутентификации SAML в Zabbix (см. следующий раздел):

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

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

[comment]: # ({757a04f4-b1c1c877})
#### Настройка Zabbix

1\. В Zabbix перейдите в [Настройки SAML (SAML settings)](/manual/web_interface/frontend_sections/users/authentication/saml#настройка-zabbix) 
и заполните параметры конфигурации на основе конфигурации Entra ID:

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

|Поле Zabbix|Поле настроек в Entra ID|Пример значения|
|----|----|--|
|*IdP entity ID*|Microsoft Entra identifier| |
|*URL единого входа*<br>*(SSO service URL)*|Login URL| |
|*URL единого выхода*<br>*(SLO service URL)*|Logout URL| |
|*ID объекта SP*<br>*(SP entity ID)*|Identifier (Entity ID)| |
|*Атрибут имени пользователя*<br>*(Username attribute)*|Custom attribute (claim)|`user_email`|
|*Атрибут имени группы*<br>*(Group name attribute)*|Custom attribute (claim)|`groups`|
|*Атрибут имени пользователя*<br>*(User name attribute)*|Custom attribute (claim)|`user_name`|
|*Атрибут фамилии пользователя*<br>*(User last name attribute)*|Custom attribute (claim)|`user_lastname`|

Также необходимо настроить соответствие группе пользователей. Cоответствие способов оповещений является необязательным.

Нажмите *Update (Обновить)*, чтобы сохранить эти настройки.

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

[comment]: # ({87b1b3e7-8c2fcfa4})
#### Подготовка пользователей SCIM

1\. На странице приложения в Entra ID в главном меню откройте страницу Provisioning. Нажмите *Get started*, а затем выберите режим Automatic provisioning:

-   В *Tenant URL* укажите следующее значение: `https://<path-to-zabbix-ui>/api_scim.php`
-   В *Secret token* введите токен API Zabbix с правами Super admin.
-   Нажмите *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"}

В нижней части списка Attribute Mapping включите *Show advanced options*, а затем нажмите *Edit attribute list for customappsso*.

В нижней части списка атрибутов добавьте собственные атрибуты с типом 'String':

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

Сохраните список.

3\. Теперь вы можете добавить сопоставления для добавленных атрибутов. В нижней части списка Attribute Mapping нажмите *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*, а затем добавьте пользователей/группы на соответствующих страницах Users и Groups.

5\. Когда пользователи и группы будут созданы в Entra ID, вы можете перейти в меню *Users and groups* вашего приложения и добавить их в приложение.

6\. Перейдите в меню *Provisioning* вашего приложения и нажмите *Start provisioning*, чтобы выполнить подготовку пользователей в Zabbix.

Обратите внимание, что запрос PATCH для Users в Entra ID не поддерживает изменения в media.

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

[comment]: # ({c0cb36b9-ff9d0f6b})
#### Подписание запросов на аутентификацию

Entra ID можно настроить для [проверки подписи](https://learn.microsoft.com/ru-ru/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]: # ({612478ad-80731412})
#### Устранение неполадок

Проблемы с аутентификацией могут возникать в браузерах MicroSoft Edge, когда пользователь, пытающийся войти в Zabbix через SAML, уже вошёл в систему с профилем MicroSoft Edge. Признаком такой проблемы может быть возможность входа в Zabbix через MicroSoft Edge в приватном режиме.

Чтобы избежать проблем с аутентификацией в этом случае, может потребоваться установить `requestedAuthnContext` в значение «false» в файле конфигурации веб-интерфейса Zabbix (*zabbix.conf.php*).

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

[comment]: # ({/612478ad-80731412})
