Перейти к основному содержимому
Версия: 4.5.X

Аутентификация

Помимо использования сертификатов, пользователи 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" ⇒ "Пользователи" нажатием на +

Заполните обязательные поля:

  • Фамилия
  • Имя
  • Логин
  • E-mail
  • Пароль

Сложность пароля будет зависеть от значения указанного в конфигурационном файле сервера аутентификации

MinPasswordEntropyBits: 70

70 является энтропией пароля.

Какое значение энтропии следует использовать?

Вы принимаете решение, какую сложность пароля следует использовать, мы считаем наиболее оптимальным диапазон значений в районе 50-70.

Таблица энтропии пароля

ЭнтропияСтрочные буквыЗаглавные + строчные + цифрызаглавные + строчные + цифры + спецсимволы
12020
1182518
116
11419
1122417
110
1082318
10616
10422
10217
100
982115
9616
9420
9214
901915
88
8613
841814
82
8017
781312
7616
74
721211
7015
68
66141110
6411
6213
60109
58
5612
549
52118
50
48108
467
44
4297
406

При этом мы исключаем возможность использования односложных паролей.

С повторяющимися символами, такими как 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 был доступ к папке с сертификатами