Страница описывает регламентные и аварийные операции с ключами Stronghold. Описание модели ключей приведено в разделе «Seal».

КлючНазначениеОперация замены
Ключ распечатывания (доли Shamir)Расшифровывает root-ключ при ручном распечатыванииd8 stronghold operator rekey
Ключ восстановления (доли)Авторизует операции оператора при auto unseal через HSM/KMSd8 stronghold operator rekey -target=recovery
Root-ключРасшифровывает связку ключейМеняется при rekey
Ключ шифрования (связка ключей)Шифрует данные в хранилищеd8 stronghold operator rotate
Root-токенНеограниченный доступ к APId8 stronghold operator generate-root, отзыв

Ключи в DP

В DP в режиме Automatic при инициализации создаётся одна доля ключа с порогом 1. Ключ распечатывания и root-токен хранятся в секрете stronghold-keys неймспейса d8-stronghold, в полях unsealKey и rootToken. Deployment stronghold-automatic использует их:

  • unsealKey — для распечатывания узлов. Период проверки по умолчанию — 60 секунд.
  • rootToken — для создания роли метода аутентификации Kubernetes, через которую stronghold-automatic настраивает Stronghold, если войти с этой ролью не удаётся.

Если поля unsealKey нет в секрете или оно не совпадает с текущим ключом распечатывания, автоматическое распечатывание перестаёт работать: после перезапуска распечатывайте каждый под вручную. Если поля rootToken нет или токен отозван, stronghold-automatic не может восстановить свой доступ и перестаёт настраивать Stronghold.

Чтобы посмотреть журналы stronghold-automatic, выполните команду:

d8 k -n d8-stronghold logs deploy/stronghold-automatic

В режиме Manual модуль не создаёт ни секрет, ни stronghold-automatic.

В DP в режиме Automatic rekey и отзыв root-токена нарушают автоматическое распечатывание и настройку. Согласуйте эти операции с поддержкой.

Смена ключей распечатывания (rekey)

Выполняйте rekey при смене держателей ключей, изменении числа долей или порога, а также при подозрении на компрометацию доли.

  1. Инициируйте операцию, указав новое число долей и порог. В примере новые доли шифруются PGP-ключами держателей, поэтому прочитать долю может только её держатель. Флаг -verify требует, чтобы держатели подтвердили получение новых долей до того, как старые станут недействительными:

    d8 stronghold operator rekey -init -key-shares=5 -key-threshold=3 -pgp-keys="alice.asc,bob.asc,carol.asc,dave.asc,erin.asc" -verify

    Команда вернёт Nonce операции. Передайте его держателям текущих долей.

  2. Каждый держатель текущей доли выполняет команду и вводит свою долю:

    d8 stronghold operator rekey -nonce=<NONCE>
  3. После ввода порогового количества долей Stronghold выведет новые доли (зашифрованные PGP-ключами, если они заданы) и Verification Nonce.

  4. Подтвердите получение новых долей: пороговое количество держателей вводит новые доли:

    d8 stronghold operator rekey -verify -nonce=<VERIFICATION_NONCE>

    До завершения проверки старые доли продолжают действовать.

  5. Раздайте новые доли держателям и уничтожьте старые.

Проверить ход операции или отменить её:

d8 stronghold operator rekey -status
d8 stronghold operator rekey -cancel

Смена ключей восстановления

При auto unseal через HSM или KMS вместо ключей распечатывания используются ключи восстановления. Процедура аналогична, операция авторизуется текущими ключами восстановления:

d8 stronghold operator rekey -init -target=recovery -key-shares=5 -key-threshold=3
d8 stronghold operator rekey -target=recovery -nonce=<NONCE>

Через API используется префикс /sys/rekey-recovery-key.

Ротация ключа шифрования

Ротация добавляет в связке ключей новый ключ шифрования. Новые данные шифруются новым ключом, старые ключи остаются в связке ключей для расшифровки ранее записанных данных. Операция выполняется без простоя и требует токена с правами sudo на sys/rotate.

d8 stronghold operator rotate

Проверить текущий номер и время установки ключа:

d8 stronghold operator key-status

Настройте автоматическую ротацию через /sys/rotate/config:

d8 stronghold write sys/rotate/config enabled=true interval=720h max_operations=3000000000
  • interval — через какое время после установки активного ключа выполнить ротацию;
  • max_operations — после какого количества операций шифрования выполнить ротацию.

interval задаётся строкой с суффиксом (720h) или числом секунд, минимум — 24 часа. max_operations принимает значения от 1 000 000 до 3 865 470 566; если не задан, действует максимум.

Генерация root-токена

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

С одноразовым паролем (OTP)

  1. Инициируйте операцию. Stronghold выведет Nonce и OTP. Сохраните OTP — он потребуется для расшифровки токена:

    d8 stronghold operator generate-root -init
  2. Каждый держатель вводит свою долю:

    d8 stronghold operator generate-root -nonce=<NONCE>
  3. После ввода последней доли Stronghold выведет Encoded Token. Расшифруйте его:

    d8 stronghold operator generate-root -decode=<ENCODED_TOKEN> -otp=<OTP>

С PGP-ключом

Вместо OTP токен можно зашифровать PGP-ключом получателя:

d8 stronghold operator generate-root -init -pgp-key=operator.asc

После ввода долей расшифруйте Encoded Token:

echo "<ENCODED_TOKEN>" | base64 -d | gpg --decrypt

Проверить ход или отменить операцию:

d8 stronghold operator generate-root -status
d8 stronghold operator generate-root -cancel

Отзыв root-токена

После выполнения экстренных операций отзовите root-токен:

d8 stronghold token revoke <ROOT_TOKEN>

Или, если root-токен используется в текущей сессии:

d8 stronghold token revoke -self

Убедитесь, что до отзыва настроен рабочий административный доступ через методы аутентификации.

Действия при компрометации

Компрометация доли ключа распечатывания или восстановления

Одной доли недостаточно для распечатывания, если порог больше единицы, но запас надёжности снижается.

  1. Выполните rekey с участием остальных держателей.
  2. Если под угрозой пороговое количество долей и есть доступ к данным хранилища, выполните rekey и ротацию ключа шифрования, затем проверьте журналы аудита на подозрительные операции.
  3. Оцените, не были ли скопированы снимки Raft: снимок вместе с пороговым количеством долей позволяет получить доступ к данным.

Компрометация root-токена

  1. Немедленно отзовите токен. Если значение токена неизвестно, используйте accessor из журнала аудита:

    d8 stronghold token revoke -accessor <ACCESSOR>

    Дочерние токены и аренды, созданные этим токеном, будут отозваны автоматически. Orphan-токены не отзываются — найдите их по журналу аудита и отзовите отдельно.

  2. Проверьте журналы аудита на операции, выполненные с этим токеном: изменения политик, методов аутентификации, аудит-устройств.

  3. Смените статические секреты, которые могли быть прочитаны.

Компрометация обычного токена

  1. Отзовите токен:

    d8 stronghold token revoke <TOKEN>
  2. Если скомпрометированы секреты, выданные через определённый путь, отзовите аренды по префиксу:

    d8 stronghold lease revoke -prefix database/creds/app-role

    Ключ -force удаляет аренды из Stronghold даже при ошибке отзыва во внешней системе. Используйте его только если учётные данные удалены во внешней системе вручную.

  3. Для методов аутентификации отзовите все выданные ими токены по префиксу, например d8 stronghold lease revoke -prefix auth/approle/, и смените учётные данные (например, secret_id AppRole).

Подробнее об арендах — в разделе «Аренды», о токенах — в разделе «Токены».

Утеря ключей

Утеряны доли ключа распечатывания

Если держатели сохранили пороговое количество долей, выполните rekey, чтобы восстановить нужное число долей.

Если долей меньше порога, после следующего запечатывания или перезапуска данные будет невозможно расшифровать:

  1. Не перезапускайте и не запечатывайте работающие узлы.
  2. Пока кластер распечатан, перенесите секреты и конфигурацию в новый кластер с новыми ключами.

Утеряны ключи восстановления

При auto unseal кластер продолжит распечатываться автоматически, но станут невозможны операции, требующие ключей восстановления: генерация root-токена, rekey ключей восстановления, миграция seal.

  1. Сохраните рабочий административный доступ через методы аутентификации.
  2. Спланируйте перенос данных в новый кластер с новыми ключами восстановления.

Stronghold не может перевыпустить ключи восстановления без порогового количества текущих долей: операция rekey ключей восстановления собирает ключ из переданных долей и без них не завершается.