Hashicorp Vault для хранения файлов?

Я ожидаю сохранить много документов значительного размера, от 1М до потенциально нескольких порядков большего размера. Я знаю, что Хэшикорп Хранилище отлично подходит для секретных ключей и меньших значений. Я хотел бы получить от него функциональность "разбития стекла" и ключевые функциональные возможности.

Кто-нибудь сделал какой-нибудь сравнительный анализ Vault с большими секретами? Я предполагаю, что у меня не будет проблем с количеством секретов в хранилище?

1 ответ

Производительность будет полностью зависеть от используемого вами хранилища. Если вы делаете что-то вроде репо для секретов с точным контролем доступа, тогда вам, вероятно, не понадобится HA, поэтому бэкэнд хранилища файлов будет в порядке, и вы могли бы использовать SSD для хорошей производительности.

Я бы посоветовал не использовать бэкэнд Transit для шифрования и хранения файлов по нескольким причинам:

1.) Миграция с одного бэкэнда хранилища на другой (например, хранилище файлов на бэкэнд HA) относительно проста / понятна, если вы используете только KV, когда вы используете расширенные функции хранилища, это не всегда легко / возможно. (Кстати, миграция между бэкэндами - это относительно новая функция, которую я заметил в Vault 1.0 ++)
2.) Вы можете перечислить все секреты, хранящиеся в магазине KV, и у вас есть версия. Тебе пришлось бы написать это самому, если бы ты пошел с Transit.
3.) Транзит не был предназначен для этого, неправильный инструмент для работы, KV это то, что вы ищете.


Если вы хотите хранить большие файлы внутри Vault:
Не используйте Консул отдельно (или вы будете ограничены размером до 0,5 МБ)
Должно быть возможно начать с:

storage "file" { path = "C:/Vault" }

и затем переходите к S3/Azure Blob + Consul, когда вам нужен HA

ha_backend "consul" {...}
storage "s3" {...} 

(Я бы порекомендовал вам сделать PoC, чтобы подтвердить, что вы можете перейти.)

Примечание. На практике я обнаружил, что никогда не храню секрет размером более 0,375 МБ, поэтому с Консулом все в порядке. Это более простая установка, и вы можете делать моментальные снимки времени. Кроме того, если вам понадобится место в будущем, вы можете просто перенастроить серверную часть хранилища.


Также следует избегать больших размеров файлов по следующей причине неудобств / накладных расходов:
Хранилище - это хранилище значений ключей, которое использует следующий синтаксис:

vault kv put secret/KEY key=value
vault kv put secret/dev config.json=base64'dstring

Если вы хотите сохранить двоичный файл или многострочную строку, вам нужно преобразовать ее в base64, чтобы преобразовать в строку из 1 строки, и сохранить ее в качестве значения. Хорошо, если вы получите файл 300 МБ, вам нужно будет создать строку в 400 МБ в кодировке base64. (Поскольку кодировка base64 добавляет непроизводительные издержки в 33%)

Если вы действительно хотите сделать это масштабируемым образом:
Я думаю, что идеальный способ сделать это - хранить симметричные ключи шифрования / дешифрования + Расположение зашифрованных файлов в Vault. Используйте Консул в качестве вашего хранилища. Используйте S3 в качестве хранилища файлов.

Если бы я собирался это сделать, я бы разместил Consul + Minio/Rook/Ceph(Self Hosted S3) на серверах Kubernetes + 2-3 хранилища либо на Kubernetes, либо для обеспечения максимальной безопасности на коробках с поддержкой Intel SGX с Vault SCONE Secure. Анклавы (зашифрованный ram) для защиты от эксплойтов Spectre/Meltdown/0 day root-дамп памяти. И сохраните файлы, симметрично зашифрованные на вашем DIY S3, и ключи дешифрования + ссылки на местоположение файла в Vault, а затем некоторые промежуточные программы, чтобы абстрагировать это. (Я предлагаю только S3 с собственным хостом, чтобы вы могли использовать несколько облаков + 100% инфраструктуру как код, но да, вы можете смешивать и согласовывать части проекта с вашими требованиями.)

Вместо того чтобы использовать Vault для фактического хранения файлов, вы можете использовать бэкэнд Transit для шифрования ваших файлов и их внешнего хранения.

Это позволит вам хранить ваши файлы там, где вы обычно их храните, получая при этом доступ к функциям секретного управления Vault.

Другие вопросы по тегам