ниже?
https://github.com/ClickHouse/ClickHouse/issues/53708
Вкратце:
LDAP аутентификацию и мэппинг ролей в данным момент на всех последних (по крайней мере) версиях клика и разных ОС (CentOS, RHEL, Ubuntu, Astra) практически невозможно использовать при наличии большого кол-ва пользователей и групп в AD.
Как только активного пользователя добавляют в AD с группу, для которой нет соответствующей роли в CH, то при выдаче определенных запросов от этого пользователя они и все последующие от него же (а иногда и от других пользователей тоже) начинают виснуть или отваливаться по таймауту. Растет кол-во сетевых соединений на сервере в CLOSE_WAIT, и в конце концов CH перестает принимать соединения вообще.
Проблема легко воспроизводится.
Может кто посоветовать, куда в код хоть смотреть? Может, сами сможем разобраться...
На данный момент в АД у нас более 3000 пользователей, СН настроен на авторизацию без подтягивания ролей, с шифрованием tls 1.2. никаких проблем не замечено. Версии от 22.3 до 23.7. Есть проблемы в самом RBAC в клике с наследованием. Знаем, любим, обходим.
Внешняя аутентификация, это, конечно, хорошо. Но как же с правами без ролей? У вас что, все пользователи одинаковые роли получают из конфига? Или все пользователи в клике прописаны локально (в <clickhouse><users>) с аутентификацией в LDAP, и каждому даны свои роли?
Да, есть матрица ролей для сервисов и пользователей. Никто не грузит клик задачами разграничения прав на каждую строку. Такие вещи делаются на стороне приложений если необходимо. Есть несколько глобальных групп в АD, по которым присваиваются роли по умолчанию. Есть матрица ролей в клике. Но валовой авторизации всех из АД и разруливание их ролями нет, политика безопасности требует вносить пользователей в клик по заявке, поэтому проблем нет.
Попробуйте усилить фильтр в секции search_filter, чтобы сильно уменьшить количество пользователей ldap среди которых клик ищет своих
Не понял техническую реализацию фразы "Есть несколько глобальных групп в АD, по которым присваиваются роли по умолчанию". Как именно вы присваиваете разные роли по умолчанию разным пользователям? Секцию <user_directories><ldap><roles> в конфиге с дефолтными ролями ведь нельзя прописать разную для разных пользователей. Я ведь правильно понял, что это присвоение ролей по умолчанию делается руками для каждого локально опредленного пользователя CH командами типа ниже? GRANT role_name TO my_user ALTER USER my_user DEFAULT ROLE role_name
Ограничивать пользователей нельзя - любой должен иметь возможность зайти. <user_directories><ldap><role_mapping><prefix>ch_ А вот выставить префикс типа выше, наверное, можно попробовать в предположении, что группы с таким префиксом будут создаваться только с ведома админа клика...
Это связано с особенностями реализации наполнения АД и поиска. Считайте что роли присваиваются при заведении пользователя. У нас применен второй тип авторизации CH.
Если у вас например 100 тыс записей пользователей в ldap и каждый должен входить в клик, то вы правы, у нас к счастью, это не так.
Обсуждают сегодня