Airlock использует ролевую модель доступа (RBAC). Роль содержит два списка правил: allow и deny.

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

Роли и другие динамические ресурсы управляются через веб-интерфейс Airlock, утилиту airctl или API.

Просмотр ролей

airsh login --user=admin --proxy=airlock.example.com
airctl get roles

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

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

Версии ролей

Поддерживаются версии v3–v7. Версии v4 и выше обратно совместимы с v3; отличие — значения по умолчанию для незаданных полей.

МеткаПо умолчанию v3По умолчанию v4+
node_labels[{"*": "*"}] при наличии logins, иначе [][]
app_labels[{"*": "*"}][]
kubernetes_labels[{"*": "*"}][]
db_labels[{"*": "*"}][]

Версия v6 добавила поле kubernetes_resources для детального контроля ресурсов Kubernetes.

RBAC для инфраструктурных ресурсов

Роль определяет, к каким ресурсам (приложения, серверы, базы данных) пользователь имеет доступ. Механизм: метки на ресурсах + правила allow/deny в роли.

Пример: инфраструктура разделена метками environment=production и environment=staging. Роль стажёра может разрешать доступ только к environment=staging.

Пример роли с метками

kind: role
version: v5
metadata:
  name: example-role
spec:
  allow:
    node_labels:
      'env': 'stage'
  deny:
    node_labels:
      'workload': ['database', 'backup']

Несколько меток в одном правиле интерпретируются как логическое «И»:

    db_labels:
      'env': 'prod'
      'region': ['eu-central-1', 'eu-west-1']

Расширенный синтаксис меток

kind: role
version: v5
metadata:
  name: example-role
spec:
  allow:
    node_labels:
      'environment': 'test'
      '*': '*'
      'environment': ['test', 'staging']
      'environment': '^test|staging$'

Опции роли

Опции ограничивают параметры сессий. При нескольких ролях применяются комбинированные правила:

ОпцияОписаниеПоведение при нескольких ролях
max_session_ttlМаксимальный TTL SSH-сертификатаМинимальный TTL
forward_agentSSH agent forwardingЛогическое «ИЛИ»
port_forwardingTCP port forwardingЛогическое «ИЛИ»
ssh_file_copySCP/SFTPЛогическое «И»
client_idle_timeoutЗавершение неактивных сессийМинимальное значение
require_session_mfaMFA на каждую сессиюЛогическое «ИЛИ»
pin_source_ipПривязка к IP источникаЛогическое «ИЛИ»

Создание роли

airctl create -f my-role.yaml
airctl get roles --format text

Назначение роли пользователю:

airctl users update alice --set-roles=access,my-role

Разделы документации

  • SSH-хосты — логины, метки узлов, опции SSH-сессий
  • Kubernetes — кластеры, группы, пользователи и ресурсы Kubernetes
  • Базы данных — метки БД, учётные записи и имена баз