Airlock поддерживает self-hosted OpenSearch и Elasticsearch через протокол elastic. Требуется mutual TLS с клиентскими сертификатами.
Предварительные требования
- Self-hosted OpenSearch или Elasticsearch (управляемые облачные сервисы без поддержки клиентских сертификатов не подходят).
- Хост для Database Service.
- Доступ к
airctl.
Шаг 1. Join-токен и Database Service
airctl tokens add --type=db --format=text > /tmp/token
sudo airlock db configure create \
--token=/tmp/token \
--name=my-opensearch \
--proxy=airlock.example.com:443 \
--protocol=elastic \
--uri=opensearch.example.com:9200 \
--output file:///etc/airlock.yaml
sudo systemctl enable --now airlockШаг 2. Пользователь Airlock
airctl users add --roles=access,db aliceШаг 3. Role mapping в OpenSearch
Сопоставьте пользователя Airlock с ролью OpenSearch:
curl -u admin:password -X POST "https://opensearch.example.com:9200/_plugins/_security/api/rolesmapping/all_access" \
-H 'Content-Type: application/json' -d '{
"users": ["alice"]
}'Для Elasticsearch используйте API _security/role_mapping/ с правилом по полю username.
Пример для Elasticsearch:
curl -u elastic:password -X POST "https://opensearch.example.com:9200/_security/role_mapping/mapping1?pretty" \
-H 'Content-Type: application/json' -d '{
"roles": ["user"],
"enabled": true,
"rules": {
"field": { "username": "alice" }
}
}'Шаг 4. Mutual TLS
airctl auth sign --format=elasticsearch --host=opensearch.example.com --out=elastic --ttl=2160hФайлы elastic.cas, elastic.crt, elastic.key — настройте их в конфигурации кластера.
Для OpenSearch в opensearch.yml:
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /path/to/elastic.crt
plugins.security.ssl.http.pemkey_filepath: /path/to/elastic.key
plugins.security.ssl.http.pemtrustedcas_filepath: /path/to/elastic.cas
plugins.security.ssl.http.clientauth_mode: REQUIREДля Elasticsearch 7.x+ с X-Pack в elasticsearch.yml:
xpack.security.http.ssl:
certificate_authorities: /path/to/elastic.cas
certificate: /path/to/elastic.crt
key: /path/to/elastic.key
enabled: true
client_authentication: required
verification_mode: certificate
xpack.security.authc.realms.pki.pki1:
order: 1
enabled: true
certificate_authorities: /path/to/elastic.casПерезапустите кластер.
Шаг 5. Подключение
airsh login --proxy=airlock.example.com --user=alice
airsh db ls
airsh db connect my-opensearch --db-user=aliceТуннель для GUI-клиентов:
airsh proxy db my-opensearch --db-user=alice --tunnelПодключите клиент (OpenSearch Dashboards, Elasticvue и т.п.) к http://localhost:<порт>.