Перейти к основному содержимому
Версия: 7.0

Модель безопасности Zero-Knowledge

Что такое Zero-Knowledge

Zero-Knowledge (ZK) — архитектурный принцип, при котором сервер не имеет доступа к расшифрованным данным. Шифрование и расшифровка происходят только на стороне клиента.

Простыми словами: даже если злоумышленник получит полный доступ к серверу и базе данных Пассворка, он увидит только зашифрованный «мусор» — без ключей пользователей прочитать секреты невозможно.

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

┌─────────────────┐                      ┌─────────────────┐
│ Клиент │ │ Сервер │
│ (браузер/CLI) │ │ Пассворка │
├─────────────────┤ ├─────────────────┤
│ Ключи шифрования│ ──── HTTPS ────► │ Зашифрованные │
│ Расшифровка │ ◄── HTTPS ──── │ данные │
│ Шифрование │ │ Метаданные │
└─────────────────┘ └─────────────────┘
Что хранится на сервереЧто знает только клиент
Зашифрованные пароли и поляКлючи шифрования
Зашифрованные вложенияРасшифрованные значения
Названия записей и папокМастер-пароль пользователя
Структура прав доступа
Журнал аудита операций

Преимущества для безопасности

Защита от компрометации сервера

Даже при полном доступе к серверу злоумышленник не сможет:

  • прочитать пароли и секреты;
  • расшифровать вложения (ключи, сертификаты);
  • восстановить значения из бэкапов БД.

Защита от инсайдеров

Администраторы Пассворка (системные администраторы, DBA) не имеют технической возможности просмотреть содержимое секретов — даже с прямым доступом к базе данных.

Соответствие требованиям ИБ

Zero-Knowledge упрощает прохождение аудитов безопасности: можно доказать, что даже привилегированные пользователи инфраструктуры не имеют доступа к секретам.

подсказка

В коробочной версии Пассворка Zero-Knowledge режим может быть отключён администратором. Уточните настройки у вашей команды ИБ.

Влияние на автоматизацию

Zero-Knowledge накладывает ограничения на то, что может делать сервер самостоятельно.

Что сервер НЕ может делать

ОперацияПочему невозможна
Автоматическая ротация паролейНет ключей для расшифровки/шифрования
Проверка качества паролейЗначения зашифрованы
Интеграция с внешними системами «из коробки»Нужен клиент с ключами

Как это решается

Для ротации и сложной автоматизации используйте внешний клиент — скрипт или сервис, который:

  1. Аутентифицируется в Пассворке (получает токены).
  2. Получает и расшифровывает секреты через CLI/SDK.
  3. Выполняет действия в целевых системах (БД, сервисы).
  4. Шифрует и записывает новые значения обратно.
┌──────────────┐      ┌──────────────┐      ┌──────────────┐
│ Скрипт │ │ Пассворк │ │ Целевая │
│ ротации │ ───► │ (хранит) │ │ система │
│ │ ◄─── │ │ │ (PostgreSQL)│
│ - CLI/SDK │ └──────────────┘ │ │
│ - ключи │ ─────────────────────────► │ │
└──────────────┘ └──────────────┘

Типичная архитектура

# Пример: cron-задача для ротации
0 3 * * 0 /opt/scripts/rotate-db-passwords.py

Скрипт rotate-db-passwords.py:

  1. Читает список записей из папки secrets/prod/databases.
  2. Для каждой записи:
    • генерирует новый пароль;
    • обновляет пароль в PostgreSQL/MySQL;
    • записывает новый пароль в Пассворк.
  3. Отправляет отчёт в Slack/email.

Примеры реализации см. в разделах: