> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Настройка ClickHouse для использования LDAP при аутентификации и сопоставлении ролей

> Описывает, как настроить ClickHouse для использования LDAP при аутентификации и сопоставлении ролей

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Не поддерживается в ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

<Note>
  Эта страница не применима к [ClickHouse Cloud](https://clickhouse.com/cloud). Описанная здесь возможность недоступна в сервисах ClickHouse Cloud.
  Дополнительные сведения см. в руководстве ClickHouse [Cloud Compatibility](/docs/ru/products/cloud/guides/cloud-compatibility).
</Note>

ClickHouse можно настроить для использования LDAP при аутентификации пользователей базы данных ClickHouse. В этом руководстве приведён простой пример интеграции ClickHouse с системой LDAP, которая выполняет аутентификацию через общедоступный каталог.

<Steps>
  <Step title="Настройка параметров LDAP-соединения в ClickHouse" id="1-configure-ldap-connection-settings-in-clickhouse">
    1. Проверьте подключение к этому общедоступному LDAP-серверу:

       ```bash theme={null}
       $ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.com
       ```

       Ответ будет примерно таким:

       ```response theme={null}
       # расширенный LDIF
       #
       # LDAPv3
       # база <dc=example,dc=com> с областью subtree
       # фильтр: (objectclass=*)
       # запрашивается: ALL
       #

       # example.com
       dn: dc=example,dc=com
       objectClass: top
       objectClass: dcObject
       objectClass: organization
       o: example.com
       dc: example
       ...
       ```

    2. Отредактируйте файл `config.xml` и добавьте следующее, чтобы настроить LDAP:
       ```xml theme={null}
       <ldap_servers>
           <test_ldap_server>
           <host>ldap.forumsys.com</host>
           <port>389</port>
           <bind_dn>uid={user_name},dc=example,dc=com</bind_dn>
           <enable_tls>no</enable_tls>
           <tls_require_cert>never</tls_require_cert>
           </test_ldap_server>
       </ldap_servers>
       ```

    <Note>
      Теги `<test_ldap_server>` — это произвольная метка для идентификации конкретного LDAP-сервера.
    </Note>

    Это основные параметры, использованные выше:

    | Parameter          | Description                            | Example                             |
    | ------------------ | -------------------------------------- | ----------------------------------- |
    | host               | имя хоста или IP-адрес LDAP-сервера    | ldap.forumsys.com                   |
    | port               | порт LDAP-сервера                      | 389                                 |
    | bind\_dn           | шаблонный путь к пользователям         | `uid={user_name},dc=example,dc=com` |
    | enable\_tls        | использовать ли защищенный LDAP        | no                                  |
    | tls\_require\_cert | требуется ли сертификат для соединения | never                               |

    <Note>
      В этом примере, поскольку общедоступный сервер использует порт 389 и не использует защищенный порт, мы отключаем TLS в демонстрационных целях.
    </Note>

    <Note>
      Подробнее о параметрах LDAP см. на [странице документации LDAP](/docs/ru/concepts/features/security/external-authenticators/ldap).
    </Note>

    3. Добавьте раздел `<ldap>` в раздел `<user_directories>`, чтобы настроить сопоставление ролей пользователей. Этот раздел определяет, как аутентифицируется пользователь и какую роль он получит. В этом простом примере любой пользователь, прошедший аутентификацию через LDAP, получит роль `scientists_role`, которая будет определена на следующем шаге в ClickHouse. Раздел должен выглядеть примерно так:

       ```xml theme={null}
       <user_directories>
           <users_xml>
               <path>users.xml</path>
           </users_xml>
           <local_directory>
               <path>/var/lib/clickhouse/access/</path>
           </local_directory>
           <ldap>
                 <server>test_ldap_server</server>
                 <roles>
                    <scientists_role />
                 </roles>
                 <role_mapping>
                    <base_dn>dc=example,dc=com</base_dn>
                    <search_filter>(&amp;(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))</search_filter>
                    <attribute>cn</attribute>
                 </role_mapping>
           </ldap>
       </user_directories>
       ```

       Это основные параметры, использованные выше:

       | Parameter      | Description                                                                            | Example                                                       |
       | -------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
       | server         | метка, заданная в предыдущем разделе ldap\_servers                                     | test\_ldap\_server                                            |
       | roles          | имя ролей, определенных в ClickHouse, которым будут сопоставлены пользователи          | scientists\_role                                              |
       | base\_dn       | базовый путь, откуда начинается поиск групп пользователя                               | dc=example,dc=com                                             |
       | search\_filter | LDAP search filter для определения групп, используемых при сопоставлении пользователей | `(&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))` |
       | attribute      | имя attribute, значение которого должно возвращаться                                   | cn                                                            |

    4. Перезапустите ClickHouse server, чтобы применить параметры.
  </Step>

  <Step title="Настройка ролей и разрешений в базе данных ClickHouse" id="2-configure-clickhouse-database-roles-and-permissions">
    <Note>
      В этом разделе предполагается, что в ClickHouse включена SQL-система управления доступом и учётными записями. Чтобы включить её, см. [руководство по SQL-пользователям и ролям](/docs/ru/concepts/features/security/access-rights).
    </Note>

    1. Создайте в ClickHouse роль с тем же именем, что используется в разделе сопоставления ролей файла `config.xml`
       ```sql theme={null}
       CREATE ROLE scientists_role;
       ```

    2. Назначьте роли необходимые привилегии. Следующий оператор предоставляет права администратора любому пользователю, который может пройти аутентификацию через LDAP:
       ```sql theme={null}
       GRANT ALL ON *.* TO scientists_role;
       ```
  </Step>

  <Step title="Проверьте конфигурацию LDAP" id="3-test-the-ldap-configuration">
    1. Войдите в систему с помощью клиента ClickHouse
       ```bash theme={null}
       $ clickhouse-client --user einstein --password password
       ClickHouse client version 22.2.2.1.
       Connecting to localhost:9000 as user einstein.
       Connected to ClickHouse server version 22.2.2 revision 54455.

       chnode1 :)
       ```

    <Note>
      На шаге 1 используйте команду `ldapsearch`, чтобы просмотреть всех пользователей, доступных в каталоге; для всех пользователей пароль — `password`
    </Note>

    2. Убедитесь, что пользователь правильно сопоставлен с ролью `scientists_role` и имеет права администратора

       ```sql theme={null}
       SHOW DATABASES
       ```

       ```response theme={null}
       Query id: 93b785ff-1482-4eda-95b0-b2d68b2c5e0f

       ┌─name───────────────┐
       │ INFORMATION_SCHEMA │
       │ db1_mysql          │
       │ db2                │
       │ db3                │
       │ db4_mysql          │
       │ db5_merge          │
       │ default            │
       │ information_schema │
       │ system             │
       └────────────────────┘

       9 rows in set. Elapsed: 0.004 sec.
       ```
  </Step>
</Steps>

<div id="summary">
  ## Итоги
</div>

В этой статье были рассмотрены основы настройки ClickHouse для аутентификации через LDAP-сервер, а также сопоставления с ролью. Также можно настроить отдельных пользователей в ClickHouse так, чтобы они проходили аутентификацию через LDAP без настройки автоматического сопоставления ролей. Модуль LDAP также можно использовать для подключения к Active Directory.
