Описание механизма “пространства имен” в Stronghold
Под механизмом “пространства имен” (namespaces) подразумевается изолированная логическая область внутри Stronghold, которая предоставляет свои собственные:
- политики (policies),
- пути монтирования (mount paths),
- секреты,
- механизмы аутентификации (auth methods),
- токены и сессии.
Каждое пространство имен работает как отдельный виртуальный Stronghold, при этом все пространства имен управляются одним экземпляром Stronghold-сервера.
Свойства пространств имен в Stronghold
- Иерархия: пространства имен образуют “дерево”, корнем которого является root (/) пространство имен.
- Каждое пространство имен может иметь вложенные пространства имен, при этом это пространство будет являться родительским.
- Каждое пространство имен содержит изолированные экземпляры sys/, auth/, token/, cubbyhole/ и другие пути монтирования, если они созданы.
- Изоляция: пути монтирования, секреты, политики, токены и т.д. изолированы между пространствами имен.
- Администратор родительского пространства может управлять вложенными пространствами имен. Для пользователя область видимости ограничена своим и дочерними пространствами.
Операции с пространствами имён в Stronghold
Для создания нового пространства имён необходим иметь права на чтение и запись по
пути /namespaces
в текущем пространстве имён. Новое пространство имён не может иметь путь, который уже
зарегистрирован за каким-либо из существующих.
Имя пространства имен это его полный путь относительно корневого пространства имен root (/).
Для обращения к созданному пространству имён через cli необходимо указывать параметр -namespace=<your_namespace_name>
Для обращения к созданному пространству имён через REST API необходимо указывать в запросе заголовок
X-Vault-Namespace=<your_namespace_name>
Создание пространства имён через cli Stronghold
d8 stronghold namespace create -namespace=<parent_namespace_name> -custom-metadata=key="value" <new_namespace_name>
Пример ответа:
Key Value
--- -----
custom_metadata map[key:value]
id c88b1992-d9d3-4160-8283-77163a4e7fae
path <new_namespace_name>/
Описание параметров:
-namespace
- абсолютный путь в иерархии пространств имен, в котором будет создано новое вложенное пространство с
именем <new_namespace_name>
(может быть не указано, в этом случае новое вложенное пространство создается в root).
Необязательный параметр.
-custom-metadata
- информация, описывающая пространство имен, хранящаяся в формате key/value. Необязательный параметр.
Создание пространства имён через REST API Stronghold
$ curl --header "X-Stronghold-Token: $STRONGHOLD_TOKEN" \
--header "X-Vault-Namespace: <parent_namespace_name>" \
--request POST \
--data @payload.json \
$STRONGHOLD_ADDR/v1/sys/namespaces/<new_namespace_name> | jq -r ".data"
Описание параметров:
-X-Vault-Namespace
- абсолютный путь в иерархии пространств имен, в котором будет создано новое вложенное
пространство с именем <new_namespace_name>
(может быть не указано, в этом случае новое вложенное пространство
создается в root). Необязательный параметр.
-data
- информация, описывающая пространство имен, хранящаяся в формате key/value. Необязательный параметр.
Чтение пространства имён через cli Stronghold
d8 stronghold namespace lookup -namespace=<parent_namespace_name> <namespace_name>
Пример ответа:
Key Value
--- -----
custom_metadata map[key:value]
id c88b1992-d9d3-4160-8283-77163a4e7fae
path <namespace_name>/
Описание параметров:
-namespace
- абсолютный путь в иерархии пространств имен, в котором будет произведено чтение вложенного пространства с
именем <namespace_name>
(может быть не указано, в этом случае чтение вложенного пространства производится в root).
Необязательный параметр.
Чтение пространства имён через REST API Stronghold
$ curl --header "X-Stronghold-Token: $STRONGHOLD_TOKEN" \
--header "X-Vault-Namespace: <parent_namespace_name>" \
--request GET \
$STRONGHOLD_ADDR/v1/sys/namespaces/<namespace_name>
Описание параметров:
-X-Vault-Namespace
- абсолютный путь в иерархии пространств имен, в котором будет произведено чтение вложенного
пространства с именем <namespace_name>
(может быть не указано, в этом случае чтение вложенного пространства
производится в root). Необязательный параметр.
Вывод списка пространств имён через cli Stronghold
d8 stronghold namespace list -namespace=<parent_namespace_name>
Пример ответа:
Keys
----
ns1/
ns2/
Описание параметров:
-namespace
- абсолютный путь в иерархии пространств имен, в котором происходит поиск и вывод вложенных пространств (
может быть не указано, в этом случае поиск и вывод вложенных пространств происходит в root). Необязательный параметр.
Вывод списка пространств имён через REST API Stronghold
$ curl --header "X-Stronghold-Token: $STRONGHOLD_TOKEN" \
--header "X-Vault-Namespace: <parent_namespace_name>" \
--request LIST \
$STRONGHOLD_ADDR/v1/sys/namespaces
Описание параметров:
-X-Vault-Namespace
- абсолютный путь в иерархии пространств имен, в котором происходит поиск и вывод вложенных
пространств (может быть не указано, в этом случае поиск и вывод вложенных пространств происходит в root). Необязательный
параметр.
Удаление пространства имён через cli Stronghold
d8 stronghold namespace delete -namespace=<parent_namespace_name> -custom-metadata=key="value" <namespace_name>
Описание параметров:
-namespace
- абсолютный путь в иерархии пространств имен, в котором планируется удаление вложенного пространства с
именем <namespace_name>
(может быть не указано, в этом случае пространство удаляется из root). Необязательный
параметр.
Удаление пространства имён через REST API Stronghold
$ curl --header "X-Stronghold-Token: $STRONGHOLD_TOKEN" \
--header "X-Vault-Namespace: <parent_namespace_name>" \
--request DELETE \
$STRONGHOLD_ADDR/v1/sys/namespaces/<namespace_name>
Описание параметров:
-X-Vault-Namespace
- абсолютный путь в иерархии пространств имен, в котором планируется удаление вложенного
пространства с именем <namespace_name>
(может быть не указано, в этом случае пространство удаляется из root).
Необязательный параметр.