Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

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

Пространства имен позволяют реализовать множество вариантов применения и сценариев мультиаренды. Рассмотрим возможную структуру пространств имен для SaaS-компании. Команда платформы сохраняет пространство имен верхнего уровня для общей инфраструктуры, а каждый арендатор получает полностью изолированное пространство, например для моделирования тестовой системы. На схеме ниже показан функционал Namespaces в StarVault на примере простейшей иерархии пространств имен.

nmsp 1

Для использования новой функции не требуется дополнительная конфигурация. В CLI StarVault теперь есть специальная команда namespace, которая используется для управления пространствами имен. Управление namespaces доступно как с помощью CLI, так и с помощью веб-интерфейса. Далее на примере показан основной функционал.

1. Пример управления namespaces

1.1. С помощью CLI

Чтобы воспроизвести структуру из примера с помощью CLI, выполните следующие шаги:

  1. Создайте пространства имен.

    • Создайте пространство имен 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/
  2. Создайте ресурсы в пространствах имен.

    Для демонстрации данного функционала создадим механизм секретов 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. С помощью веб-интерфейса

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

  1. Создайте пространства имен.

    • Создайте пространство имен team_a на root-уровне.

      Уровень, на котором вы находитесь указан в левом нижнем углу страницы.

      root level

      Для создания пространства имен перейдите во вкладку Доступ → Пространства имен. Нажмите на Создать пространство имен.

      create namespaces

      Введите название и нажмите Создать.

      team a
    • Создайте дочернее пространство имен внутри team_a.

      Для этого необходимо переключиться на пространство имен team_a. Для переключения на другую namespace нажмите на текущую и выберете нужное пространство имен из выпадающего списка.

      choose namespace

      После переключения вы можете аналогично предыдущему пункту создать внутри team_a дочернее пространство имен.

      child ns

      Таким образом, переключаясь на namespace вы можете создавать внутри него дочерние пространства имен.

  2. Создайте ресурсы в пространствах имен.

    Для демонстрации данного функционала создадим механизм секретов KV и наполним и добавим в него секрет. Перейдите к пространству имен, в котором вам необходимо создать механизм секретов.

    Перед созданием ресурсов убедитесь, что находитесь в правильном namespace.

    kv in child

    Для добавления механизма секретов перейдите во вкладку Секреты и нажмите Добавить. Подробнее о работе и создании механизмов секретов читайте в статьях раздела Механизмы управления секретами.

    Вы можете создать любой другой необходимый вам ресурс в выбранном namespace.

2. Операции жизненного цикла

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

  • Политики и квоты с учетом пространства имен;

  • Перемещение или переименование секретных или аутентификационных механизмов между пространствами имен;

  • Блокировка и разблокировка пространств имен.