Аутентификация
Помимо использования сертификатов, пользователи KOMRAD как метод аутентификации используют логин и пароль для входа в систему.
Есть несколько способов добавления пользователей и задания им паролей.
Роли
Доступные роли:
-
Администратор - доступ к любым вкладкам системы. Возможность настраивать коллекторы, пользовательские поля, плагины, загружать сертификаты, настраивать уведомления, все действия относительно других пользователей, доступ к настройкам ГосСОПКА
-
Пользователь - доступ ко всем вкладкам системы, кроме "manage". Ра зрешены все действия с фильтрами, директивами, активами, виджетами, событиями, инцидентами
Системный пользователь
При установке pauth-server
создаёт системного пользователя root
, он не отображается на UI, но смена пароля является обязательным действием.
Пароль пользователя хранится в формате хеша bcrypt
в базе.
Для генерации хеш-функции Вы можете воспользоваться онлайн генератором
Или сгенерировать локально с использованием скрипта Python 3:
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
Во вкладке "manage" ⇒ "Пользователи" нажатием на +
Заполните обязательные поля:
- Фамилия
- Имя
- Логин
- Пароль
Сложность пароля будет зависеть от значения указанного в конфигурационном файле сервера аутентификации
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
имеет длину 2765432
имеет длину 2abc
имеет длину 2qwerty
имеет длину 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