Запечатывание и распечатывание хранилища
При запуске сервер StarVault находится в запечатанном состоянии. В этом состоянии StarVault имеет доступ к физическому хранилищу, но не может расшифровать данные.
Распечатывание — это процесс получения корневого ключа в открытом виде, необходимого для чтения ключа дешифрования, который расшифровывает данные, обеспечивая доступ к StarVault.
До снятия блокировки со StarVault практически никакие операции невозможны. Например, аутентификация, работа с механизмами управления секретами — все это невозможно. Единственные возможные операции — снятие блокировки со StarVault и проверка его состояния.
1. Принцип шифрования и распечатывания StarVault
Данные, хранящиеся в StarVault, зашифрованы. Для расшифровки данных StarVault необходим ключ шифрования, который также хранится вместе с данными (в связке ключей). Он зашифрован другим ключом шифрования — корневым ключом.
Следовательно, для расшифровки данных StarVault необходимо расшифровать ключ шифрования, и для этого потребуется корневой ключ. Расшифровка — это процесс получения доступа к этому корневому ключу. Корневой ключ хранится вместе со всеми остальными данными StarVault, но зашифрован с помощью еще одного механизма — ключа расшифровки.
2. Схема Шамира
Конфигурация StarVault по умолчанию использует схему Шамира.
Вместо того чтобы передавать ключ расшифровки оператору в виде единого ключа, StarVault использует алгоритм, известный как разделение секрета Шамира, для разделения ключа на части. Для восстановления ключа расшифровки требуется определенное количество частей, после чего ключ используется для расшифровки корневого ключа.
Таким образом, доли ключа добавляются по одной (в любом порядке), пока не будет достаточно долей для восстановления ключа и расшифровки корневого ключа.
3. Распечатывание
Для запуска распечатки создайте API-запрос или выполните команду:
starvault operator unseal
В процессе сохраняется состояние: каждый ключ распечатывания можно ввести с помощью нескольких механизмов и с нескольких клиентских машин. Поэтому каждую часть корневого ключа можно держать на отдельной клиентской машине, тем самым повысив безопасность.
Обратите внимание, что при использовании схемы Шамира с несколькими узлами каждый узел должен быть распечатан с помощью порогового количества частей ключа. Частичное распечатывание каждого узла не распространяется по кластеру.
Узел StarVault остается распечатанным, пока не произойдет одно из следующих событий:
-
Узел повторно запечатан через API.
-
Сервер перезапущен.
-
На уровне хранения StarVault возникнет неустранимая ошибка.
|
Распечатка затрудняет автоматизацию установки StarVault. Автоматизированные инструменты позволяют легко установить, настроить и запустить StarVault, но распечатывание по схеме Шамира происходит вручную. Для большинства пользователей автоматическое распечатывание — лучший вариант. |
4. Запечатывание
Для запечатывания StarVault используется API. В результате запечатывания корневой ключ в памяти будет сброшен, и, чтобы восстановить работоспособность StarVault, придется снова его распечатать. Для запечатывания требуется только один оператор с root-привилегиями.
Таким образом, при вторжении данные StarVault можно быстро заблокировать для минимизации ущерба. К ним нельзя будет получить доступ снова, пока нет доступа к частям корневого ключа.
5. Автоматическое распечатывание
Автоматическое расшифрование упрощает защиту ключа расшифрования. Эта функция перекладывает ответственность за защиту ключа расшифрования от пользователей на доверенное устройство или службу. При запуске StarVault подключается к устройству или службе, выполняющей защиту, и запрашивает у них расшифровку корневого ключа, считанного StarVault из хранилища.
Помимо распечатывания, в StarVault есть и другие операции, требующие кворума пользователей, например, генерация корневого токена. Если используется схема Шамира, то для авторизации этих операций должны быть предоставлены ключи распечатывания. Если же происходит автоматическое распечатывание, то для этих операций требуются ключи восстановления.
Подобно тому, как процесс инициализации с использованием печати Шамира позволяет получить ключи распечатывания, инициализация с использованием автоматического распечатывания позволяет получить ключи восстановления.
По-прежнему можно заблокировать узел StarVault с помощью API. В этом случае StarVault останется запечатанным до перезапуска или использования API распечатывания, который при автоматическом распечатывании требует фрагментов ключа восстановления вместо фрагментов ключа распечатывания, предоставляемых Shamir. Процесс остается тем же.
Рекомендуется ознакомиться с примерами механизмов дополнительной защиты данных.
|
Ключи восстановления не могут расшифровать корневой ключ и, следовательно, недостаточны для распечатывания StarVault, если механизм автоматической разблокировки не работает. Они служат только механизмом авторизации. Использование автоматической разблокировки создает строгую зависимость жизненного цикла StarVault от базового механизма блокировки. Это означает, что если механизм блокировки (например, ключ Cloud KMS) станет недоступным или будет удален до миграции блокировки, то восстановить доступ к кластеру StarVault будет невозможно до тех пор, пока механизм не станет снова доступным. Если механизм блокировки или его ключи будут безвозвратно удалены, то кластер StarVault не может быть восстановлен, даже из резервных копий. Для снижения этого риска мы рекомендуем тщательно контролировать управление механизмом блокировки, например, используя политики управления сервисами AWS или аналогичные инструменты. |
6. Ключ восстановления
При инициализации StarVault с использованием HSM или KMS оператору возвращаются не ключи разблокировки, а ключи восстановления. Они генерируются из внутреннего ключа восстановления, который разделяется с помощью механизма разделения секрета Шамира, аналогично тому, как StarVault обрабатывает ключи разблокировки при работе без HSM или KMS.
Подробности об инициализации и повороте приведены ниже. При выполнении операции, использующей ключи восстановления, например generate-root, выбор ключей восстановления для этой цели, а не ключей разблокировки барьера, происходит автоматически.
6.1. Инициализация
При инициализации разделение выполняется в соответствии со следующими флагами командной строки и их эквивалентами в API конечной точки /sys/init:
-
recovery-shares: количество частей, на которое следует разделить ключ восстановления. Эквивалентно значениюrecovery_sharesв конечной точке API. -
recovery-threshold: пороговое количество частей, необходимое для воссоздания ключа восстановления. Эквивалентно значениюrecovery_thresholdв конечной точке API. -
recovery-pgp-keys: PGP-ключи, используемые для шифрования возвращаемых частей ключа восстановления. Эквивалентно значениюrecovery_pgp_keysв конечной точке API, хотя, как и в случае сpgp_keys, объект в конечной точке API является массивом, а не строкой.
Кроме того, инициализация не будет выполнена, если не задана опция генерации ключа и ключ не будет найден.
6.2. Ротация
6.2.1. Ключ распечатывания
Ключ распечатывания в StarVault можно пересоздать с помощью командной строки или соответствующих вызовов по API:
starvault operator rekey
Операция пересоздания ключа разрешается, когда количество ключей восстановления достигает порогового значения. После пересоздания новый барьерный ключ хранится как предыдущий ключ. Новый барьерный ключ не возвращается пользователям, которые отправили свои ключи восстановления.
6.2.2. Ключ восстановления
Ключ восстановления можно пересоздать, чтобы изменить количество частей, пороговое значение или указать разных держателей ключей с помощью разных PGP-ключей. Для пересоздания в командной строке StarVault установите флаг -target=recovery команде starvault operator rekey.
Через API операция пересоздания выполняется с теми же параметрами, что и на обычной конечной точке /sys/rekey. Для этой операции префикс API находится в /sys/rekey-recovery-key.
7. Изменение способа запечатывания
Из-за технических особенностей реализации для изменения способа запечатывания придется на короткое время отключить весь кластер. Изменение способа запечатывания происходит довольно редко, в отличие от других видов простоя.
|
Прежде чем менять способ запечатывания, сделайте резервную копию на случай, если что-то пойдет не так. |
|
Для успешного изменения способа запечатывания в ходе операции должны быть доступны как старый, так и новый способы запечатывания. Например, при переходе с автоматического распечатывания на схему Шамира служба, сопровождающая автоматическое распечатывание, должна быть доступна во время такого перехода. |
|
В StarVault поддерживается миграция механизма запечатывания между режимами автоматического распечатывания и схем одного и того же типа. Однако существует ограничение: миграция с AWS KMS на AWS KMS в настоящее время не поддерживается, тогда как для остальных типов автоматического распечатывания такая миграция доступна. Миграция с одного типа автоматического распечатывания (например, AWS KMS) на другой (HSM, Azure KMS и т.п.) поддерживается и в более ранних версиях. |
7.1. Шаги миграции
Шаги данной инструкции едины для миграции между любыми поддерживаемыми типами механизма запечатывания и для любого типа хранилища.
-
Остановите один из резервных (standby) узлов и обновите его конфигурацию механизма запечатывания. Настройка выполняется через конфигурационный файл StarVault с помощью следующего seal-раздела:
seal [NAME] { # ... }Примерseal "pkcs11" { # ... }Рекомендуется ознакомиться с примерами механизмов дополнительной защиты данных.
-
При миграции с механизма Шамира на автораспечатывание добавьте в конфигурацию блок нового механизма автораспечатывания.
-
При миграции с автораспечатывания на механизм Шамира добавьте параметр disabled = "true" в блок существующего механизма запечатывания.
-
При миграции с одного механизма автораспечатывания на другой добавьте disabled = "true" в блок старого механизма и добавьте блок нового механизма автораспечатывания.
Запустите резервный узел и выполните команду распечатывания с флагом -migrate для каждого ключа.
-
Указывайте ключи распечатывания Шамира, если старым был механизм Шамира. Эти ключи будут мигрированы в качестве ключей восстановления для нового механизма автораспечатывания.
-
Указывайте ключи восстановления, если старый механизм — один из механизмов автораспечатывания. Они будут мигрированы как ключи восстановления для нового механизма автораспечатывания либо как ключи распечатывания Шамира, если новым механизмом является механизм Шамира.
-
-
Повторите шаг 1 для всех резервных узлов по очереди. Важно каждый раз полностью возвращать резервный узел в строй до перехода к следующему, особенно при использовании встроенного хранилища, чтобы сохранялся кворум.
-
Выполните для активного узла остановку.
starvault operator step-down Success! Stepped down: http://127.0.0.1:8200Один из резервных узлов станет новым активным. При использовании встроенного хранилища убедитесь, что достигнут кворум и выбран лидер.
-
Новый активный узел выполнит миграцию. Отслеживайте логи этого узла, чтобы убедиться в завершении процесса миграции механизма запечатывания. Подождите некоторое время, чтобы информация о миграции была перенесена на все узлы при использовании встроенного хранилища.
-
После завершения миграции остановите старый активный узел, обновите его конфигурацию, удалив старый механизм и оставив только новый, затем запустите узел. Узел автоматически распечатается, если новый механизм — механизм автораспечатывания, либо потребует ключи распечатывания, если используется механизм Шамира.
-
На этом этапе конфигурационные файлы всех узлов можно привести к виду, в котором описан только новый механизм запечатывания. Резервные узлы можно перезапустить сразу, а активный — после смены лидера.