Методы аутентификации. Токены (API)
В данном разделе представлена документация API для метода аутентификации StarVault по токенам. Для общего представления об использовании и работе метода токена читайте документацию по методу токена StarVault.
1. Список аксессоров
Данная конечная точка перечисляет аксессоры токенов. Для этого требуется возможность sudo, и доступ к нему должен быть строго контролируемым, так как аксессоры могут быть использованы для отзыва большого количества токенов и связанных с ними аренд сразу.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
--request LIST \
http://127.0.0.1:8200/v1/auth/token/accessors
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"keys": [
"476ea048-ded5-4d07-eeea-938c6b4e43ec",
"bb00c093-b7d3-b0e9-69cc-c4d85081165b"
]
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
2. Создание токена
Создает новый токен. Определенные параметры доступны только при вызове рут-токеном. Если используется конечная точка /auth/token/create-orphan, рут-токен не требуется для создания «сиротского» токена (иначе установленного с опцией no_parent). Если используется с именем роли в пути, токен будет создан против указанного имени роли; это может переопределить параметры, установленные в ходе этого вызова.
| Метод | Путь |
|---|---|
|
|
|
|
|
|
2.1. Параметры
-
id(string: "")- идентификатор клиентского токена. Может быть указан только рут-токеном. Указанный идентификатор не может содержать символ.. В противном случае идентификатор токена будет случайно сгенерированным значением.
|
Идентификатор не должен начинаться с префикса |
-
role_name(string: "")- имя роли токена. -
policies(array: "")- список политик для токена. Это должно быть подмножеством политик, принадлежащих токену, производящему запрос, если только вызывающий токен не является рутом или не содержит возможностейsudoдляauth/token/create. Если не указано, по умолчанию используются все политики вызывающего токена. -
meta(map: {})- карта метаданных, сопоставляющая строку со строковым значением. Это передается в устройства аудита. -
no_parent(bool: false)- этот аргумент будет действовать только в случае использования рут- или sudo-вызовом. Когда установлен в true, созданный токен не будет иметь родителя. -
no_default_policy(bool: false)- если true, политикаdefaultне будет содержаться в наборе политик этого токена. -
renewable(bool: true)- установите вfalse, чтобы отключить возможность продления токена за пределами его начального TTL. Установка значения вtrueпозволит токену быть обновляемым до максимального TTL системы/монтажной точки. -
lease(string: "")- УСТАРЕЛО; используйтеttlвместо. -
ttl(string: "")- период TTL токена, предоставленный как "1h", где час является наибольшим суффиксом. Если не указано, токен действителен на стандартный TTL аренды, или бессрочно, если используется корневая политика. -
type(string: "")- Тип токена. Может быть "batch" или "service". По умолчанию соответствует типу, указанному в настройках роли, названнойrole_name. -
explicit_max_ttl(string: "")- если установлено, токен будет иметь установленный явный максимальный TTL. Этот максимальный TTL токена не может быть изменен позже, и в отличие от обычных токенов, обновления значения максимального TTL системы/монтажа не будут иметь эффекта при времени продления - токен никогда не сможет быть продлен или использован за пределами значения, установленного в момент выпуска. -
display_name(string: "token")- отображаемое имя токена. -
num_uses(integer: 0)- максимальное количество использований данного токена. Это можно использовать для создания токена одноразового использования или ограниченного использования. Значение 0 не имеет ограничений на количество использований. -
period(string: "")- если указано, токен будет периодическим; он не будет иметь максимального TTL (если только не установлен "explicit-max-ttl"), но каждое продление будет использовать данный период. Требует рут-токена или токена с возможностью sudo. -
entity_alias(string: "")- имя сущностного алиаса, которое нужно связать во время создания токена. Работает только в сочетании с аргументомrole_name, и использованный сущностный алиас должен быть указан вallowed_entity_aliases. Если это указано, сущность не будет унаследована от родителя.
{
"policies": ["web", "stage"],
"meta": {
"user": "armon"
},
"ttl": "1h",
"renewable": true
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/token/create
{
"request_id": "f00341c1-fad5-f6e6-13fd-235617f858a1",
"lease_id": "",
"renewable": false,
"lease_duration": 0,
"data": null,
"wrap_info": null,
"warnings": [
"Policy \"stage\" does not exist",
"Policy \"web\" does not exist"
],
"auth": {
"client_token": "s.wOrq9dO9kzOcuvB06CMviJhZ",
"accessor": "B6oixijqmeR4bsLOJH88Ska9",
"policies": ["default", "stage", "web"],
"token_policies": ["default", "stage", "web"],
"metadata": {
"user": "armon"
},
"lease_duration": 3600,
"renewable": true,
"entity_id": "",
"token_type": "service",
"orphan": false,
"num_uses": 0
}
}
3. Поиск токена
Возвращает информацию о клиентском токене.
| Метод | Путь |
|---|---|
|
|
3.1. Параметры
-
token(string: <required>)- токен для поиска.
{
"token": "ClientToken"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/token/lookup
{
"data": {
"accessor": "8609694a-cdbc-db9b-d345-e782dbb562ed",
"creation_time": 1523979354,
"creation_ttl": 2764800,
"display_name": "ldap2-tesla",
"entity_id": "7d2e3179-f69b-450c-7179-ac8ee8bd8ca9",
"expire_time": "2018-05-19T11:35:54.466476215-04:00",
"explicit_max_ttl": 0,
"id": "cf64a70f-3a12-3f6c-791d-6cef6d390eed",
"identity_policies": ["dev-group-policy"],
"issue_time": "2018-04-17T11:35:54.466476078-04:00",
"meta": {
"username": "tesla"
},
"num_uses": 0,
"orphan": true,
"path": "auth/ldap2/login/tesla",
"policies": ["default", "testgroup2-policy"],
"renewable": true,
"ttl": 2764790
}
}
4. Поиск токена (Самостоятельный)
Возвращает информацию о текущем клиентском токене.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/auth/token/lookup-self
{
"data": {
"accessor": "8609694a-cdbc-db9b-d345-e782dbb562ed",
"creation_time": 1523979354,
"creation_ttl": 2764800,
"display_name": "ldap2-tesla",
"entity_id": "7d2e3179-f69b-450c-7179-ac8ee8bd8ca9",
"expire_time": "2018-05-19T11:35:54.466476215-04:00",
"explicit_max_ttl": 0,
"id": "cf64a70f-3a12-3f6c-791d-6cef6d390eed",
"identity_policies": ["dev-group-policy"],
"issue_time": "2018-04-17T11:35:54.466476078-04:00",
"meta": {
"username": "tesla"
},
"num_uses": 0,
"orphan": true,
"path": "auth/ldap2/login/tesla",
"policies": ["default", "testgroup2-policy"],
"renewable": true,
"ttl": 2764790
}
}
5. Поиск токена (Аксессор)
Возвращает информацию о клиентском токене по аксессору.
| Метод | Путь |
|---|---|
|
|
5.1. Параметры
-
accessor(string: <required>)- аксессор токена для поиска.
{
"accessor": "8609694a-cdbc-db9b-d345-e782dbb562ed"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/token/lookup-accessor
{
"data": {
"accessor": "8609694a-cdbc-db9b-d345-e782dbb562ed",
"creation_time": 1523979354,
"creation_ttl": 2764800,
"display_name": "ldap2-tesla",
"entity_id": "7d2e3179-f69b-450c-7179-ac8ee8bd8ca9",
"expire_time": "2018-05-19T11:35:54.466476215-04:00",
"explicit_max_ttl": 0,
"id": "",
"identity_policies": ["dev-group-policy"],
"issue_time": "2018-04-17T11:35:54.466476078-04:00",
"meta": {
"username": "tesla"
},
"num_uses": 0,
"orphan": true,
"path": "auth/ldap2/login/tesla",
"policies": ["default", "testgroup2-policy"],
"renewable": true,
"ttl": 2763902
}
}
6. Продление токена
Продлевает аренду, связанную с токеном. Это используется для предотвращения истечения токена и автоматического отзыва его. Продление токена возможно только в случае наличия связанной аренды.
| Метод | Путь |
|---|---|
|
|
6.1. Параметры
-
token(string: <required>)- токен для продления. Это может быть частью URL или тела. -
increment(string: "")- опциональная запрашиваемая длительность инкремента может быть предоставлена. Этот инкремент может не быть выполнен, например, в случае периодических токенов. Если не указано, StarVault использует стандартный TTL. Это указано как числовая строка с суффиксом, например "30s" или "5m".
{
"token": "ClientToken"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/token/renew
{
"auth": {
"client_token": "ABCD",
"policies": ["web", "stage"],
"metadata": {
"user": "armon"
},
"lease_duration": 3600,
"renewable": true
}
}
7. Продление токена (самостоятельно)
Продлевает аренду, связанную с вызывающим токеном. Это используется для предотвращения истечения токена и автоматического отзыва его. Продление токена возможно только в случае наличия связанной аренды.
| Метод | Путь |
|---|---|
|
|
7.1. Параметры
-
increment(string: "")- опциональная запрашиваемая длительность инкремента может быть предоставлена. Этот инкремент может не быть выполнен, например, в случае периодических токенов. Если не указано, StarVault использует стандартный TTL. Это указано как числовая строка с суффиксом, например "30s" или "5m".
{
"increment": "1h"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/token/renew-self
{
"auth": {
"client_token": "ABCD",
"policies": ["web", "stage"],
"metadata": {
"user": "armon"
},
"lease_duration": 3600,
"renewable": true
}
}
8. Продление токена (Аксессор)
Продлевает аренду, связанную с токеном, используя его аксессор. Это используется для предотвращения истечения токена и автоматического отзыва его.Продление токена возможно только в случае наличия связанной аренды.
| Метод | Путь |
|---|---|
|
|
8.1. Параметры
-
accessor(string: <required>)- аксессор, связанный с токеном для продления. -
increment(string: "")- опциональная запрашиваемая аренда может быть предоставлена. Этот инкремент может быть проигнорирован.
{
"accessor": "7JFKXuXKXa2D44YfDiovZ9aq"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/token/renew-accessor
{
"auth": {
"client_token": "",
"policies": ["web", "stage"],
"metadata": {
"user": "armon"
},
"lease_duration": 3600,
"renewable": true
}
}
9. Отзыв токена
Отзывает токен и все дочерние токены. Когда токен отзывается, все динамические секреты, сгенерированные с его помощью, также отзываются.
| Метод | Путь |
|---|---|
|
|
10. Отзыв токена (Самостоятельно)
Отзывает токен, использованный для вызова, и все дочерние токены. Когда токен отзывается, все динамические секреты, сгенерированные с его помощью, также отзываются.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
http://127.0.0.1:8200/v1/auth/token/revoke-self
11. Отзыв токена по аксессору
Отзывает токен, связанный с аксессором, и все дочерние токены. Это предназначено для случаев, когда нет доступа к идентификатору токена, но нужно отозвать токен и его детей.
| Метод | Путь |
|---|---|
|
|
12. Отзыв токена и дочерник
Отзывает токен, но не его дочерние токены. Когда токен отзывается, все секреты, сгенерированные с его помощью, также отзываются. Все дочерние токены становятся сиротами,но могут быть отозваны впоследствии с помощью /auth/token/revoke/. Это конечная точка, защищенная root-доступом.
| Метод | Путь |
|---|---|
|
|
13. Чтение роли токена
Извлекает конфигурацию роли с заданным именем.
| Метод | Путь |
|---|---|
|
|
13.1. Параметры
-
role_name(string: <required>)- имя роли токена.
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/auth/token/roles/nomad
{
"request_id": "075a19cd-4e56-a3ca-d956-7609819831ec",
"lease_id": "",
"lease_duration": 0,
"renewable": false,
"data": {
"allowed_entity_aliases": [
"my-entity-alias"
],
"allowed_policies": [],
"disallowed_policies": [],
"allowed_policies_glob": [],
"disallowed_policies_glob": [],
"explicit_max_ttl": 0,
"name": "nomad",
"orphan": false,
"path_suffix": "",
"period": 0,
"renewable": true,
"token_explicit_max_ttl": 0,
"token_no_default_policy": false,
"token_period": 0,
"token_type": "default-service"
},
"warnings": null
}
14. Список ролей токенов
Список доступных ролей токенов.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
--request LIST
http://127.0.0.1:8200/v1/auth/token/roles
{
"data": {
"keys": ["role1", "role2"]
}
}
15. Создание/Обновление роли токена
Создает (или заменяет) указанную роль. Роли обеспечивают специфическое поведение при создании токенов, которые позволяют функции токена, которая в противном случае не доступна или требует получения sudo/рут-привилегий для доступа. Параметры роли, когда установлены, переопределяют любые предоставленные опции для конечной точки create. Имя роли также включается в путь токена, что позволяет отзывать все токены, созданные против роли с помощью конечной точки /sys/leases/revoke-prefix.
| Метод | Путь |
|---|---|
|
|
15.1. Параметры
-
role_name(string: <required>)- имя роли токена. -
allowed_policies(list: [])- если установлено, токены могут быть созданы с любым подмножеством политик из этого списка, а не с обычной семантикой токенов как подмножество политик вызывающего токена. Параметр представляет собой строку имен политик, разделенную запятыми. Если во время созданияno_default_policyне установлено и"default"не содержится вdisallowed_policiesили не соответствует шаблону вdisallowed_policies_glob, политика"default"будет автоматически добавлена к созданному токену. -
disallowed_policies(list: [])- если установлено, успешное создание токена с помощью этой роли будет требовать, чтобы ни одна политика в заданном списке не была запрошена. Параметр представляет собой строку имен политик, разделенную запятыми. Добавление"default"в этот список предотвратит автоматическое добавление"default"к созданным токенам. -
allowed_policies_glob(list: [])- если установлено, токены могут быть созданы с любым подмножеством политик, соответствующим шаблону в этом списке, а не с обычной семантикой токенов как подмножеством политик вызывающего токена. Параметр представляет собой строку имен политик с шаблонами, разделенными запятыми. Если во время созданияno_default_policyне установлено и"default"не содержится вdisallowed_policiesили не соответствует шаблону вdisallowed_policies_glob, политика"default"будет добавлена к созданному токену автоматически. Если объединить сallowed_policies, политики должны соответствовать только одному из двух списков, чтобы быть разрешенными. Обратите внимание, что, в отличие отallowed_policies, политики, перечисленные вallowed_policies_glob, не будут добавлены к токену, когда в вызове/auth/token/create/:role_nameне указаны политики. -
disallowed_policies_glob(list: [])- если установлено, успешное создание токена с помощью этой роли будет требовать, чтобы ни одна запрашиваемая политика не соответствовала ни одной из политик в этом списке. Параметр представляет собой строку имен политик с шаблонами, разделенными запятыми. Добавление любого шаблона, соответствующего"default"в этот список, предотвратит автоматическое добавление"default"к созданным токенам. Если объединить сdisallowed_policies, политики должны соответствовать только одному из двух списков, чтобы быть заблокированными. -
orphan(bool: false)- еслиtrue, токены, созданные против этой политики, будут сиротскими токенами (они не будут иметь родителя). Таким образом, они не будут автоматически отозваны при отзыве любого другого токена. -
renewable(bool: true)- установите вfalse, чтобы отключить возможность продления токена за пределами его первоначального TTL. Установка значения вtrueпозволит токену быть обновляемым до максимального TTL системы/монтажной точки. -
path_suffix(string: "")- если установлено, токены, созданные против этой роли, будут иметь указанный суффикс в своем пути, дополнительно к имени роли. Это может быть полезно в определенных сценариях, таких как сохранение одного и того же имени роли в будущем, но отзыв всех токенов, созданных против него, до некоторого момента времени. Суффикс может быть изменен, позволяя новым вызывает иметь новый суффикс как часть их пути, а старые токены с предыдущим суффиксом могут быть отозваны через/sys/leases/revoke-prefix. -
allowed_entity_aliases(string: "", or list: [])- строка или JSON-список разрешенных сущностных алиасов. Если установлено, указывает сущностные алиасы, которые разрешены для использования во время генерации токенов. Это поле поддерживает использование шаблонов. Обратите внимание, чтоallowed_entity_aliasesне является чувствительным к регистру.
{
"allowed_policies": [
"dev"
],
"name": "nomad",
"orphan": false,
"bound_cidrs": ["127.0.0.1/32", "128.252.0.0/16"],
"renewable": true,
"allowed_entity_aliases": ["web-entity-alias", "app-entity-*"]
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/token/roles/nomad
17. Упорядочение токенов
Выполняет некоторые задачи обслуживания для очистки недействительных записей, которые могут остаться в хранилище токенов.Как правило, запуск этого не требуется, пока заметки по обновлению или поддержка не порекомендуют это. Существуют два потенциальных риска от выполнения упорядочивания:
-
Это выполнит много операций чтения I/O к методу хранения, так как фактически загрузит всё хранилище токенов в память. В зависимости от того, сколько очистки требуется (как правило, очень мало),также может произойти много записей.
-
Это приведёт к увеличению использования памяти StarVault, так как кэш StarVault по умолчанию не имеет ограничения по размеру, и каждое значение, загруженное из хранилища, будет кэшироваться. Перечисление конечной точки
/auth/token/accessors- хороший способ оценить потенциальное влияние: упорядочивание делает это и больше, так что если этот вызов создает проблемы для вашего кластера, будет разумно предоставить StarVault больше ресурсов перед попыткой упорядочивания.
|
Обратите внимание, что запрос может истечь в зависимости от максимальной продолжительности и конфигурации тайм-аутов вашего клиента. Убедитесь, что вам разрешено завершить его для правильного оценивания воздействия. |
Упорядочивание загрузит каждый токен-аксессор и куббихол, а также все вторичные индексы, которые используются для группировки токенов в деревья, чтобы отзыв родительских токенов также отзывал детские токены.
Для каждого родительского токена, перечисленного во вторичном индексе, упорядочение проверит, существует ли токен в хранилище, и если нет, его дочерние токены, которые всё ещё существуют, будут сделаны сиротами, после чего родительский токен будет удалён из вторичного индекса.
Для каждого найденного аксессора упорядочение проверит, существует ли соответствующий токен в хранилище, и если нет, то удалит аксессор. Если токен всё ещё существует в хранилище, но не должен быть, упорядочение попытается отозвать его и любые дочерние аренды, которые могут быть у него, а затем удалит аксессор.
Наконец, любые записи куббихолов, связанные с токенами, которые не были признаны действительными на вышеуказанных этапах, будут удалены.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
http://127.0.0.1:8200/v1/auth/token/tidy
{
"request_id": "84437c7f-36a1-6c1d-381d-14ec99217e94",
"lease_id": "",
"renewable": false,
"lease_duration": 0,
"data": null,
"wrap_info": null,
"warnings": [
"Tidy operation successfully started. Any information from the operation will be printed to OpenBao's server logs."
],
"auth": null
}