Вы можете разрешить пользователям платформы авторизоваться только с определённых IP-адресов и подсетей. Для этого:
- Создайте в платформе группы пользователей.
- Задайте для каждой группы список разрешённых IP-адресов.
Если пользователь платформы находится в группе и пытается авторизоваться с IP-адреса, которого нет в настройках группы, платформа заблокирует доступ пользователя к сервису авторизации.
Если пользователь не состоит ни в одной из групп, он может авторизоваться в платформе с любого IP-адреса.
Управление группами пользователей
Для управления группами перейдите в Пользователи → Группы пользователей.
Интерфейс раздела
Для создания группы:
- Нажмите Создать группу.
- Укажите параметры группы:
- Название.
- IP-адреса для доступа к платформе. Список может содержать отдельные IP-адреса, диапазоны и подсети IP-адресов.
- Нажмите Сохранить.
Пример создания группы
Чтобы изменить настройки созданной группы, нажмите или Настроить.
Чтобы удалить группу, нажмите или Удалить.
Чтобы добавить или удалить пользователей из группы:
- Нажмите Изменить участников группы.
- Выберите пользователей, которых надо добавить.
- Снимите отметку у пользователей, которых надо удалить.
- Нажмите Сохранить изменения.
Пример изменения участников группы
Управление доступом через API
Для каждой группы пользователей платформа создаёт список управления доступом (ACL). ACL содержит email участников группы и списки разрешённых IP-адресов.
Создание ACL
Чтобы создать ACL:
- Если на сервере не установлена утилита curl, установите её:
dnf install curl || apt install curl
-
Получите токен авторизации:
curl -k -X POST -H "accept: application/json" -H "Content-Type: application/json" 'https://example.com/api/auth/v4/public/token' -d '{"email": "admin_email", "password": "admin_pass"}'
Пояснения к командеВ ответ придёт сообщение вида:
Пример ответа в JSON{ "confirmed": true, "expires_at": null, "id": "6", "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a" }
Сохраните полученное значение параметра token — токен авторизации.
-
Выполните запрос:
curl -H 'x-xsrf-token: <token>' -X POST https://domain.com/auth/v4/acl -d '{"name": "<acl_name>", "ip_list": [<ip>], "members": [<users_id>]}'
Пояснения к командеОбратите внимание!id пользователей вы можете посмотреть в интерфейсе платформы в разделе Пользователи .Ответ будет содержать id созданного ACL.
Пример создания ACLcurl -H 'x-xsrf-token: 4-e9726dd9-61d9-2940-add3-914851d2cb8a' -X POST https://domain.com/auth/v4/acl -d '{"name": "admin1", "ip_list": ["192.0.2.1","192.0.2.10-192.0.2.20","192.0.2.100/28"], "members": ["1","3","7"}'
Пояснения к примеруПример ответа{ "id": "12" }
Просмотр ACL
Чтобы посмотреть все созданные ACL, выполните запрос:
curl -H 'x-xsrf-token: <token>' GET https://domain.com/auth/v4/acl
Чтобы посмотреть конкретный ACL, выполните запрос:
curl -H 'x-xsrf-token: <token>' GET https://domain.com/auth/v4/acl/<acl_id>
{
"ip_list": [
"192.0.2.1",
"192.0.2.10-192.0.2.20",
"192.0.2.100/28"
],
"name": "admin1",
"users": [
"user1@example.com",
"user3@example.com",
"user7@example.com"
]
}
Удаление ACL
Чтобы удалить конкретный ACL, выполните запрос:
curl -H 'x-xsrf-token: <token>' -X DELETE https://domain.com/auth/v4/acl/<acl_id>
При успешном удалении ответ будет содержать "true".
Если потерян доступ к платформе
Если из-за ошибок в настройках ACL доступ к платформе был потерян, вы можете удалить ACL из базы данных платформы:
- Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
-
Подключитесь к БД платформы:
В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:
- VMmanager Hosting — MySQL;
- VMmanager Infrastructure:
- для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
- в остальных случаях — MySQL.
Чтобы определить тип СУБД, выполните на сервере с платформой команду:
docker ps --filter name=pgsql
Пример ответаCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3213c5dc94d0 postgres:12 "docker-entrypoint.s…" 5 days ago Up 4 days 5432/tcp pgsql
Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.
MySQLdocker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
PostgreSQLdocker exec -it pgsql bash -c "psql -d isp"
-
Выполните запрос:
select * from auth_user2acl;
Пример ответа+----+------+-----+ | id | user | acl | +----+------+-----+ | 3 | 122 | 4 | +----+------+-----+
Сохраните значения из столбцов id и acl.
-
Выполните запросы:
delete from auth_acl where id=<id>;
delete from auth_user2acl where id=<acl>;
Пояснения