В 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,editorAirlock генерирует одноразовую ссылку-приглашение (действительна один час). Пользователь переходит по ссылке, задаёт пароль и при необходимости настраивает 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 и баз данных