Аренда, продление и отзыв
Для каждого динамического секрета и сервиса аутентификации Stronghold создает аренду (lease), в которой содержатся метаданные, такие как срок действия, возможность продления и прочее. Stronghold гарантирует, что данные будут оставаться актуальными в течение установленного периода, известного как время жизни (TTL). После окончания срока аренды Stronghold может автоматически аннулировать данные, после чего потребитель секрета не может быть уверен в их актуальности.
Смысл очевиден: потребители секретов должны регулярно связываться с Stronghold, чтобы продлить аренду (если это разрешено) или запросить новый секрет. Это делает журналы аудита Stronghold более полезными, а также значительно упрощает процесс смены ключей.
Все динамические секреты в Stronghold должны иметь lease. Даже если предполагается, что данные будут действовать вечно, аренда необходима, чтобы заставить потребителя регулярно перепроверять их.
Помимо продления, аренда может быть отменена. Когда аренда отменяется, секрет немедленно становится недействительным и не подлежит дальнейшему продлению.
Отзыв может происходить вручную через API, с помощью команды d8 stronghold lease revoke
cli, через пользовательский интерфейс (UI) на вкладке Access, или автоматически. Когда срок аренды истекает, Stronghold автоматически отзывает эту аренду. При отзыве токена Stronghold отзывает все аренды, которые были созданы с использованием этого токена.
Примечание: Бэкенд Key/Value, который хранит произвольные секреты, не выдает аренды, хотя иногда возвращает продолжительность аренды; см. документацию для получения дополнительной информации.
Идентификаторы аренды (Lease IDs)
При чтении динамического секрета, например, с помощью команды d8 stronghold read
, Stronghold всегда возвращает lease_id
. Это идентификатор, который может быть использован такими командами, как d8 stronghold lease renew
и d8 stronghold lease revoke
для управления арендой секрета.
Срок действия и продление аренды
Вместе с идентификатором аренды возвражается длительность аренды. Это значение Time To Live: время в секундах, в течение которого аренда действительна. Потребитель этого секрета должен продлить аренду в течение этого времени.
При продлении аренды пользователь может запросить определенное количество времени, которое он хочет оставить в аренде, называемое increment
. Это не приращение по окочании текущего TTL; это приращение от текущего времени. Например, d8 stronghold lease renew -increment=3600 my-lease-id
запросит, чтобы TTL аренды был изменен на 1 час (3600 секунд). Такой способ позволяет пользователям не только увеличить, но и сократить длительность аренды, если им не нужны учетные данные на весь возможный период аренды.
Запрашиваемый прирост является рекомендательным. Бэкэнд, отвечающий за секрет, может решить полностью проигнорировать его. Для большинства секретов бэкэнд делает все возможное, чтобы соблюсти инкремент, но часто ограничивает его, чтобы обеспечить периодическое обновление.
Поэтому возвращаемое значение обновлений должно быть проверено, чтобы определить, какова на самом деле новая аренда.
Отзыв на основе префикса
Помимо отзыва одного секрета, операторы с надлежащим уровнем доступа могут отзывать несколько секретов на основе префикса их идентификатора аренды.
Идентификаторы аренды построены таким образом, что их префикс всегда является путем, по которому был запрошен секрет. Это позволяет отзывать деревья секретов. Например, чтобы отозвать все логины Userpass, вы можете выполнить команду d8 stronghold lease revoke -prefix auth/userpass/
.
Это очень полезно в случае вторжения в конкретную систему: все секреты конкретного бэкенда или определенного сконфигурированного бэкенда могут быть быстро и легко отозваны.