Вы можете разрешить пользователям платформы авторизоваться только с определённых IP-адресов и подсетей. Для этого:
- Создайте в платформе группы пользователей.
- Задайте для каждой группы список разрешённых IP-адресов.
Если пользователь платформы находится в группе и пытается авторизоваться с IP-адреса, которого нет в настройках группы, платформа заблокирует доступ пользователя к сервису авторизации.
Если пользователь не состоит ни в одной из групп, он может авторизоваться в платформе с любого IP-адреса.
Управление группами пользователей
Для управления группами перейдите в раздел Пользователи → вкладка Группы пользователей.
Интерфейс раздела
Чтобы создать группу:
- Нажмите кнопку Добавить группу.
- Укажите параметры группы:
- Название.
- IP-адреса для доступа к платформе. Список может содержать отдельные IP-адреса, диапазоны и подсети IP-адресов.
- Нажмите кнопку Сохранить.
Пример создания группы
Чтобы изменить настройки созданной группы, нажмите значок .
Чтобы удалить группу, нажмите значок .
Чтобы добавить или удалить пользователей из группы:
- Нажмите значок .
- Выберите пользователей, которых надо добавить.
- Снимите отметку у пользователей, которых надо удалить.
- Нажмите кнопку Сохранить изменения.
Пример изменения участников группы
Управление доступом через API
Для каждой группы пользователей платформа создаёт список управления доступом (ACL). ACL содержит email участников группы и списки разрешённых IP-адресов.
Создание ACL
Чтобы создать ACL:
-
Получите токен авторизации:
curl -k -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"}'
Пояснения к командеВ ответ придёт сообщение вида:
Пример ответа в 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.
-
Подключитесь к БД платформы:
docker exec -it mysql bash -c "mysql <database> -p\$MYSQL_ROOT_PASSWORD"
Пояснения к команде -
Выполните запрос:
select * from auth_user2acl;
Пример ответа+----+------+-----+ | id | user | acl | +----+------+-----+ | 3 | 122 | 4 | +----+------+-----+
Сохраните значение из столбца id.
-
Выполните запрос:
delete from auth_user2acl where id=<id>;
Пояснения
Связанные статьи: