Запросы доступа (Access Requests) позволяют получить временное повышение привилегий — к дополнительным ролям или к конкретным ресурсам. Запрос проходит согласование: один или несколько рецензентов одобряют или отклоняют его.
В Airlock запросы доступа доступны через веб-интерфейс, CLI (airsh) и роли requester/reviewer. Поддерживаются запросы к ролям, к отдельным ресурсам (SSH, базы данных, Kubernetes, приложения) и согласование без участия администратора на сервере Auth Service.
Такой подход реализует принцип наименьших привилегий: постоянных администраторов с широкими правами становится меньше, а повышенный доступ выдаётся только на ограниченный срок и под конкретную задачу.
Airlock поддерживает два сценария:
| Тип | Когда использовать |
|---|---|
| Запрос роли (Role Access Request) | Нужны дополнительные роли для системных задач — например, роль dba для миграции базы данных |
| Запрос ресурса (Resource Access Request) | Нужен доступ к конкретному серверу, базе, приложению или объекту Kubernetes без знания внутренней RBAC-модели |
В одном запросе можно указать либо роли, либо ресурсы — смешивать оба типа нельзя.
Роли requester и reviewer
Для работы с запросами доступа администратор назначает пользователям предустановленные роли:
| Роль | Назначение |
|---|---|
requester | Создание запросов на доступ (Access Requests) |
reviewer | Рассмотрение и одобрение или отклонение запросов на доступ |
Если вашей учётной записи не хватает одной из этих ролей, обратитесь к администратору кластера.
Выдача роли, которая может редактировать другие роли, может позволить пользователю постоянно повысить свои привилегии. Перед одобрением внимательно проверяйте запрашиваемые роли и итоговые права.
Создание запроса через веб-интерфейс
Запрос роли
- В левой панели выберите Resources → Access Requests → New Request.
- В выпадающем списке выберите Roles.
- Отметьте нужные роли и нажмите ADD TO REQUEST.
- Нажмите PROCEED TO REQUEST, укажите причину запроса и отправьте его.
Запрос ресурса
- Откройте Resources → Access Requests → New Request.
- Выберите Resources вместо ролей.
- Найдите нужный сервер, базу данных, приложение или объект Kubernetes.
- Добавьте ресурсы в запрос, укажите причину и отправьте.
Статус запроса можно отслеживать на странице Access Requests.
Создание запроса через airsh
Запрос роли
# Вход в кластер
airsh login --proxy=airlock.example.com --user=alice
# Создание запроса на роль dba
airsh request create \
--roles=dba \
--reason="миграция базы данных сегодня вечером"По умолчанию команда ожидает одобрения. Чтобы отправить запрос без ожидания, добавьте флаг --nowait.
Можно запросить роль сразу при входе:
airsh login --user=alice --request-roles=dba
# Seeking request approval... (id: bc8ca931-fec9-4b15-9a6f-20c13c5641a9)После одобрения сертификат будет выдан с запрошенной ролью. Чтобы войти без ожидания, используйте --request-nowait — обычные роли выдаются сразу, а повышенный доступ активируется после одобрения.
Запрос ресурса
Сначала найдите ресурс:
airsh login --proxy=airlock.example.com --user=alice
# Поиск SSH-узлов (пустой список airsh ls — нормален без прямого доступа)
airsh request search --kind node
# Поиск с фильтром
airsh request search --kind node --search iotПоддерживаемые типы ресурсов: node, kube_cluster, db, app, windows_desktop, а также объекты внутри кластеров Kubernetes (pod, namespace, deployment и другие).
Создайте запрос по идентификатору ресурса из вывода airsh request search:
airsh request create \
--resource /airlock.example.com/node/b1168402-9340-421a-a344-af66a6675738 \
--reason="реагирование на инцидент 123"Команда выведет идентификатор запроса и будет ждать одобрения:
Creating request...
Request ID: f406f5d8-3c2a-428f-8547-a1d091a4ddab
Status: PENDING
Waiting for request approval...Автоматический запрос при отказе в доступе
Если настроены запросы к ресурсам, airsh ssh может создать запрос автоматически при отказе в доступе:
airsh ssh alice@iot
# ERROR: access denied to alice connecting to iot on cluster airlock.example.com
#
# You do not currently have access to alice@iot, attempting to request access.
#
# Enter request reason: нужен доступ для диагностики
# Creating request...
# Waiting for request approval...После одобрения подключение продолжится без дополнительных действий.
Рассмотрение запросов
Через веб-интерфейс
Пользователи с ролью reviewer открывают Management → Access Requests → Review Requests и видят список ожидающих запросов. Для каждого запроса доступны одобрение или отклонение.
Через airsh
airsh login --proxy=airlock.example.com --user=bob
# Список запросов, доступных для рассмотрения
airsh request ls --reviewable
# Подробности запроса
airsh request show f406f5d8-3c2a-428f-8547-a1d091a4ddab
# Одобрение
airsh request review --approve f406f5d8-3c2a-428f-8547-a1d091a4ddab
# Отклонение
airsh request review --deny f406f5d8-3c2a-428f-8547-a1d091a4ddabАдминистратор кластера при необходимости может рассматривать запросы через airctl на сервере Auth Service:
airctl requests ls
airctl request approve f406f5d8-3c2a-428f-8547-a1d091a4ddab
airctl request deny --reason="задача отменена" f406f5d8-3c2a-428f-8547-a1d091a4ddabИспользование одобренного запроса
Через airsh
После одобрения войдите с идентификатором запроса:
airsh login --request-id=f406f5d8-3c2a-428f-8547-a1d091a4ddabПроверьте активный профиль:
airsh status
# Active requests: f406f5d8-3c2a-428f-8547-a1d091a4ddab
# Roles: access, requester
# Allowed Resources: ["/airlock.example.com/node/b1168402-..."]При запросе роли права добавляются к текущим — пользователь сохраняет свои обычные роли плюс одобренные.
При запросе ресурса сертификат ограничен только одобренными ресурсами — доступ к остальным ресурсам временно блокируется.
Пример доступа к одобренному SSH-узлу:
airsh ls
airsh ssh alice@iotЧерез веб-интерфейс
Откройте одобренный запрос на странице Review Requests и нажмите ASSUME ROLES (для запросов ролей) или подключитесь к ресурсу из раздела Resources.
Пока активен повышенный доступ, в верхней части страницы отображается баннер. Чтобы вернуться к обычным правам, нажмите Switch Back.
Завершение повышенного доступа
Когда временный доступ больше не нужен, откажитесь от активного запроса:
airsh request dropМожно указать конкретный идентификатор:
airsh request drop f406f5d8-3c2a-428f-8547-a1d091a4ddabВ веб-интерфейсе используйте кнопку Switch Back в баннере активного запроса.
Просмотр своих запросов
# Все запросы текущего пользователя
airsh request ls --my-requests
# Детали конкретного запроса
airsh request show <request-id>Kubernetes: поиск и запрос объектов
Поиск подов в кластере:
airsh request search --kind=pod --kube-cluster=mycluster --kube-namespace=defaultЗапрос доступа к поду:
airsh request create \
--resource /airlock.example.com/pod/mycluster/development/nginx-1 \
--reason="отладка приложения"Для доступа ко всем подам в namespace можно использовать wildcard или регулярное выражение:
airsh request create \
--resource /airlock.example.com/pod/mycluster/*/^nginx-[a-z0-9-]+$