Что такое Ansible Vault?

Ansible Vault — это встроенная функция Ansible, которая шифрует конфиденциальные данные, такие как пароли, API ключи и сертификаты, чтобы их можно было безопасно хранить вместе с playbooks и roles в системе контроля версий. Она использует симметричное шифрование AES-256 с производной функцией ключа PBKDF2, что означает, что один пароль используется как для шифрования, так и для расшифровки. Зашифрованное содержимое Vault идентифицируется заголовком $ANSIBLE_VAULT;1.1;AES256, за которым следует hex-кодированный шифротекст.

Ansible Vault решает фундаментальную задачу DevOps: как хранить секреты в одном репозитории с кодом инфраструктуры, не раскрывая их. Вместо управления отдельными хранилищами секретов или использования переменных окружения, команды могут коммитить зашифрованные файлы непосредственно в Git и расшифровывать их во время выполнения playbook.

Описание инструмента

Этот инструмент шифрует и расшифровывает содержимое Ansible Vault прямо в браузере. Введите пароль vault и открытый текст для создания полностью совместимого зашифрованного blob, или вставьте существующий blob для раскрытия исходного секрета. Никакие данные не покидают браузер — все криптографические операции выполняются на стороне клиента.

Примеры

Шифрование открытого текста:

Входные данные (открытый текст):

db_password: s3cur3P@ss!

Выходные данные (зашифрованный vault):

$ANSIBLE_VAULT;1.1;AES256
33383239333036363833303565653032383832663162356533343630623030613133623032636566
6536303436646561356461623866386133623462383832620a646363626137626635353462386430
34333937313366383038346135656563316236313139333933383139376333353266666436316536
6335376265313432610a313537363637383264646261303637646631346137393964386432313633
3666

Расшифровка содержимого vault:

Вставьте зашифрованный блок выше с правильным паролем, чтобы восстановить исходное значение db_password: s3cur3P@ss!.

Возможности

  • Шифрование AES-256 полностью совместимо с форматом Ansible Vault 1.1
  • Только на стороне клиента — данные не отправляются на какой-либо сервер
  • Поддерживает как шифрование, так и расшифровку с помощью одного поля пароля
  • Мгновенное преобразование с живым предпросмотром по мере ввода
  • Работает с многострочными секретами, фрагментами YAML и произвольным текстом

Варианты использования

  • Быстрое шифрование нового секрета перед коммитом в Git репозиторий, содержащий Ansible playbooks
  • Расшифровка и проверка содержимого vault во время отладки без необходимости локальной установки Ansible
  • Обмен зашифрованными секретами с коллегами, которые могут расшифровать их в браузере, используя общий пароль vault

Как это работает

Ansible Vault 1.1 использует следующий процесс:

  1. Производная функция ключа — PBKDF2-HMAC-SHA256 производит 80-байтовый ключ из пароля и случайной соли (10 000 итераций). Ключ разбивается на 32-байтовый ключ шифрования, 32-байтовый ключ HMAC и 16-байтовый IV.
  2. Шифрование — открытый текст шифруется с помощью AES-256-CTR, используя производный ключ и IV.
  3. Аутентификация — HMAC-SHA256 вычисляется над шифротекстом для обеспечения целостности.
  4. Кодирование — соль, дайджест HMAC и шифротекст кодируются в hex и объединяются под заголовком $ANSIBLE_VAULT;1.1;AES256.

Расшифровка обращает процесс вспять: пароль повторно производит те же ключи, проверяет HMAC и расшифровывает шифротекст.

Ограничения

  • Поддерживает только формат Ansible Vault 1.1 с шифрованием AES-256
  • Не поддерживает метки vault ID для установок с несколькими паролями
  • Большие файлы могут вызвать кратковременные задержки интерфейса из-за ресурсоемкого этапа производной функции ключа