Руководство описывает подключение self-hosted PostgreSQL к Airlock через Database Service с взаимной TLS-аутентификацией.

Предварительные требования

  • Экземпляр PostgreSQL в вашей инфраструктуре.
  • Клиент psql в PATH на рабочей станции пользователя.
  • Хост для Database Service (Linux или Kubernetes).
  • Доступ к airctl на машине администратора.

Шаг 1. Join-токен и пользователь Airlock

airctl tokens add --type=db --format=text > /tmp/token

airctl users add --roles=access,db alice

Шаг 2. Сертификаты для mTLS

Database Service подключается к PostgreSQL по TLS. Сгенерируйте сертификат для хоста, с которого агент достигает PostgreSQL:

airctl auth sign --format=db --host=db.example.com --out=server --ttl=2190h

Будут созданы файлы server.cas, server.crt, server.key — их нужно разместить на сервере PostgreSQL.

Шаг 3. Настройка PostgreSQL

В postgresql.conf:

ssl = on
ssl_cert_file = '/path/to/server.crt'
ssl_key_file = '/path/to/server.key'
ssl_ca_file = '/path/to/server.cas'

В pg_hba.conf добавьте аутентификацию по клиентскому сертификату:

hostssl all             all             ::/0                    cert
hostssl all             all             0.0.0.0/0               cert

Убедитесь, что нет правил md5 с более высоким приоритетом для тех же подключений — иначе Airlock не сможет войти по сертификату.

Перезапустите PostgreSQL.

Шаг 4. Database Service

Linux

curl https://deckhouse.ru/downloads/airlock/install.sh | bash -s

sudo airlock db configure create \
  --token=/tmp/token \
  --name=example-postgres \
  --proxy=airlock.example.com:443 \
  --protocol=postgres \
  --uri=postgres.example.com:5432 \
  --output file:///etc/airlock.yaml

sudo systemctl enable --now airlock

Kubernetes

Установите chart airlock-kube-agent с ролью db и параметрами базы данных (см. Агент Kubernetes для добавления Helm-репозитория).

Шаг 5. Подключение

airsh login --proxy=airlock.example.com --user=alice
airsh db ls
airsh db connect --db-user=postgres --db-name=postgres example-postgres

Завершение сессии:

airsh db logout example-postgres

Список доступных баз зависит от роли RBAC — см. Политики доступа к базам.