Руководство описывает подключение 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 airlockKubernetes
Установите 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 — см. Политики доступа к базам.