В Airlock любому локальному, SSO- или робот-пользователю можно назначить одну или несколько ролей. Роли определяют доступ к базам данных, SSH-серверам, кластерам Kubernetes, рабочим столам Windows и веб-приложениям.

Локальные пользователи — это учётные записи, управляемые непосредственно через Airlock, а не через внешний провайдер идентификации. Все локальные пользователи хранятся в backend состояния кластера: имя, роли, traits и bcrypt-хеш пароля.

Предустановленные роли

Airlock предоставляет несколько предустановленных ролей:

РольОписание
accessДоступ к ресурсам кластера
editorРедактирование настроек конфигурации кластера
auditorЧтение событий кластера, аудит-логов и воспроизведение записей сессий
requesterСоздание запросов на доступ (Access Requests)
reviewerРассмотрение и одобрение запросов на доступ

Добавление локальных пользователей

Для управления локальными пользователями используется утилита airctl. Добавьте пользователя Alice с ролью editor:

airctl users add alice --roles=editor

При необходимости можно указать несколько ролей и разрешённые OS-логины:

airctl users add joe --logins=joe,root --roles=access,editor

Airlock генерирует одноразовую ссылку-приглашение (действительна один час). Пользователь переходит по ссылке, задаёт пароль и при необходимости настраивает MFA. После регистрации учётная запись отображается в списке:

airctl users ls

Пример вывода:

User                 Roles
-------------------- --------------
alice                editor
joe                  access, editor

Обновление ролей

Обновите роли пользователя командой airctl users update:

airctl users update alice --set-roles=editor,auditor

Если у пользователя несколько ролей, разрешения объединяются (логическое «ИЛИ»). Пользователь может одновременно выполнять функции администратора и аудитора.

Редактирование и удаление

Получить определение пользователя для редактирования:

airctl get user/joe > joe.yaml
# отредактируйте joe.yaml
airctl create -f joe.yaml

Удалить локального пользователя:

airctl users rm joe

Создание пользовательской роли

Создайте роль для стажёров с доступом к тестовым и staging SSH-серверам, мониторинговым приложениям и dev-кластеру Kubernetes.

Сохраните роль в файл interns.yaml:

kind: role
version: v6
metadata:
  name: interns
spec:
  allow:
    logins: ['readonly']
    kubernetes_groups: ["view"]
    node_labels:
      'env': ['staging', 'test']
    kubernetes_labels:
      'env': 'dev'
    kubernetes_resources:
      - kind: 'pod'
        namespace: "*"
        name: "*"
    app_labels:
      'type': ['monitoring']
  deny:
    node_labels:
      'env': 'prod'
    kubernetes_labels:
      'env': 'prod'
    kubernetes_resources:
      - kind: 'pod'
        namespace: 'prod'
        name: '*'
    db_labels:
      'env': 'prod'
    app_labels:
      'env': 'prod'

Создайте роль:

airctl create -f interns.yaml
airctl get roles --format text

Принципы RBAC

Роль Airlock содержит два списка правил: allow и deny.

  • По умолчанию доступ запрещён.
  • Правила deny проверяются первыми и имеют приоритет.

Доступ к ресурсам настраивается через метки (labels) на ресурсах и соответствующие правила в роли. Несколько меток в одном правиле интерпретируются как логическое «И».

Блокировка после неудачных попыток входа

Локальный пользователь блокируется на 20 минут, если за 30 минут было несколько неудачных попыток входа или сброса пароля.

Разблокировать пользователя может администратор с правами на ресурсы user (роль editor):

airctl get users/alice > user.yaml

Отредактируйте поле status.is_locked на false и примените изменения:

airctl create -f user.yaml

Следующие шаги

  • Настройте OIDC или SAML для единого входа
  • Включите OTP или WebAuthn для двухфакторной аутентификации
  • Ознакомьтесь с политиками доступа для SSH, Kubernetes и баз данных