Миграция секретов в Vault

При переходе с файлового хранилища (FilesystemBackend) на Vault (VaultBackend) необходимо перенести существующие секреты в Vault. Для этого используется команда load скрипта manage_secrets.py, которая переносит секреты из файла secrets_v2.json в Vault.

ВАЖНО
Обратная миграция секретов из Vault в файловое хранилище не поддерживается.

Команда load считывает секреты из файла (по умолчанию используется /adcm/data/var/secrets_v2.json) и загружает их в настроенный экземпляр Vault.

Также команда поддерживает следующие флаги:

  • --force — позволяет перезаписать существующие секреты в Vault.

  • --file <file_path> — определяет путь к файлу с секретами.

Чтобы выполнить миграцию секретов из локального хранилища в Vault, выполните следующие действия:

ПРИМЕЧАНИЕ
Предварительно сохраните токен в файл на хосте (например, в /opt/adcm/token), так как в дальнейшем этот файл указывается в переменной окружения VAULT_TOKEN_FILE.
  1. Остановите и удалите контейнер ADCM:

    $ sudo docker rm -f adcm
    ВАЖНО
    Не удаляйте именованный том adcm-data, так как в нем находится файл секретов.
  2. Запустите контейнер ADCM в режиме MAINTENANCE_MODE, указав настройки подключения к Vault, не указывая значение переменной SECRET_BACKEND:

    $ docker run -d -it \
        --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 VAULT_URL="<VAULT_URL>" \
        -e VAULT_MOUNT_POINT="<VAULT_MOUNT_POINT>" \
        -e VAULT_TOKEN_FILE="/adcm/token" \
        -e MAINTENANCE_MODE=1 \
        hub.arenadata.io/adcm/adcm:<version>

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

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

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

    ПРИМЕЧАНИЕ
    До выпуска ADCM 3.0.0 для запуска контейнера в режиме обслуживания использовалась переменная окружения MIGRATION_MODE.
  3. Выполните загрузку секретов в Vault:

    $ docker exec -it adcm /adcm/.venv/bin/python3 /adcm/python/manage_secrets.py load
    ПРИМЕЧАНИЕ

    В версии ADCM 2.12.0 используйте команду:

    $ docker exec -it adcm python3 /adcm/python/manage_secrets.py load

    Ожидаемый результат выполнения команды:

    Secrets were loaded
  4. Остановите и удалите контейнер ADCM:

    $ sudo docker rm -f adcm
  5. Запустите ADCM в штатном режиме с использованием переменной SECRET_BACKEND="VaultBackend":

    $ 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" \
        -e VAULT_CA_FILE="<CA_CERT_PATH>" \
        -e VAULT_CLIENT_CERT_FILE="<CLIENT_CERT_PATH>" \
        -e VAULT_CLIENT_KEY_FILE="<CLIENT_KEY_PATH>" \
        hub.arenadata.io/adcm/adcm:<version>
  6. После запуска ADCM в штатном режиме убедитесь, что:

    • Веб-интерфейс ADCM доступен и работает корректно.

    • В интерфейсе Vault по пути, указанному в переменной VAULT_MOUNT_POINT, успешно созданы записи с секретами.

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