Аутентификация
Помимо использования сертификатов, пользователи KOMRAD как метод аутентификации используют логин и пароль для входа в систему.
Есть несколько способов добавления пользователей и задания им паролей.
Роли
Доступные роли:
-
Администратор - доступ к любым вкладкам системы. Возможность настраивать коллекторы, пользовательские поля, плагины, загружать сертификаты, настраивать уведомления, все действия относительно других пользователей, доступ к настройкам ГосСОПКА
-
Пользователь - доступ ко всем вкладкам системы, кроме "Администрирование". Разрешены все действия с фильтрами, директивами, активами, виджетами, событиями, инцидентами
Системный пользователь
При установке pauth-server
создаёт системного пользователя root
, он не отображается на UI, но смена пароля является обязательным действием.
Пароль пользователя хранится в формате хеша bcrypt
в базе.
Для генерации хеш-функции вы можете воспользоваться онлайн генератором
Или сгенерировать локально с использованием скрипта Python 3.
Скрипт python3
import getpass
import bcrypt
password = getpass.getpass("password: ")
hashed_password = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
print(hashed_password.decode())
Выполните подключение к базе данных PostgreSQL:
psql postgres://postgres:pass@localhost:5432/pauth-preferences
Измените EXAMPLE_HASH
на сгенерированный вами хеш:
update preferences.users set password_hash = 'EXAMPLE_HASH' where login = 'root';
Отключитесь от базы данных:
\q
Также можете использовать команды quit
, exit
.
Добавление пользователей в UI
Во вкладке "Администрирование"→"Пользователи" нажатием на +
Заполните обязательные поля:
-
Фамилия
-
Имя
-
Логин
-
Email
-
Пароль
Сложность пароля будет зависеть от значения указанного в конфигурационном файле сервера аутентификации
MinPasswordEntropyBits: 70
70
является энтропией пароля.
Какое значение энтропии следует использовать?
Вы принимаете решение, какую сложность пароля следует использовать, мы считаем наиболее оптимальным диапазон значений в районе 50-70
.
Таблица энтропии пароля
Энтропия |
Строчные буквы |
Заглавные + строчные + цифры |
заглавные + строчные + цифры + спецсимволы |
120 |
20 |
||
118 |
25 |
18 |
|
116 |
|||
114 |
19 |
||
112 |
24 |
17 |
|
110 |
|||
108 |
23 |
18 |
|
106 |
16 |
||
104 |
22 |
||
102 |
17 |
||
100 |
|||
98 |
21 |
15 |
|
96 |
16 |
||
94 |
20 |
||
92 |
14 |
||
90 |
19 |
15 |
|
88 |
|||
86 |
13 |
||
84 |
18 |
14 |
|
82 |
|||
80 |
17 |
||
78 |
13 |
12 |
|
76 |
16 |
||
74 |
|||
72 |
12 |
11 |
|
70 |
15 |
||
68 |
|||
66 |
14 |
11 |
10 |
64 |
11 |
||
62 |
13 |
||
60 |
10 |
9 |
|
58 |
|||
56 |
12 |
||
54 |
9 |
||
52 |
11 |
8 |
|
50 |
|||
48 |
10 |
8 |
|
46 |
7 |
||
44 |
|||
42 |
9 |
7 |
|
40 |
6 |
При этом мы исключаем возможность использования односложных паролей.
С повторяющимися символами, такими как aaaaaaaaaaaaa
, или 111222`
, мы изменяем длину последовательности, чтобы она считалась не более чем 2.
aaaa
имеет длину 2
111222
имеет длину 4
Общие последовательности
Обычные последовательности длины три или более считаются за длину 2.
-
12345
имеет длину 2 -
765432
имеет длину 2 -
abc
имеет длину 2 -
qwerty
имеет длину 2
Последовательности проверяются по принципу с начала до конца и в обратном порядке. Вот последовательности, которые мы реализовали на данный момент, и они не чувствительны к регистру:
-
0123456789
-
qwertyuiop
-
asdfghjkl
-
zxcvbnm
-
abcdefghijklmnopqrstuvwxyz
Добавление пользователя через консоль
Добавить пользователя через консоль можно следующей командой:
sudo pauthctl user add --email name@domain.com --login admin --roles admin --password admin --conn "postgresql://postgres:pass@localhost:5432/pauth-preferences"
Где:
-
--pass – укажите пароль пользователя postgres (PostgreSQL)
-
--e-mail
name@domain.com
– укажите свой e-mail адрес администратора -
--login
admin
– укажите свой логин администратора; -
--roles
admin
- назначение роли администратора илиuser
для пользователя -
--password
admin
– укажите свой пароль администратора
Удалить пользователя полностью нельзя, его "следы" останутся в системе. Например, если пользователь, ответственный за инцидент, был удалён, его имя всё равно останется в графе "Ответственный" |
Добавление пользователей LDAP
Укажите настройки вашего LDAP сервера.
Для редактирования конфигурационного файла выполните команду:
sudo nano /etc/echelon/komrad/pauth-server.yaml
kind: ldap priority: 20 enabled: true #включить (false для отключения) ldap: url: ldap://echelon.lan:389 # адрес подключения к домену; search-dn: search-dn # отличительное имя пользователя, доступное только для чтения, которое будет использовано для аутентификации с LDAP-сервером, чтобы извлечь информацию пользователя; search-password: search-password # пароль пользователя, доступный только для чтения, который будет аутентифицирован с LDAP-сервером для того, чтобы извлечь информацию пользователя; base-dn: dc=echelon,dc=lan # домены первого и второго уровня uid: sAMAccountName # ключ входа для использования в качестве идентификатора пользователя. Если передать null как значение данной опции, тогда по умолчанию будет использоваться sAMAccountName; scope: 2 глубина поиска, возможны три варианта: Base (0) — поиск только по указанному в запросе объекту. В результате поиска возвращается либо один объект, либо ничего. Данная область, как правило, используется для проверки наличия объекта. One level (1) — поиск только по дочерним объектам указанного объекта. Поиск по вложенным объектам не производится, также в результаты поиск не попадает сам базовый объект. Subtree (2) — поиск по всем дочерним объектам, включая вложенные. connection-timeout: 30 # таймаут LDAP соединения, в секундах, по умолчанию 30; tls: enabled: false # включение шифрования передачи данных LDAP протокола true; group-conf: filter: objectclass=Group # фильтр для выбора класса или категории. https://social.technet.microsoft.com/wiki/contents/articles/8077.active-directory-ldap-ru-ru.aspx membership-attribute: memberof # атрибут допустимые значения (Mobile/SN/GivenName/Email/Mail/CN/UID) group-roles: - group-to-org-role: group-dn: cn=dep_development,cn=Groups,dc=echelon,dc=lan # Путь до группы org-role: admin # Роль
Перезапустите pauth-server.
Создание ролей для ClickHouse и PostgreSQL
Здесь описано создание ролей администратора и пользователя.
Действия (каждая отдельная команда пишется в одну строчку):
Создать роль администратора:
sudo pauthctl role add admin --migrate --conn "postgresql://postgres:pass@localhost:5432/pauth-preferences"
Об успешном добавлении роли admin в строке сервиса будет строка:
INFO roles added {"role_names": ["admin"], "status": "success"}
Создать роль пользователя:
sudo pauthctl role add user --conn "postgresql://postgres:pass@localhost:5432/pauth-preferences"
Об успешном добавлении роли user в строке сервиса будет строка:
INFO roles added {"role_names": ["user"], "status": "success"}
Создать учетную запись администратора:
sudo pauthctl user add --email name@domain.com --login admin --roles admin --password admin --conn "postgresql://postgres:pass@localhost:5432/pauth-preferences"
Где вместо:
-
postgres:pass – указать пароль пользователя postgres (PostgreSQL)
-
email name@domain.com – указать e-mail администратора
-
login admin – указать логин администратора
-
password admin – указать пароль администратора
Информация об изменении паролей для ClickHouse и PostgreSQL
Использовать отдельные сертификаты для аутентификации пользователя и сервисов
В случае, если вы хотите использовать свои или отдельно сгенерированные сертификаты, необходимо внести изменения в файлы конфигурации сервера аутентификации и сервера
В указанном примере сертификаты для аутентификации лежат в папке /var/lib/echelon/komrad/certs1
.
pauth server
grpcserverca: /var/lib/echelon/komrad/certs1/ca.pem grpcservercert: /var/lib/echelon/komrad/certs1/server.pem grpcserverkey: /var/lib/echelon/komrad/certs1/server-key.pem
komrad-server
auth: # адрес gRPC сервера PAuth addr: 127.0.0.1:2021 tls: disable: false ServerName: "" TrustedCA: /var/lib/echelon/komrad/certs1/ca.pem Cert: /var/lib/echelon/komrad/certs1/client.pem CertKey: /var/lib/echelon/komrad/certs1/client-key.pem system-pool: false min-version: "1.3" client-auth: require-and-verify-client-cert
tls: disable: false ServerName: "" TrustedCA: /var/lib/echelon/komrad/certs1/ca.pem Cert: /var/lib/echelon/komrad/certs1/server.pem CertKey: /var/lib/echelon/komrad/certs1/server-key.pem system-pool: false min-version: "1.3"
Проверьте, чтобы у пользователя komrad был доступ к папке с сертификатами
|
Последнее изменение 24.04.2023