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

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

Где:

  1. --pass – укажите пароль пользователя postgres (PostgreSQL)

  2. --e-mail name@domain.com – укажите свой e-mail адрес администратора

  3. --login admin – укажите свой логин администратора;

  4. --roles admin - назначение роли администратора или user для пользователя

  5. --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 # Роль

Создание ролей для 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"

Где вместо:

  1. postgres:pass – указать пароль пользователя postgres (PostgreSQL)

  2. email name@domain.com – указать e-mail администратора

  3. login admin – указать логин администратора

  4. 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