🔒 Как читать секреты Vault из контейнеров Docker |

🔒 Как читать секреты Vault из контейнеров Docker

Мануал

Шаг 1 – Подготовка к работе

Настройка Vault

Первый скрипт запускает контейнеры Consul и Vault  ./start-vault.sh

Vault упаковывается в контейнер, что означает, что вы не сможете читать / записывать данные.

Используйте скрипт помощника, чтобы распоковать vault ./unseal-vault.sh.

Error: No such container: vault-dev

Если вы увидели эту ошибку, то только потому, что Vault все еще инициализируется.

Завершающий этап – получение токена доступа; 

export VAULT_TOKEN=$(grep 'Initial Root Token:' keys.txt | awk '{print substr($NF, 1, length($NF)-1)}')

После входа в систему мы можем начать хранить и сохранять данные.

vault auth -address=${VAULT_ADDR} ${VAULT_TOKEN}

Шаг 2 – Создание данных

Запустив Vault, используйте интерфейс командной строки для сохранения секретов, необходимых для ваших приложений.

Vault может хранить любую конфиденциальную информацию, такую как пароли, сертификаты или ключи.

Сохранение данных

Выполните следующую команду, чтобы записать данные в vault.

Vault зашифрует данные перед сохранением в Consul.

Имя ключа – db-password , который мы храним в коллекции app-1.

Группировка секретов по приложениям облегчает управление.

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

vault write -address=${VAULT_ADDR} \
secret/app-1/db-password value=mysecretpassword

Примечание. Если вы используете CLI для заполнения Vault, убедитесь, что вы не сохранили команды в своем файле истории Bash.
Вы можете записывать данные в Vault несколькими способами.
Например, через файл vault write secret/password value=@data.tx

Шаг 3 – Настройте драйвер тома Docker

Теперь, когда данные сохранены, нам нужен наш Docker-контейнер, чтобы иметь возможность прочитать и получить доступ к секрету, в данном случае нашему паролю.

Мы сделаем это с помощью стороннего драйвера тома Docker под названием LibSecret.

Драйверы Volume – это плагины, расширяющие Docker.

Docker будет связываться с плагином при доступе к файловой системе.

Запуск плагина

Плагин должен работать как фоновое задание на вашем хосте Docker.

Nohup – это приложение Ubuntu, которое позволяет запускать задачи в фоновом режиме и завершается при перезагрузке системы.

Для сохранения процессов потребуется использовать SystemD.

При запуске LibSecret мы определяем адрес Vault и токен доступа.

На данный момент все контейнеры будут использовать один и тот же токен доступа.

nohup docker-volume-libsecret \
--addr $VAULT_ADDR \
--backend vault \
--store-opt token=$VAULT_TOKEN </dev/null &> libsecretlogs &

Запуск контейнера

Чтобы контейнеры использовали драйвер тома, нам нужно указать, когда контейнер запускается с помощью параметра –volume-driver.

Используя параметр Volume, мы сопоставляем коллекцию Vault с папкой файловой системы.

В этом случае мы отображаем secret/app-1 в Vault в папку с именем /secrets.

docker run -ti --rm \
--volume-driver libsecret \
-v secret/app-1/:/secrets \
alpine ash

Наш контейнер никогда не имеет доступа к vault или токену доступа.

Все управляется через драйвер тома.

На следующем шаге мы прочитаем эти секреты.

Шаг 4 – Просмотр секретов

Контейнер теперь имеет доступ на чтение ко всем ключам в коллекции app-1.

Он не сможет получить доступ к ключам в других коллекциях, как мы указали при запуске контейнера.

Каждый ключ в нашей коллекции доступен в виде файла.

Например, чтобы прочитать расшифрованное значение db-password, мы просто прочитем файл.

cat secrets/db-password

Драйвер тома обеспечивает доступ только для чтения.
Если мы попытаемся создать новые ключи или изменить значение, это приведет к ошибке.
echo 'Will this be stored?' > secrets/db-password
Пользователи также не могут перечислить все содержимое Vault, так как он разработан таким образом, что гарантирует, что злоумышленники не смогут легко просмотреть весь доступный контент.
ls /secrets
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий