Руководство описывает подключение self-hosted MySQL или MariaDB к Airlock через Database Service.

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

  • Экземпляр MySQL или MariaDB.
  • Хост для Database Service.
  • Доступ к airctl.

Шаг 1. Join-токен

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

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

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

Скопируйте server.cas, server.crt, server.key на хост с MySQL/MariaDB.

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

В mysql.cnf:

[mysqld]
require_secure_transport=ON
ssl-ca=/path/to/server.cas
ssl-cert=/path/to/server.crt
ssl-key=/path/to/server.key

Шаг 4. Настройка MariaDB

В mysql.cnf:

[mariadb]
require_secure_transport=ON
ssl-ca=/path/to/server.cas
ssl-cert=/path/to/server.crt
ssl-key=/path/to/server.key

Пользователь базы данных

Создайте пользователя с аутентификацией по сертификату:

CREATE USER 'alice'@'%' REQUIRE SUBJECT '/CN=alice';
GRANT ALL ON `mydb`.* TO 'alice'@'%';

Для существующего пользователя:

ALTER USER 'alice'@'%' REQUIRE SUBJECT '/CN=alice';

Airlock аутентифицирует пользователей по сертификатам; пароль для таких учётных записей не используется.

Шаг 5. Database Service и пользователь Airlock

airctl users add --roles=access,db alice

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

sudo systemctl enable --now airlock

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

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

Для подключения нужен клиент mysql или mariadb в PATH.

airsh db logout example-mysql