Назрел вопрос о хранении информации (хосты, данные для доступа и проч.) для конфигурационных файлов и использование этих данных в конфигах тестов.
Ситуация на данный момент такова, что имеется сколько-то репозиториев с тестами под разные сервисы. Сервисы +/- используют, иногда одинаковые данные для доступов (к БД, очередям проч.), иногда разные т.е. в каждой репо сейчас лежит свой конфиг с данными для доступов. И мне это не очень нравится т.к. в случае изменений нужно исправлять конфиги в нескольких репо.
На проекте сейчас используется Gitlab CI, и человек знающий сразу же напомнит мне о Credentials, однако в community версии нет возможности использовать Vault by HashiCorp вообще (только в версии EE). Остается только использование защищенных переменных (“variables protected”). Однако, вариант вбивать 30-50 переменных в CI, затем их же в .gitlab-ci.yml мне не очень нравится (хотя, так делают, видел).
Единственный вариант, который сейчас смог придумать - отдельный сервис для хранения этих данных. Может какое-либо защищенное хранилище? Хотелось бы услышать ваши мысли на этот счет.
Вторая мысль, как продолжение первой - генерация конфига на основе данных полученных их хранилища. Может кто-нибудь видел/знает подобные реализации на чем угодно? (на край, сам напишу, определиться бы какое хранилище использовать).
В целом, любопытно было бы услышать мнение коллег по этому поводу (не исключаю, что я сильно загнался).
ну тут главное прицениться к тому, что удобнее будет поддерживать
в принципе, я думаю хранить в protected variables гитлаба токен доступа к секретам в vault уже достаточно будет, а в коде реализовать метод получения условно пароля по логину с помощью указанного выше токена (он же будет доступен раннеру в процессе выполнения джобы через переменные окружения)
Да, совершенно верно. Есть мысли что удобнее использовать в качестве хранилища? Vault, конечно, хорошо. Но беглый осмотр API вообще не воодушевил. Может что-то проще существует?
а что не так с волтом? я помню только, что там в урле надо передавать путь до секретов, а в остальном просто сделайте отдельную коллекцию текстовых секретов, отдельный токен на чтение до этой коллекции и всё
собираете урл по ключу, получаете json со значением и мета данными
С Vault то все нормально, просто у него очень богатый функционал - придется потратить время на разбиралово (чтение доков, эксперименты) т.к. никогда с ним не сталкивался. Но видимо, придется использовать его.
The kv secrets engine is a generic Key-Value store used to store arbitrary secrets within the configured physical storage for Vault. This backend can be run in one of two modes; either it can be configured to store a single value for a key or, versioning can be enabled and a configurable number of versions for each key will be stored.
просто если вы не админите, то ваша задача состоит в том, чтоб попросить у админов выдать вам токен до вашей коллекции, который вы будете указывать в хэдере запроса, а дальше просто делать запрос до нужного секрета
Понял, спасибо.
Про первое - читал уже. Да, надо “распечатывать” хранилище после перезапусков.
Вот все эти настройки чрезмерные для моей задачи они смущают (не понятно где споткнешься).
Давайте отойдем от Vaulta. Может можно использовать просто noSQL БД? Существует в какой-нибудь noSQL БД возможность шифрования, например?
Вроде пишут “Версия MongoDB 4.2 получила поддержку шифрования данных на уровне полей (field-level encryption, FLE)”
UPDATE: Доступно только в MongoDB Enterprise. (at-rest)