RBAC Airlock позволяет задавать детальные разрешения для аутентификации на Linux-серверах, подключённых к Airlock.
Пример политики: администраторы серверов имеют доступ ко всему, QA и инженеры — полный доступ к staging, инженеры могут получить временный доступ к production в экстренных случаях.
Конфигурация роли
Ресурс role предоставляет следующие средства ограничения доступа к серверам:
kind: role
version: v5
metadata:
name: developer
spec:
allow:
logins: [ubuntu, debian, '{{internal.logins}}']
node_labels:
'env': 'test'
'*': '*'
'region': ['eu-central-1', 'eu-west-1']
'reg': '^eu-central-1|eu-west-1$'
host_groups: [ubuntu, nginx, other]
host_sudoers:
- 'ALL=(ALL) NOPASSWD: ALL'
deny:
logins:
- rootПравила deny имеют приоритет. В примере выше попытка входа под root будет отклонена.
Шаблонные переменные
Поля роли поддерживают шаблонные переменные.
Переменные {{external.xyz}} заменяются значениями от SSO-провайдера. Для OIDC xyz — claim; для SAML — assertion.
Пример: назначение окружений и логинов из SAML-атрибутов:
spec:
allow:
node_labels:
- env: '{{external.environments}}'
logins:
- '{{external.allowedlogins}}'Переменная {{internal.logins}} применяется к локальным пользователям и trusted clusters. Локальный пользователь с trait logins: jeff получит логины jeff и ubuntu:
spec:
allow:
logins: ['{{internal.logins}}', ubuntu]Опции роли для SSH
Блок options задаёт возможности Airlock для пользователей с ролью:
spec:
options:
create_host_user_mode: drop
forward_agent: true
port_forwarding: true
ssh_file_copy: false
client_idle_timeout: never
disconnect_expired_cert: no
max_sessions: 10
enhanced_recording:
- command
- disk
- network
permit_x11_forwarding: true
max_connections: 2
record_session:
default: best_effort
ssh: best_effort
require_session_mfa: true
pin_source_ip: true
cert_extensions:
- type: ssh
mode: extension
name: login@example.com
value: "{{ external.login }}"| Опция | Описание |
|---|---|
create_host_user_mode | Автосоздание пользователя на хосте (drop, keep, off) |
forward_agent | SSH agent forwarding |
port_forwarding | TCP port forwarding |
ssh_file_copy | SCP/SFTP (по умолчанию true) |
require_session_mfa | Дополнительный MFA при начале сессии |
pin_source_ip | Привязка сертификата к IP входа |
Пример: разделение окружений
kind: role
version: v5
metadata:
name: staging-access
spec:
allow:
logins: [ubuntu, deploy]
node_labels:
'env': 'staging'
deny:
node_labels:
'env': 'prod'Создание и назначение:
airctl create -f staging-access.yaml
airctl users update developer --set-roles=access,staging-accessПроверка доступа
Пользователь видит доступные серверы:
airsh lsПодключение к серверу:
airsh ssh user@hostname