Вы можете разрешить пользователям платформы авторизоваться только с определённых IP-адресов и подсетей. Для этого:

  1. Создайте в платформе группы пользователей.
  2. Задайте для каждой группы список разрешённых IP-адресов.

Если пользователь платформы находится в группе и пытается авторизоваться с IP-адреса, которого нет в настройках группы, платформа заблокирует доступ пользователя к сервису авторизации.

Если пользователь не состоит ни в одной из групп, он может авторизоваться в платформе с любого IP-адреса.

Управление группами пользователейLink to Управление группами пользователей


Для управления группами перейдите в ПользователиГруппы пользователей.


Интерфейс раздела


Для создания группы:

  1. Нажмите Создать группу.
  2. Укажите параметры группы:
    1. Название.
    2. IP-адреса для доступа к платформе. Список может содержать отдельные IP-адреса, диапазоны и подсети IP-адресов.
  3. Нажмите Сохранить.

Пример создания группы


Чтобы изменить настройки созданной группы, нажмите  или Настроить.

Чтобы удалить группу, нажмите или Удалить.

Чтобы добавить или удалить пользователей из группы:

  1. Нажмите Изменить участников группы.
  2. Выберите пользователей, которых надо добавить.
  3. Снимите отметку у пользователей, которых надо удалить.
  4. Нажмите Сохранить изменения.

Пример изменения участников группы

Управление доступом через APILink to Управление доступом через API


Для каждой группы пользователей платформа создаёт список управления доступом (ACL). ACL содержит email участников группы и списки разрешённых IP-адресов.

Создание ACLLink to Создание ACL

Чтобы создать ACL:

  1. Если на сервере не установлена утилита curl, установите её: 
    dnf install curl || apt install curl
    CODE
  2. Получите токен авторизации:

    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"}'
    CODE

    example.com — доменное имя или IP-адрес сервера с платформой

    admin_email — email администратора платформы

    admin_pass — пароль администратора платформы

    В ответ придёт сообщение вида:

    Пример ответа в JSON

    {
      "confirmed": true,
      "expires_at": null,
      "id": "6",
      "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a"
    }
    CODE

    Сохраните полученное значение параметра token — токен авторизации.

  3. Выполните запрос:

    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

Просмотр ACLLink to Просмотр ACL

Чтобы посмотреть все созданные ACL, выполните запрос:

curl -H 'x-xsrf-token: <token>' GET https://domain.com/auth/v4/acl
CODE

<token> — токен авторизации

domain.com — доменное имя сервера с платформой

Чтобы посмотреть конкретный ACL, выполните запрос:

curl -H 'x-xsrf-token: <token>' GET https://domain.com/auth/v4/acl/<acl_id>
CODE

<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"
  ]
}
CODE

Удаление ACLLink to Удаление ACL

Чтобы удалить конкретный ACL, выполните запрос:

curl -H 'x-xsrf-token: <token>' -X DELETE https://domain.com/auth/v4/acl/<acl_id>
CODE

<token> — токен авторизации

domain.com — доменное имя сервера с платформой

<acl_id> — id созданного ACL

При успешном удалении ответ будет содержать "true".

Если потерян доступ к платформеLink to Если потерян доступ к платформе


Обратите внимание!

Раздел содержит команды по изменению базы данных (БД) платформы. Перед выполнением этих действий рекомендуем создать резервную копию платформы.

Если из-за ошибок в настройках ACL доступ к платформе был потерян, вы можете удалить ACL из базы данных платформы:

  1. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Подключитесь к БД платформы:

    В связи с поэтапным переходом платформы на использование СУБД 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"
    BASH

    PostgreSQL

    docker exec -it pgsql bash -c "psql -d isp"
    BASH
  3. Выполните запрос: 

    select * from auth_user2acl;
    SQL

    Пример ответа

    +----+------+-----+
    | id | user | acl |
    +----+------+-----+
    |  3 |  122 |   4 |
    +----+------+-----+
    CODE

    Сохраните значения из столбцов id и acl.

  4. Выполните запросы: 

    delete from auth_user2acl where id=<id>;
    SQL
    delete from auth_acl where id=<acl>;
    SQL

    <id> — значение столбца id из ответа на запрос в п.3

    <acl> — значение столбца acl из ответа на запрос в п.3