Модуль доступен только в Deckhouse Enterprise Edition, лицензируется и оплачивается отдельно

Механизмы секретов

Включение механизма секретов

Необходимо включить механизм секретов KV на пути kv. Каждый путь полностью изолирован и не может взаимодействовать с другими путями. Например, механизм KV-секретов, включенный в foo, не может взаимодействовать с механизмом KV-секретов, включенным в bar.

vault secrets enable -path=kv kv
Success! Enabled the kv secrets engine at: kv/

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

vault secrets enable kv

Выполнение этой команды приведет к ошибке path is already in use at kv/.

Чтобы проверить успешность операции и получить дополнительные сведения о механизме управления секретами, используйте команду vault secrets list:

vault secrets list
Path Type Accessor Description
---- ---- -------- -----------
cubbyhole/ cubbyhole cubbyhole_78189996 per-token private secret storage
identity/ identity identity_ac07951e identity store
kv/ kv kv_15087625 n/a
secret/ kv kv_4b990c45 key/value secret storage
sys/ system system_adff0898 system endpoints used for control, policy and debugging

Это подтверждает наличие на сервере Deckhouse Stronghold пяти активных механизмов управления секретами. Можно увидеть тип такого механизма, соответствующий путь и необязательное описание (или «n/a», если оно не указано). При выполнении вышеуказанной команды с флагом -detailed становится доступной информация о версии KV системы управления секретами, а также многое другое.

Путь sys/ соответствует бэкенду системы. Эти пути взаимодействуют с основной системой Stronghold и не являются обязательными для новичков.

Потратьте несколько минут на чтение и запись некоторых данных в новый KV-механизм управления секретами, расположенный по адресу kv/. Ниже приведены несколько примеров для старта.

Для создания секретов используйте команду kv put.

vault kv put kv/hello target=world
Success! Data written to: kv/hello

Для чтения секретов, хранящихся в пути kv/hello, используйте команду kv get, как представлено на примере:

vault kv get kv/hello
===== Data =====
Key Value
--- -----
target world

Создайте секреты по пути kv/my-secret, как представлено на примере:

vault kv put kv/my-secret value="s3c(eT"
Success! Data written to: kv/my-secret

Читайте секреты по пути kv/my-secret, как представлено на примере:

vault kv get kv/my-secret
==== Data ====
Key Value
--- -----
value s3c(eT

Удалите секреты по адресу kv/my-secret, как представлено на примере:

vault kv delete kv/my-secret
Success! Data deleted (if it existed) at: kv/my-secret

Перечислиту существующие ключи на пути kv, как представлено на примере:

vault kv list kv/
Keys
----
hello

Отключение механизма секретов

Если необходимость в механизме управления секретами отпадает, его можно отключить. При отключении такого механизма все секреты удаляются, а соответствующие данные и настройки Deckhouse Stronghold уничтожаются.

vault secrets disable kv/
Success! Disabled the secrets engine (if it existed) at: kv/

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

Механизм секретов KV (ключ-значение)

При работе бэкенда kv secrets в неверсионном режиме сохраняется только последнее записанное значение ключа. Преимуществом использования неверсионного kv является уменьшение размера хранилища для каждого ключа, так как не сохраняются дополнительные метаданные и история изменений. Кроме того, операции запроса к бэкенду, настроенному таким образом, являются более производительными, так как для каждого конкретного запроса требуется меньше обращений к хранилищу данных и не возникает блокировки при изменении значения ключа.

KV версия 1

При использовании бэкенда Key-Value хранилища в режиме без поддержки версионирования, сохраняется только последнее обновленное значение ключа. Основным преимуществом использования данного режима является уменьшение занимаемого пространства на хранилище для каждого ключа, так как не сохраняются дополнительные метаданные и история изменений. Кроме того, операции запроса к бэкенду, настроенному таким образом, являются более производительными, так как для каждого конкретного запроса требуется меньше обращений к хранилищу данных и не возникает блокировки при изменении значения ключа.

KV версия 2

При использовании версии 2 бэкенда kv ключ может сохранять настраиваемое количество версий. По умолчанию это 10 версий. Метаданные и данные старых версий могут быть извлечены. Кроме того, для предотвращения случайной перезаписи данных можно использовать операции Check-and-Set.

При удалении версии данные, лежащие в ее основе, не удаляются, а помечаются как удаленные. Удаленные версии могут быть отменены. Для окончательного удаления данных версии можно использовать команду destroy или конечную точку API. Кроме того, все версии и метаданные для ключа могут быть удалены командой delete по метаданным или конечной точкой API. На каждую из этих операций можно наложить различные ACL, ограничивающие права на мягкое удаление, удаление без удаления или полное удаление данных.

Identity secrets engine

Механизм Identity - это решение для управления идентификацией в Deckhouse Stronghold. Внутри системы хранятся клиенты, которые распознаются Deckhouse Stronghold. Каждый клиент называется сущностью. Сущность может иметь несколько псевдонимов (aliases).

Например, один пользователь, имеющий учетные записи на GitHub и LDAP, может быть сопоставлен с одной сущностью в Deckhouse Stronghold, имеющей два псевдонима: один типа GitHub, другой типа LDAP. При успешной аутентификации клиента через любой из бэкендов (кроме бэкенда Token) Deckhouse Stronghold создает новую сущность и прикрепляет к ней новый псевдоним, если соответствующая сущность еще не существует. Идентификатор сущности будет привязан к аутентифицированному токену. При использовании таких токенов их идентификаторы сущностей регистрируются в журнале аудита, что позволяет проследить за действиями конкретных пользователей.

Хранилище идентификаторов позволяет операторам управлять сущностями в Deckhouse Stronghold. Можно создавать сущности и привязывать к ним псевдонимы с помощью ACL API. Для сущностей могут быть установлены политики, которые добавляют возможности токенам, привязанным к идентификаторам сущностей. Возможности, предоставляемые токенам через сущности, являются дополнением к существующим возможностям токена, а не заменой. Возможности токена, наследуемые от сущностей, вычисляются динамически во время запроса. Это обеспечивает гибкость в управлении доступом к уже выпущенным токенам.

ПРИМЕЧАНИЕ: Этот механизм секретов будет установлен по умолчанию. Этот механизм секретов нельзя отключить или переместить. Более подробный концептуальный обзор идентификации см. в документации по идентификации.

Cubbyhole secrets engine

Механизм секретов cubbyhole используется для хранения произвольных секретов в сконфигурированном физическом хранилище Vault, привязанном к токену. В cubbyholeпути распределены по токенам. Ни один токен не может получить доступ к cubbyhole другого токена. Когда срок действия токена истекает, его cubbyhole уничтожается.

Также в отличие от движка секретов kv, поскольку время жизни cubbyhole связано со временем жизни токена аутентификации, не существует понятия TTL или интервала обновления для значений, содержащихся в cubbyhole токене.

Запись в ключ в механизме секретов cubbyhole полностью заменит старое значение.

Настройка

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

Механизм секретов cubbyhole включен по умолчанию. Его нельзя отключить, переместить или включить несколько раз.

Использование

После того как механизм секретов настроен и у пользователя есть токен Vault с соответствующими правами, который может генерировать учетные данные. Механизм секретов cubbyhole позволяет записывать ключи с произвольными значениями

  1. Запись произвольных данных:

    $ vault write cubbyhole/my-secret my-value=s3cr3t
    
    Success! Data written to: cubbyhole/my-secret
    
  2. Чтение произвольных данных:

    $ vault read cubbyhole/my-secret
    
    Key         Value
    
    ---         -----
    
    my-value    s3cr3t