Способы хранения секретов

ADCM поддерживает различные хранилища секретов, что позволяет безопасно работать с чувствительными данными и использовать внешние системы.

Ниже приведена таблица с секретами, которые создаются при первичном запуске ADCM.

Основные секреты
Путь к секрету Описание

/adcm/ansible/ansible_vault

Секрет, используемый Ansible для шифрования конфиденциальных данных

/adcm/django/secret_key

Секретный ключ, используемый приложением Django

/adcm/backend/status_service_token

Токен, используемый бэкенд-сервером (Backend Server) для аутентификации в статус-сервере (Status Server)

/adcm/status_service/adcm_token

Токен, используемый статус-сервером для аутентификации в ADCM

/adcm/status_checker/status_service_token

Токен, используемый компонентом, отправляющим heartbeat о состоянии компонента на хосте, для аутентификации в статус-сервере

ADCM предоставляет возможность хранения секретов двумя способами:

  • в файловой системе (FilesystemBackend);

  • в Vault (VaultBackend).

Выбор используемого хранилища определяется переменной окружения SECRET_BACKEND.

По умолчанию используется файловое хранилище. При необходимости можно настроить использование Vault.

Файловое хранилище

По умолчанию ADCM хранит секреты в файловой системе. Секреты сохраняются в файле /adcm/data/var/secrets_v2.json, который создается автоматически при установке ADCM. Использование файлового хранилища не требует дополнительной настройки и применяется, если не указано иное хранилище секретов.

Пример структуры файла secrets_v2.json:

{
  "adcm": {
    "ansible": {
      "ansible_vault": "..."
    },
    "django": {
      "secret_key": "..."
    },
    "backend": {
      "status_service_token": "..."
    },
    "status_service": {
      "adcm_token": "..."
    },
    "status_checker": {
      "status_service_token": "..."
    }
  }
}

Vault

ПРИМЕЧАНИЕ
При первичной установке ADCM автоматически генерирует необходимые секреты и сохраняет их в выбранном хранилище. Если выполняется обновление ADCM с переходом с файлового хранилища на Vault, необходимо предварительно выполнить миграцию секретов вручную. Подробнее см. в статье Миграция секретов в Vault.

ADCM поддерживает работу с Vault, в качестве которого может использоваться HashiCorp Vault или другие совместимые решения (например, OpenBao).

Для использования Vault необходимо выполнить следующие предварительные требования:

  • Создать токен с правами чтения/записи секретов.

  • Создать mount point, который будет использоваться ADCM (VAULT_MOUNT_POINT).

Токен необходимо сохранить в файл на хосте ADCM (например, в /opt/adcm/token), так как в дальнейшем этот файл указывается в переменной VAULT_TOKEN_FILE.

Интеграция ADCM с Vault осуществляется посредством указания соответствующих переменных окружения. Подробная информация о переменных окружения, используемых для настройки подключения к Vault, приведена в статье Установка.

ПРИМЕЧАНИЕ
Для включения Vault необходимо указать переменную окружения SECRET_BACKEND со значением VaultBackend. Если переменная SECRET_BACKEND не определена, по умолчанию используется файловое хранилище секретов (FilesystemBackend).

Ниже приведен пример запуска ADCM с использованием Vault.

$ docker run -d \
    --name adcm \
    -p 8000:8000 \
    -v adcm-data:/adcm/data \
    -v /opt/adcm/conf/ssl:/etc/ssl/certs \
    -v /opt/adcm/token:/adcm/token \
    -e DB_HOST="<DB_HOST>" \
    -e DB_PORT="<DB_PORT>" \
    -e DB_USER="<DB_USER>" \
    -e DB_NAME="<DB_NAME>" \
    -e DB_PASS="<DB_PASSWORD>" \
    -e SECRET_BACKEND="VaultBackend" \
    -e VAULT_URL="<VAULT_URL>" \
    -e VAULT_MOUNT_POINT="<VAULT_MOUNT_POINT>" \
    -e VAULT_TOKEN_FILE="/adcm/token" \
    hub.arenadata.io/adcm/adcm:<version>

где <version> — это версия Docker-образа в одном из следующих форматов:

  • <major>.<minor>.<patch> — если необходим конкретный патч ADCM. Пример: 2.0.0.

  • <major>.<minor> — если необходим последний патч в рамках выбранной версии ADCM. Пример: 2.0.

Вы можете использовать переменные окружения VAULT_CA_FILE, VAULT_CLIENT_CERT_FILE и VAULT_CLIENT_KEY_FILE для установки защищенного подключения к Vault.

Подготовьте файлы SSL-сертификатов и разместите их в доступном каталоге (например, /etc/ssl/certs). Затем укажите пути к ним с помощью переменных окружения:

-e VAULT_CA_FILE="/adcm/data/conf/ssl/ca.crt" \
-e VAULT_CLIENT_CERT_FILE="/adcm/data/conf/ssl/client.crt" \
-e VAULT_CLIENT_KEY_FILE="/adcm/data/conf/ssl/client.key"
ВАЖНО
  • latest использовался для ранних версий ADCM и начиная с версии 2.0.0 больше не поддерживается.

  • До выпуска ADCM 2.0.0 для версионирования использовался следующий формат: YYYY.MM.DD.HH.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней