Использование пространств имен
Пространства имен позволяют реализовать множество вариантов применения и сценариев мультиаренды. Рассмотрим возможную структуру пространств имен для SaaS-компании. Команда платформы сохраняет пространство имен верхнего уровня для общей инфраструктуры, а каждый арендатор получает полностью изолированное пространство, например для моделирования тестовой системы. На схеме ниже показан функционал Namespaces в StarVault на примере простейшей иерархии пространств имен.
Для использования новой функции не требуется дополнительная конфигурация. В CLI StarVault теперь есть специальная команда namespace, которая используется для управления пространствами имен. Управление namespaces доступно как с помощью CLI, так и с помощью веб-интерфейса. Далее на примере показан основной функционал.
1. Пример управления namespaces
1.1. С помощью CLI
Чтобы воспроизвести структуру из примера с помощью CLI, выполните следующие шаги:
-
Создайте пространства имен.
-
Создайте пространство имен
team_aнаroot-уровне.$ starvault namespace create team_aПример вывода:Key Value --- ----- custom_metadata map[] id LfBT2q locked false path team_a/ tainted false uuid abe62606-91b8-f756-c986-7210232fb149 -
Создайте дочернее пространство имен внутри
team_a.$ starvault namespace create -ns team_a child_nsПример вывода:Key Value --- ----- custom_metadata map[] id y7DYvw locked false path team_a/child_ns/ tainted false uuid 7db14ca7-aa1e-f413-2885-141c2eb3e830 -
Создайте дочернее пространство имен внутри
team_a/child_ns.$ starvault namespace create -ns team_a/child_ns child_ns_1Пример вывода:Key Value --- ----- custom_metadata map[] id MLXnSB locked false path team_a/child_ns/child_ns_1/ tainted false uuid fbdd9fac-44f8-f0f9-f0ad-d1069a529e10
Обратите внимание, как используется флаг
-ns(краткая форма для-namespace) для создания дочернего пространства именchild_nsвнутри пространства именteam_a. Для просмотра статуса и метаданных можно использоватьlookupкоманду.$ starvault namespace lookup -ns team_a/child_ns child_ns_1Пример вывода:Key Value --- ----- custom_metadata map[] id MLXnSB locked false path team_a/child_ns/child_ns_1/ tainted false uuid fbdd9fac-44f8-f0f9-f0ad-d1069a529e10Для вывода полной иерархии пространств имен используйте команду
scan.$ starvault namespace scanПример вывода:Keys ---- team_a/ team_a/child_ns/ team_a/child_ns/child_ns_1/ -
-
Создайте ресурсы в пространствах имен.
Для демонстрации данного функционала создадим механизм секретов KV и наполним и добавим в него секрет.
$ starvault secrets enable -ns=team_a/child_ns/child_ns_1/ -description="Production Secrets" kvПример вывода:Success! Enabled the kv secrets engine at: kv/Теперь, когда мы создали новый механизм секретов kv, он будет указан среди механизмов секретов по умолчанию.
$ starvault secrets list -ns team_a/child_ns/child_ns_1Пример вывода:Path Type Accessor Description ---- ---- -------- ----------- cubbyhole/ ns_cubbyhole cubbyhole_e7b8ab52 per-token private secret storage identity/ ns_identity identity_c2f88f01 identity store kv/ kv kv_6fcd717c Production Secrets sys/ ns_system system_cbc44199 system endpoints used for control, policy and debuggingСоздадим секрет внутри пространства имен:
starvault kv put -namespace=team_a/child_ns/child_ns_1 -mount=kv auth-token foo=barПример вывода:Success! Data written to: kv/auth-tokenСчитаем созданный секрет:
$ starvault kv get -namespace=team_a/child_ns/child_ns_1 -mount=kv auth-tokenПример вывода:=== Data === Key Value --- ----- foo bar
1.2. С помощью веб-интерфейса
Чтобы воспроизвести структуру из примера с помощью веб-инетрфейса, выполните следующие шаги:
-
Создайте пространства имен.
-
Создайте пространство имен
team_aнаroot-уровне.Уровень, на котором вы находитесь указан в левом нижнем углу страницы.
Для создания пространства имен перейдите во вкладку Доступ → Пространства имен. Нажмите на Создать пространство имен.
Введите название и нажмите Создать.
-
Создайте дочернее пространство имен внутри
team_a.Для этого необходимо переключиться на пространство имен
team_a. Для переключения на другую namespace нажмите на текущую и выберете нужное пространство имен из выпадающего списка.
После переключения вы можете аналогично предыдущему пункту создать внутри
team_aдочернее пространство имен.
Таким образом, переключаясь на namespace вы можете создавать внутри него дочерние пространства имен.
-
-
Создайте ресурсы в пространствах имен.
Для демонстрации данного функционала создадим механизм секретов KV и наполним и добавим в него секрет. Перейдите к пространству имен, в котором вам необходимо создать механизм секретов.
Перед созданием ресурсов убедитесь, что находитесь в правильном namespace.
Для добавления механизма секретов перейдите во вкладку Секреты и нажмите Добавить. Подробнее о работе и создании механизмов секретов читайте в статьях раздела Механизмы управления секретами.
Вы можете создать любой другой необходимый вам ресурс в выбранном namespace.
2. Операции жизненного цикла
Со временем может потребоваться вносить различные изменения и настройки в пространства имен. Перенос администрирования от операторов StarVault означает, что оператор арендатора может вносить эти изменения по запросу и индивидуально. В связи с этим реализованы соответствующие функции жизненного цикла, такие как:
-
Политики и квоты с учетом пространства имен;
-
Перемещение или переименование секретных или аутентификационных механизмов между пространствами имен;
-
Блокировка и разблокировка пространств имен.