Агрегатор. Хранение чувствительной информации

Хранение чувствительной информации с выбранным способом хранения «hvac»

Способ хранения паролей выбирается на этапе установки Termidesk. Способ хранения паролей «hvac» подразумевает, что будет использоваться хранилище OpenBao или Hashicorp Vault. Хранилище при этом должно быть заранее создано и настроено. При использовании Hashicorp Vault со схемой AD (Active Directory) поддерживается автоматическое обновление паролей.

При этом способе чувствительная информация (имена учетных записей, пароли, открытые и закрытые ключи, keytab-файлы, токены) хранится в контейнерах, пути к которым задаются вручную. 

В контейнерах может содержаться как динамически обновляемая чувствительная информация, так и статическая. Поэтому в Termidesk для определения типа информации используются префиксы при задании пути к контейнеру хранения:

  • hvac-ad:// - префикс используется для динамически обновляемой чувствительной информации. Может быть задан только для хранилища Hashicorp Vault;
  • hvac-kv:// - префикс используется для статической чувствительной информации. Может быть задан как для хранилища OpenBao, так и для Hashicorp Vault.

Для корректной работы Termidesk со статической чувствительной информацией в хранилище должна быть повторена структура данных Active Directory. Контейнер, содержащий чувствительную информацию, должен содержать параметры:

  • current_password - пароль учетной записи;
  • username - имя учетной записи.

Пример:

{                                                                                            
    'current_password': '?@09AZ3PlvTzMKhsvZ91YFyVjVRHceYQ34eizKcKhVNHPjQJ46kvGGdsBPSkRcE9',    
    'username': 'adfs-s'                                                                     
},

Помимо указания префикса должна использоваться точка монтирования (mount point), заданная администратором в хранилище. 

Таким образом общий формат указания пути к контейнеру хранения чувствительной информации в Termidesk выглядит следующим образом:

Символ «/» определяет, что должно быть возвращено все содержимое контейнера.

Если нужно вернуть значение конкретной переменной (key) контейнера, символ «/» не используется.

  • если нужно вернуть всю информацию из контейнера:
<префикс> <точка_монтирования#> <путь_к_контейнеру>/
  • если нужно вернуть только значение конкретного параметра:
<префикс> <точка_монтирования#> <путь_к_параметру_в_хранилище>

Допустим, в хранилище создан контейнер со статической информацией termidesk и точкой монтирования secret:

vault kv get secret/termidesk

Контейнер содержит следующие параметры:

========== Data ==========
Key                 Value
---                 -----
current_password    my_password
username            Администратор

В этом случае в Termidesk следует указывать:

  • для возврата всех параметров: hvac-kv://secret#termidesk/ (будет возвращено: {'current_password': 'my_password', 'username': 'Администратор'});
  • для возврата значения параметра username: hvac-kv://secret#termidesk/username (будет возвращено: 'Администратор').

Дополнительные примеры приведены в таблице.

Примеры указания путей к чувствительной информации в Termidesk

Команда в хранилищеУказание пути в Termidesk

Команда записи роли в хранилище:

vault write ad/roles/vvddaa service_account_name="vvddaa@domain.local"

hvac-ad://ad#vvddaa/

где:

hvac-ad:// - префикс;

ad# - точка монтирования;

vvddaa/ - путь к роли

Команда записи сертификата в хранилище:

vault kv put secret/termidesk-admin/ssl-cert-snakeoil pem=@astra.local.pem

Команды вида vault kv put перезаписывают контейнер сразу целиком, поэтому если задание сертификата и ключа будет разделено на разные команды, то в контейнере окажется только то, что добавлялось последним.

hvac-kv://secret#termidesk-admin/ssl-cert-snakeoil/pem

где:

hvac-kv:// - префикс;

secret# - точка монтирования;

termidesk-admin/ssl-cert-snakeoil/ - путь к контейнеру;

pem - сертификат

Сгенерированный на контроллере домена keytab-файл должен быть преобразован к формату BASE64 для использования в хранилище:

base64 termidesk.keytab > termidesk.keytab.b64

Команда записи keytab-файла в хранилище:

vault kv put secret/termidesk-admin/keytabs termidesk=@kerberos.keytab.b64

Пример команды для преобразования файла и одновременной записи в хранилище:

vault kv put secret/termidesk-admin/keytabs termidesk="$(base64 -w 0 termidesk.keytab)"

hvac-kv://secret#termidesk-admin/keytabs/termidesk

где:

hvac-kv:// - префикс;

secret# - точка монтирования;

termidesk-admin/keytabs/ - путь к контейнеру;

termidesk - keytab-файл