Запросы доступа (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Рассмотрение и одобрение или отклонение запросов на доступ

Если вашей учётной записи не хватает одной из этих ролей, обратитесь к администратору кластера.

Выдача роли, которая может редактировать другие роли, может позволить пользователю постоянно повысить свои привилегии. Перед одобрением внимательно проверяйте запрашиваемые роли и итоговые права.

Создание запроса через веб-интерфейс

Запрос роли

  1. В левой панели выберите Resources → Access Requests → New Request.
  2. В выпадающем списке выберите Roles.
  3. Отметьте нужные роли и нажмите ADD TO REQUEST.
  4. Нажмите PROCEED TO REQUEST, укажите причину запроса и отправьте его.

Запрос ресурса

  1. Откройте Resources → Access Requests → New Request.
  2. Выберите Resources вместо ролей.
  3. Найдите нужный сервер, базу данных, приложение или объект Kubernetes.
  4. Добавьте ресурсы в запрос, укажите причину и отправьте.

Статус запроса можно отслеживать на странице 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-]+$

Дополнительные ресурсы