Миграция секретов в 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.
|
-
Остановите и удалите контейнер ADCM:
$ sudo docker rm -f adcmВАЖНОНе удаляйте именованный томadcm-data, так как в нем находится файл секретов. -
Запустите контейнер 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. -
-
Выполните загрузку секретов в 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
-
Остановите и удалите контейнер ADCM:
$ sudo docker rm -f adcm -
Запустите 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> -
После запуска ADCM в штатном режиме убедитесь, что:
-
Веб-интерфейс ADCM доступен и работает корректно.
-
В интерфейсе Vault по пути, указанному в переменной
VAULT_MOUNT_POINT, успешно созданы записи с секретами.
-