Модуль доступен только в Deckhouse Enterprise Edition, лицензируется и оплачивается отдельно
Методы аутентификации
Каждый метод аутентификации имеет свой собственный набор API-путей и методов, которые описаны в разделе. Методы аутентификации могут быть активированы по определенному пути, но для упрощения документация будет предполагать использование путей по умолчанию. Если вы активируете методы аутентификации по другому пути, вам следует скорректировать ваши API-запросы соответственно.
AppRole
Этот раздел подразумевает, что метод активирован по пути /auth/approle
.
Вывод списка ролей
Этот путь возвращает список существующих AppRoles в методе.
Метод | Путь |
---|---|
LIST | /auth/approle/role |
Пример запроса:
curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request LIST \
${VAULT_ADDR}/v1/auth/approle/role
Пример ответа API:
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"keys": ["dev", "prod", "test"]
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
Создание или обновление AppRole
Создаёт новую AppRole или обновляет существующую AppRole. Путь поддерживает и создание, и обновление возможностей метода. both create and update capabilities. На роль может быть наложено одно или несколько ограничений. Необходимо, чтобы хотя бы одно из них было включено при создании или обновлении роли.
Метод | Путь |
---|---|
POST | /auth/approle/role/:role_name |
Параметры:
- role_name (строка:
) - Имя AppRole. Должно быть короче 4096 байт, допустимые символы включают a-Z, 0-9, пробел, тире, подчеркивания и точки. - bind_secret_id (булевый: true) - Требуется, чтобы secret_id был представлен при входе с использованием этого AppRole
- secret_id_bound_cidrs (массив: []) - Строка, разделенная запятыми, или список блоков CIDR; установленное значение указывает блоки IP-адресов, которые могут выполнять операцию входа.
- secret_id_num_uses (целое число: 0) - Количество раз, которое любой конкретный SecretID может использоваться для получения токена из этого AppRole, после чего SecretID по умолчанию истекает. Установка значения равного нулю позволяет неограниченное использование. Однако этот параметр может быть переопределен полем ’num_uses’ запроса при создании SecretID.
- secret_id_ttl (строка: “”) - Продолжительность в виде целого числа секунд (3600) или целевого временного интервала (60m), после чего любой SecretID по умолчанию истекает. Установка значения равного нулю позволит SecretID не истекать. Однако этот параметр может быть переопределен полем ’ttl’ запроса при создании SecretID.
- local_secret_ids (булевый: false) - Если установлено, секретные ID, созданные с использованием этой роли, будут локальными для кластера. Этот параметр можно установить только при создании роли и изменить позднее невозможно.
- token_ttl (целое число: 0 или строка: “”) - Инкрементальный срок действия для созданных токенов. Текущее значение этого параметра будет учтено при продлении.
- token_max_ttl (целое число: 0 или строка: “”) - Максимальный срок действия для созданных токенов. Текущее значение этого параметра будет учтено при продлении.
- token_policies (массив: [] или строка с разделением запятыми: “”) - Список политик токенов, которые будут добавлены в создаваемые токены. В зависимости от метода аутентификации, этот список может быть дополнен значениями пользователя/группы/другими значениями.
- token_bound_cidrs (массив: [] или строка с разделением запятыми: “”) - Список блоков CIDR; установленное значение указывает блоки IP-адресов, которые могут успешно аутентифицироваться, и связывает полученный токен с этими блоками.
- token_explicit_max_ttl (целое число: 0 или строка: “”) - Если установлено, будет добавлен явный максимальный срок действия токена. Это жесткое ограничение, даже если token_ttl и token_max_ttl позволили бы продление.
- token_no_default_policy (булевый: false) - Если установлено, политика по умолчанию не будет установлена на создаваемых токенах; в противном случае она будет добавлена к установленным политикам в token_policies.
- token_num_uses (целое число: 0) - Максимальное количество раз, которое может быть использован созданный токен (в пределах его срока действия); 0 означает неограниченное количество раз. Если вам необходимо, чтобы токен имел возможность создавать дочерние токены, установите значение на 0.
- token_period (целое число: 0 или строка: “”) - Максимальное допустимое значение периода времени, когда запрашивается периодический токен из этой роли.
- token_type (строка: “”) - Тип токена, который должен быть создан. Значение может быть равно service, batch, или default для использования настроенного по умолчанию значения (которое, если не изменено, будет service токенами). Для ролей хранилища токенов есть две дополнительные возможности: default-service и default-batch, которые указывают тип для возврата, если клиент не запросит другой тип при создании. Для случаев аутентификации, основанной на машинном взаимодействии, используйте токены типа batch.
Пример данных:
{
"token_type": "batch",
"token_ttl": "10m",
"token_max_ttl": "15m",
"token_policies": ["default"],
"period": 0,
"bind_secret_id": true
}
Пример запроса:
curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/role/application
Пример ответа API:
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"keys": ["dev", "prod", "test"]
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
Чтение AppRole
Выводит свойства существующего AppRole.
Метод | Путь |
---|---|
GET |
/auth/approle/role/:role_name |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
${VAULT_ADDR}/v1/auth/approle/role/application1
Пример ответа API:
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"token_ttl": 1200,
"token_max_ttl": 1800,
"secret_id_ttl": 600,
"secret_id_num_uses": 40,
"token_policies": ["default"],
"period": 0,
"bind_secret_id": true,
"secret_id_bound_cidrs": []
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
Удаление AppRole
Удаляет существующий AppRole из метода.
Метод | Путь |
---|---|
DELETE |
/auth/approle/role/:role_name |
Параметры:
role_name
(строка: <required>)
- Имя AppRole. Должно быть короче 4096 байт.
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request DELETE \
${VAULT_ADDR}/v1/auth/approle/role/application1
Чтение RoleID AppRole
Выводит RoleID существующего AppRole.
Метод | Путь |
---|---|
GET |
/auth/approle/role/:role_name/role-id |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
${VAULT_ADDR}/v1/auth/approle/role/application1/role-id
Пример ответа API:
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"role_id": "e5a7b66e-5d08-da9c-7075-71984634b882"
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
Обновление RoleID AppRole
Обновляет RoleID существующей роли AppRole в заданное значение.
Метод | Путь |
---|---|
POST |
/auth/approle/role/:role_name/role-id |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.role_id
(string: <required>)
- Значение RoleID.
Пример данных:
{
"role_id": "custom-role-id"
}
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/role/application1/role-id
Генерация нового SecretID
Генерирует и выводит новый SecretID для существующего AppRole. Аналогично токенам, ответ также будет содержать значение secret_id_accessor
, которое можно использовать для чтения свойств секрета без раскрытия самого индентификатора, а также для удаления SecretID из AppRole.
Метод | Путь |
---|---|
POST |
/auth/approle/role/:role_name/secret-id |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.metadata
(строка: "")
- Метаданные, связанные с SecretID. Это должна быть строка в формате JSON, содержащая метаданные в виде пар ключ-значение. Эти метаданные будут установлены на токены, выданные с использованием этого SecretID, и будут записаны в журнал аудита в открытом виде.cidr_list
(массив: [])
- Строка, разделенная запятыми, или список блоков CIDR, ограничивающих использование SecretID из определенного набора IP-адресов. Если на роли установлено значениеsecret_id_bound_cidrs
, то список блоков CIDR, указанный здесь, должен быть подмножеством блоков CIDR, указанных на роли.token_bound_cidrs
(массив: [])
- Строка, разделенная запятыми, или список блоков CIDR; если установлено, указывает блоки IP-адресов, которые могут использовать аутентификационные токены, созданные с помощью этого SecretID. Переопределяет значение, установленное на роли, но должно быть подмножеством.num_uses
(целое число: 0)
- Количество раз, которое этот SecretID может быть использован, после чего SecretID истекает. Значение ноль позволит неограниченное использование. Переопределяет параметр secret_id_num_uses роли, когда указан. Не может быть больше, чем secret_id_num_uses роли.ttl
(строка: "")
- Продолжительность в секундах (3600
) или целое число временных единиц (60m
), после которой этот SecretID истекает. Значение ноль позволит SecretID не истекать. Переопределяет параметр secret_id_ttl роли, когда указан. Не может быть дольше, чем secret_id_ttl роли.
Пример данных:
{
"metadata": "{ \"tag1\": \"production\" }",
"ttl": 600,
"num_uses": 50
}
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/role/application1/secret-id
Пример ответа API:
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"secret_id_accessor": "84896a0c-1347-aa80-a3f6-aca8b7558780",
"secret_id": "841771dc-11c9-bbc7-bcac-6a3945a69cd9",
"secret_id_ttl": 600,
"secret_id_num_uses": 50
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
Список идентификаторов доступа SecretID
Выводит идентификаторы доступа всех выданных SecretID для AppRole. Это включает идентификаторы доступа для “пользовательских” SecretID.
Метод | Путь |
---|---|
LIST |
/auth/approle/role/:role_name/secret-id |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request LIST \
${VAULT_ADDR}/v1/auth/approle/role/application1/secret-id
Пример ответа API:
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"keys": [
"ce202d2a-8253-c437-bf9a-aceed4241491",
"a1c0dee4-b869-e68d-3520-2040c1a0849a",
"be03b7e2-044c-7244-07e1-47560ca1c787",
"84896a0c-1347-aa80-a3f6-aca8b7558780",
"439b1328-6523-15e7-403a-a48038cdc45a"
]
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
Чтение SecretID AppRole
Выводит свойства SecretID AppRole.
Метод | Путь |
---|---|
POST |
/auth/approle/role/:role_name/secret-id/lookup |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.secret_id
(строка: <обязательно>)
- SecretID, привязанный к роли.
Пример данных:
{
"secret_id": "84896a0c-1347-aa80-a3f6-aca8b7558780"
}
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/role/application1/secret-id/lookup
Пример ответа API:
{
"request_id": "74752925-f309-6859-3d2d-0fcded95150e",
"lease_id": "",
"renewable": false,
"lease_duration": 0,
"data": {
"cidr_list": [],
"creation_time": "2023-02-10T18:17:27.089757383Z",
"expiration_time": "0001-01-01T00:00:00Z",
"last_updated_time": "2023-02-10T18:17:27.089757383Z",
"metadata": {
"tag1": "production"
},
"secret_id_accessor": "2be760a4-87bb-2fa9-1637-1b7fa9ba2896",
"secret_id_num_uses": 0,
"secret_id_ttl": 0,
"token_bound_cidrs": []
},
"wrap_info": null,
"warnings": null,
"auth": null
}
Уничтожение SecretID AppRole
Уничтожает SecretID AppRole.
Метод | Путь |
---|---|
POST |
/auth/approle/role/:role_name/secret-id/destroy |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.secret_id
(string: <required>)
- SecretID, привязанный к роли.
Пример данных:
{
"secret_id": "84896a0c-1347-aa80-a3f6-aca8b7558780"
}
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/role/application1/secret-id/destroy
Чтение SecretID AppRole
Выводит свойства SecretID AppRole.
Метод | Путь |
---|---|
POST |
/auth/approle/role/:role_name/secret-id-accessor/lookup |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.secret_id_accessor
(строка: <обязательно>)
- SecretID доступа, привязанный к роли.
Пример данных:
{
"secret_id_accessor": "84896a0c-1347-aa80-a3f6-aca8b7558780"
}
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/role/application1/secret-id-accessor/lookup
Пример ответа API:
{
"request_id": "72836cd1-139c-fe66-1402-8bb5ca4044b8",
"lease_id": "",
"renewable": false,
"lease_duration": 0,
"data": {
"cidr_list": [],
"creation_time": "2023-02-10T18:17:27.089757383Z",
"expiration_time": "0001-01-01T00:00:00Z",
"last_updated_time": "2023-02-10T18:17:27.089757383Z",
"metadata": {
"tag1": "production"
},
"secret_id_accessor": "2be760a4-87bb-2fa9-1637-1b7fa9ba2896",
"secret_id_num_uses": 0,
"secret_id_ttl": 0,
"token_bound_cidrs": []
},
"wrap_info": null,
"warnings": null,
"auth": null
}
Уничтожение SecretID AppRole по идентификатору доступа
Уничтожает SecretID AppRole по его идентификатору доступа.
Метод | Путь |
---|---|
POST |
/auth/approle/role/:role_name/secret-id-accessor/destroy |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.secret_id_accessor
(string: <required>)
- Идентификатор доступа SecretID, привязанный к роли.
Пример данных:
{
"secret_id_accessor": "84896a0c-1347-aa80-a3f6-aca8b7558780"
}
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/role/application1/secret-id-accessor/destroy
Создание пользовательского SecretID AppRole
Назначает “пользовательский” SecretID для существующей роли AppRole. Это используется в модели “Push” операции.
Метод | Путь |
---|---|
POST |
/auth/approle/role/:role_name/custom-secret-id |
Параметры:
role_name
(string: <required>)
- Имя AppRole. Должно быть короче 4096 байт.secret_id
(строка: <обязательно>)
- SecretID, который будет привязан к роли.metadata
(строка: "")
- Метаданные, связанные с SecretID. Это должна быть строка в формате JSON, содержащая метаданные в виде пар ключ-значение. Эти метаданные будут установлены на токены, выданные с использованием этого SecretID, и будут записаны в журнал аудита в открытом виде.cidr_list
(массив: [])
- Строка, разделенная запятыми, или список блоков CIDR, ограничивающих использование SecretID из определенного набора IP-адресов. Если на роли установлено значениеsecret_id_bound_cidrs
, то список блоков CIDR, указанный здесь, должен быть подмножеством блоков CIDR, указанных на роли.token_bound_cidrs
(массив: [])
- Строка, разделенная запятыми, или список блоков CIDR; если установлено, указывает блоки IP-адресов, которые могут использовать аутентификационные токены, созданные с помощью этого SecretID. Переопределяет значение, установленное на роли, но должно быть подмножеством.num_uses
(целое число: 0)
- Количество раз, которое этот SecretID может быть использован, после чего SecretID истекает. Значение ноль позволит неограниченное использование. Переопределяет параметр secret_id_num_uses роли, когда указан. Не может быть больше, чем secret_id_num_uses роли.ttl
(строка: "")
- Продолжительность в секундах (3600
) или целое число временных единиц (60m
), после которой этот SecretID истекает. Значение ноль позволит SecretID не истекать. Переопределяет параметр secret_id_ttl роли, когда указан. Не может быть дольше, чем secret_id_ttl роли.
Пример данных:
{
"secret_id": "testsecretid",
"ttl": 600,
"num_uses": 50
}
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/role/application1/custom-secret-id
Пример ответа API:
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"secret_id": "testsecretid",
"secret_id_accessor": "84896a0c-1347-aa80-a3f6-aca8b7558780",
"secret_id_ttl": 600,
"secret_id_num_uses": 50
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
Вход с использованием AppRole
Выдает токен Stronghold на основе представленных учетных данных. role_id
всегда требуется; если bind_secret_id
включен (по умолчанию) в AppRole, также требуется secret_id
. Также оцениваются любые другие привязанные значения аутентификации в AppRole (например, CIDR клиентского IP).
Метод | Путь |
---|---|
POST |
/auth/approle/login |
Параметры:
role_id
(string: <required>)
- RoleID AppRole.secret_id
(string: <required>)
- SecretID, принадлежащий AppRole.
Пример данных:
{
"role_id": "59d6d1ca-47bb-4e7e-a40b-8be3bc5a0ba8",
"secret_id": "84896a0c-1347-aa80-a3f6-aca8b7558780"
}
Пример запроса:
$ curl \
--request POST \
--data @payload.json \
${VAULT_ADDR}/v1/auth/approle/login
Пример ответа API:
{
"auth": {
"renewable": true,
"lease_duration": 1200,
"metadata": null,
"token_policies": ["default"],
"accessor": "fd6c9a00-d2dc-3b11-0be5-af7ae0e1d374",
"client_token": "5b1a0318-679c-9c45-e5c6-d1b9a9035d49"
},
"warnings": null,
"wrap_info": null,
"data": null,
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
Чтение, обновление или удаление свойств AppRole
Обновляет соответствующее свойство в существующем AppRole. Все эти параметры AppRole могут быть обновлены с использованием прямого доступа к пути /auth/approle/role/:role_name
. Пути для каждого поля предоставляются отдельно, чтобы иметь возможность делегировать конкретные пути с использованием системы ACL Stronghold.
Method | Path | |
---|---|---|
GET/POST/DELETE |
/auth/approle/role/:role_name/policies |
200/204 |
GET/POST/DELETE |
/auth/approle/role/:role_name/secret-id-num-uses |
200/204 |
GET/POST/DELETE |
/auth/approle/role/:role_name/secret-id-ttl |
200/204 |
GET/POST/DELETE |
/auth/approle/role/:role_name/token-ttl |
200/204 |
GET/POST/DELETE |
/auth/approle/role/:role_name/token-max-ttl |
200/204 |
GET/POST/DELETE |
/auth/approle/role/:role_name/bind-secret-id |
200/204 |
GET/POST/DELETE |
/auth/approle/role/:role_name/secret-id-bound-cidrs |
200/204 |
GET/POST/DELETE |
/auth/approle/role/:role_name/token-bound-cidrs |
200/204 |
GET/POST/DELETE |
/auth/approle/role/:role_name/period |
200/204 |
Ссылка на путь /auth/approle/role/:role_name
.
Очистка токенов
Выполняет некоторые задачи по обслуживанию для очистки недействительных записей, которые могут оставаться в хранилище токенов. Обычно запуск этой операции не требуется, если заметки об обновлении или служба поддержки не указывают на это. Это может привести к большому количеству операций ввода-вывода с хранилищем, поэтому следует использовать с осторожностью.
Метод | Путь |
---|---|
POST |
/auth/approle/tidy/secret-id |
Пример запроса:
$ curl \
--header "X-Vault-Token: ${VAULT_TOKEN}" \
--request POST \
${VAULT_ADDR}/v1/auth/approle/tidy/secret-id
Пример ответа API:
{
"request_id": "b20b56e3-4699-5b19-cc6b-e74f7b787bbf",
"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 Stronghold's server logs."
],
"auth": null
}