184 похожих чатов

Добрый день. Не может ли кто посмотреть / посоветовать по issue

ниже?
https://github.com/ClickHouse/ClickHouse/issues/53708

Вкратце:
LDAP аутентификацию и мэппинг ролей в данным момент на всех последних (по крайней мере) версиях клика и разных ОС (CentOS, RHEL, Ubuntu, Astra) практически невозможно использовать при наличии большого кол-ва пользователей и групп в AD.
Как только активного пользователя добавляют в AD с группу, для которой нет соответствующей роли в CH, то при выдаче определенных запросов от этого пользователя они и все последующие от него же (а иногда и от других пользователей тоже) начинают виснуть или отваливаться по таймауту. Растет кол-во сетевых соединений на сервере в CLOSE_WAIT, и в конце концов CH перестает принимать соединения вообще.

Проблема легко воспроизводится.
Может кто посоветовать, куда в код хоть смотреть? Может, сами сможем разобраться...

8 ответов

11 просмотров

На данный момент в АД у нас более 3000 пользователей, СН настроен на авторизацию без подтягивания ролей, с шифрованием tls 1.2. никаких проблем не замечено. Версии от 22.3 до 23.7. Есть проблемы в самом RBAC в клике с наследованием. Знаем, любим, обходим.

Mark-B Автор вопроса
Alex K
На данный момент в АД у нас более 3000 пользовател...

Внешняя аутентификация, это, конечно, хорошо. Но как же с правами без ролей? У вас что, все пользователи одинаковые роли получают из конфига? Или все пользователи в клике прописаны локально (в <clickhouse><users>) с аутентификацией в LDAP, и каждому даны свои роли?

Mark B
Внешняя аутентификация, это, конечно, хорошо. Но к...

Да, есть матрица ролей для сервисов и пользователей. Никто не грузит клик задачами разграничения прав на каждую строку. Такие вещи делаются на стороне приложений если необходимо. Есть несколько глобальных групп в АD, по которым присваиваются роли по умолчанию. Есть матрица ролей в клике. Но валовой авторизации всех из АД и разруливание их ролями нет, политика безопасности требует вносить пользователей в клик по заявке, поэтому проблем нет.

Попробуйте усилить фильтр в секции search_filter, чтобы сильно уменьшить количество пользователей ldap среди которых клик ищет своих

Mark-B Автор вопроса
Alex K
Да, есть матрица ролей для сервисов и пользователе...

Не понял техническую реализацию фразы "Есть несколько глобальных групп в АD, по которым присваиваются роли по умолчанию". Как именно вы присваиваете разные роли по умолчанию разным пользователям? Секцию <user_directories><ldap><roles> в конфиге с дефолтными ролями ведь нельзя прописать разную для разных пользователей. Я ведь правильно понял, что это присвоение ролей по умолчанию делается руками для каждого локально опредленного пользователя CH командами типа ниже? GRANT role_name TO my_user ALTER USER my_user DEFAULT ROLE role_name

Mark-B Автор вопроса
Павел
Попробуйте усилить фильтр в секции search_filter, ...

Ограничивать пользователей нельзя - любой должен иметь возможность зайти. <user_directories><ldap><role_mapping><prefix>ch_ А вот выставить префикс типа выше, наверное, можно попробовать в предположении, что группы с таким префиксом будут создаваться только с ведома админа клика...

Mark B
Не понял техническую реализацию фразы "Есть нескол...

Это связано с особенностями реализации наполнения АД и поиска. Считайте что роли присваиваются при заведении пользователя. У нас применен второй тип авторизации CH.

Mark B
Ограничивать пользователей нельзя - любой должен и...

Если у вас например 100 тыс записей пользователей в ldap и каждый должен входить в клик, то вы правы, у нас к счастью, это не так.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта