Где и как лучше хранить конфиденциальные данные для разворачивания проекта?

Код проекта хранится в приватном git репо. Ключи и пароли от сторонних сервисов, с которыми проект взаимодействует (AWS, Robokassa, Paypal, Stripe), лежат вне репо – пока что у меня на локальном ноуте в 1Password, например. В проекте все приватные данные оказываются в переменных окружения, и оттуда берутся скриптами. Для Laravel это или через создание .env.php в корне проекта, или через конфиги веб-сервера или параметры при запуске docker-контейнера.

Во время разворачивания ещё требуются SSH-ключи и ключи от DigitalOcean.

Задачи сейчас:
  1. При нулевом ручном вмешательстве разворачивать новые серверы с проектом
  2. Привлечь сторонних девелоперов, которым production-ключи не показывать. Для разработки/тестирования есть отдельный набор ключей.
Вопрос: как и где лучше хранить и обновлять ключи, и как их вытаскивать при разворачивании проекта, не давая доступа к ним сторонних разработчиков? Т.е., видимо, должна быть одна точка авторизации - например, при запуске скрипта, которая открывает доступ к некому хранилищу с ключами и разворачивает новый сервер с проектом. Сами ключи хочется держать отдельно от скриптов деплоя.
  • Вопрос задан
  • 1880 просмотров
Решения вопроса 1
@skrimafonolog
Hashicorp Vault
или Ansible Vault

Несмотря на совпадение названий - это принципиально разные вещи.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@redakoc
Разделять/отделять/четко ограничивать полномочия.

Небольшой сервис, управляющий ключом, например, а остальные не имеют к ключам доступа, а только к этому сервису обращаются. А он им разрешает делать только то, что можно.

Или пример как работает CloudFlare KeyLess посмотрите.
Ответ написан
Комментировать
sim3x
@sim3x
переменные окружения

$ cat .env
varname1=123
varname2=234


#!/bin/bash

echo Vars import to env
export $(cat .env | xargs)

stackoverflow.com/a/20909045
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы