Download PDF
Download page Ограничение доступа пользователей к платформе.
Ограничение доступа пользователей к платформе
Вы можете разрешить пользователям платформы авторизоваться только с определённых IP-адресов и подсетей. Для этого:
- Создайте в платформе группы пользователей.
- Задайте для каждой группы список разрешённых IP-адресов.
Если пользователь платформы находится в группе и пытается авторизоваться с IP-адреса, которого нет в настройках группы, платформа заблокирует доступ пользователя к сервису авторизации.
Если пользователь не состоит ни в одной из групп, он может авторизоваться в платформе с любого IP-адреса.
Управление группами пользователей
Для управления группами перейдите в Пользователи → Группы пользователей.
Для создания группы:
- Нажмите Создать группу.
- Укажите параметры группы:
- Название.
- IP-адреса для доступа к платформе. Список может содержать отдельные IP-адреса, диапазоны и подсети IP-адресов.
- Нажмите Сохранить.
Чтобы изменить настройки созданной группы, нажмите или Настроить.
Чтобы удалить группу, нажмите или Удалить.
Чтобы добавить или удалить пользователей из группы:
- Нажмите Изменить участников группы.
- Выберите пользователей, которых надо добавить.
- Снимите отметку у пользователей, которых надо удалить.
- Нажмите Сохранить изменения.
Управление доступом через API
Для каждой группы пользователей платформа создаёт список управления доступом (ACL). ACL содержит email участников группы и списки разрешённых IP-адресов.
Создание ACL
Чтобы создать ACL:
- Если на сервере не установлена утилита curl, установите её:
dnf install curl || apt install curl
CODE Получите токен авторизации:
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"}'
CODEexample.com — доменное имя или IP-адрес сервера с платформой
admin_email — email администратора платформы
admin_pass — пароль администратора платформы
В ответ придёт сообщение вида:
Пример ответа в JSON
{ "confirmed": true, "expires_at": null, "id": "6", "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a" }
CODEСохраните полученное значение параметра 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>]}'
CODE<token> — токен авторизации
domain.com — доменное имя сервера с платформой
<acl_name> — название ACL
<ip> — список разрешённых IP-адресов. Список может содержать отдельные IP-адреса, диапазоны и подсети IP-адресов. Каждое значение списка должно быть указано в кавычках
<users_id> — список id пользователей платформы. Каждое значение списка должно быть указано в кавычках
Обратите внимание!
id пользователей вы можете посмотреть в интерфейсе платформы в разделе Пользователи .
Ответ будет содержать id созданного ACL.
Пример создания ACL
curl -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"}'
CODEЗапрос создаcт ACL с именем admin1. Пользователям с id 1, 3, 7 будет разрешён доступ к платформе с IP-адресов 192.0.2.1, 192.0.2.10-192.0.2.20 и подсети 192.0.2.100/28.
Пример ответа
{ "id": "12" }
CODE
Просмотр ACL
Чтобы посмотреть все созданные ACL, выполните запрос:
curl -H 'x-xsrf-token: <token>' GET https://domain.com/auth/v4/acl
<token> — токен авторизации
domain.com — доменное имя сервера с платформой
Чтобы посмотреть конкретный ACL, выполните запрос:
curl -H 'x-xsrf-token: <token>' GET https://domain.com/auth/v4/acl/<acl_id>
<token> — токен авторизации
domain.com — доменное имя сервера с платформой
<acl_id> — id созданного ACL
Пример ответа
{
"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>
<token> — токен авторизации
domain.com — доменное имя сервера с платформой
<acl_id> — id созданного ACL
При успешном удалении ответ будет содержать "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
BASHПример ответа
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3213c5dc94d0 postgres:12 "docker-entrypoint.s…" 5 days ago Up 4 days 5432/tcp pgsql
CODEЕсли вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.
MySQL
docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
BASHPostgreSQL
docker exec -it pgsql bash -c "psql -d isp"
BASHВыполните запрос:
select * from auth_user2acl;
SQLПример ответа
+----+------+-----+ | id | user | acl | +----+------+-----+ | 3 | 122 | 4 | +----+------+-----+
CODEСохраните значения из столбцов id и acl.
Выполните запросы:
delete from auth_acl where id=<id>;
SQLdelete from auth_user2acl where id=<acl>;
SQL<id> — значение столбца id из ответа на запрос в п.3
<acl> — значение столбца acl из ответа на запрос в п.3