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

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

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

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

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


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

 

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

Чтобы создать группу:

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

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

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

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

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

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

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

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


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

Создание ACL

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

  1. Получите токен авторизации:

    curl -X POST -H "accept: application/json" -H "Content-Type: application/json" 'https://domain.com/api/auth/v4/public/token' -d '{"email": "admin_email", "password": "admin_pass"}'
    CODE

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

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

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

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

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

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

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

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

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

Удаление 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".

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




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

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

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

    docker exec -it mysql bash -c "mysql <database> -p\$MYSQL_ROOT_PASSWORD"
    BASH

    <database> — имя базы данных, зависящее от типа платформы:

    • VMmanager — isp
    • DCImanager 6 — auth
  3. Выполните запрос: 

    select * from auth_user2acl;
    SQL

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

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

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

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

    delete from auth_user2acl where id=<id>;
    SQL

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

Может быть полезно

Связанные статьи: