Методы аутентификации. Kerberos (API)
Это документация API для плагина метода аутентификации Kerberos StarVault. Чтобы узнать больше об использовании и работе, смотрите метод аутентификации Kerberos StarVault.
|
Данный механизм может использовать внешние сертификаты X.509 в качестве части TLS или проверки подписи. Проверка подписей на сертификаты X.509 с использованием SHA-1 устарела и больше не может использоваться без обходного решения. |
В данной документации предполагается, что метод аутентификации Kerberos подключен по пути auth/kerberos в StarVault. Поскольку возможно включать методы аутентификации в любом месте, пожалуйста, обновите ваши вызовы API соответственно.
Метод аутентификации Kerberos проверяет как авторизацию Kerberos, так и LDAP, поэтому обе конфигурации обязательны.
1. Настройка StarVault Kerberos
Эта конечная точка настраивает keytab и учетную запись службы, которые будут использоваться StarVault для проверки входящих SPNEGO токенов.
| Метод | Путь |
|---|---|
|
|
-
keytab(string: )- базовая 64-я представление содержимого Kerberos keytab, которое будет использоваться для проверки входящих SPNEGO токенов. Оно должно содержать запись, соответствующую учетной записи службы. Это можно создать с помощью следующей команды:$ base64 starvault.keytab > starvault.keytab.base64. -
service_account(string: )- учетная запись службы, связанная с как записью keytab, так и учетной записью LDAP, созданной для StarVault. Например:starvault_svc. -
remove_instance_name- удаляет любые имена экземпляров из имени сервисного принципала Kerberos при разборе файла keytab. Например, когда это установлено в true, если keytab имеет имя сервисного принципалаfoo/localhost@example.com, StarVault будет обрезать имя сервисного принципала доfoo@example.com. -
add_group_aliases- когда установлено вtrue, StarVault добавит все найденные группы LDAP для пользователя как алиасы групп.
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/kerberos/config
{
"add_group_aliases": false,
"keytab": "BQIAAAA6AAEACk1BVFJJWC5MQU4ACXZhdWx0X3N2YwAAAAFdzZSjAgAXABDwhEyRR9nRqkpP8KTn2A83AAAAAg==",
"remove_instance_name": false,
"service_account": "starvault_svc"
}
2. Чтение StarVault Kerberos
Эта конечная точка извлекает учетную запись службы для метода аутентификации Kerberos. Keytab не возвращается, так как это конфиденциальная информация.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/auth/kerberos/config
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"add_group_aliases": false,
"remove_instance_name": false,
"service_account": "starvault_svc"
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
3. Настройка Kerberos LDAP
Эта конечная точка настраивает LDAP в методе аутентификации Kerberos.
| Метод | Путь |
|---|---|
|
|
3.1. Параметры
-
url(string: )- LDAP сервер для подключения. Примеры:ldap://ldap.myorg.com,ldaps://ldap.myorg.com:636. Можно указать несколько URL через запятую, напримерldap://ldap.myorg.com,ldap://ldap2.myorg.com; они будут пробоваться по порядку. -
case_sensitive_names(bool: false)- если установлено, имена пользователей и групп, назначенные политикам в backend, будут чувствительны к регистру. В противном случае имена будут нормализованы к нижнему регистру. Регистр останется сохраненным при отправке имени пользователя на сервер LDAP во время входа; это только для соответствия локальным определениям пользователей/групп. -
starttls(bool: false)- если true, выдает командуStartTLSпосле установления незащищенного соединения. -
tls_min_version(string: tls12)- минимальная версия TLS для использования. Допустимые значения:tls10,tls11,tls12илиtls13. -
tls_max_version(string: tls12)- максимальная версия TLS для использования. Допустимые значения:tls10,tls11,tls12илиtls13. -
insecure_tls(bool: false)- если true, пропускает проверку SSL-сертификата сервера LDAP - небезопасно, используйте осторожно! -
certificate(string: "")- CA сертификат для использования при проверке сертификата сервера LDAP, должен быть x509 PEM закодирован. -
binddn(string: "")- полное DN объекта, чтобы завершить поиск пользователя. Пример:cn=starvault,ou=Users,dc=example,dc=com. -
bindpass(string: "")- пароль для использования вместе сbinddnпри выполнении поиска пользователя. -
userdn(string: "")- база DN, под которой следует выполнять поиск пользователя. Пример:ou=Users,dc=example,dc=com. -
userattr(string: "")- атрибут на объекте пользовательского атрибута, соответствующий имени пользователя, переданного при аутентификации. Примеры:sAMAccountName,cn,uid. -
discoverdn(bool: false)- использует анонимное связывание для обнаружения DN пользователей. -
deny_null_bind(bool: true)- эта опция предотвращает обход аутентификации пользователями при предоставлении пустого пароля. -
upndomain(string: "")- userPrincipalDomain, используемое для построения UPN строки для аутентифицирующегося пользователя. Построенный UPN будет выглядеть как[username]@UPNDomain. Пример:example.com, что заставит StarVault связываться какusername@example.com. -
groupfilter(string: "")- шаблон Go, используемый при построении запроса членства группы. Шаблон может получать доступ к следующим переменным контекста: [UserDN,Username]. Значение по умолчанию:(|(memberUid={{.Username}})(member={{.UserDN}})(uniqueMember={{.UserDN}})), что совместимо с несколькими распространенными схемами каталогов. Для поддержки разрешения вложенных групп для Active Directory используйте следующий запрос:(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}})). -
groupdn(string: "")- база поиска LDAP, которую следует использовать для поиска членства в группе. Это может быть корень, содержащий либо группы, либо пользователей. Пример:ou=Groups,dc=example,dc=com. -
groupattr(string: "")- LDAP атрибут, который нужно следовать на объектах, возвращаемыхgroupfilter, чтобы перечислить групповое членство пользователей. Примеры: для запросов возвращающих группы используйте:cn. Для запросов возвращающих пользователей используйте:memberOf. Значение по умолчанию:cn.
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/kerberos/config/ldap
{
"binddn": "cn=starvault,ou=Users,dc=example,dc=com",
"deny_null_bind": true,
"discoverdn": false,
"groupattr": "cn",
"groupdn": "ou=Groups,dc=example,dc=com",
"groupfilter": "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))",
"insecure_tls": false,
"starttls": false,
"tls_max_version": "tls12",
"tls_min_version": "tls12",
"url": "ldaps://ldap.myorg.com:636",
"userattr": "samaccountname",
"userdn": "ou=Users,dc=example,dc=com"
}
4. Чтение конфигурации Kerberos LDAP
Эта конечная точка извлекает конфигурацию LDAP для метода аутентификации Kerberos.
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "X-Vault-Token: ..." \
http://127.0.0.1:8200/v1/auth/kerberos/config/ldap
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"binddn": "cn=starvault,ou=Users,dc=example,dc=com",
"bindpass": "",
"certificate": "",
"deny_null_bind": true,
"discoverdn": false,
"groupattr": "cn",
"groupdn": "ou=Groups,dc=example,dc=com",
"groupfilter": "(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={{.UserDN}}))",
"insecure_tls": false,
"starttls": false,
"tls_max_version": "tls12",
"tls_min_version": "tls12",
"upndomain": "",
"url": "ldaps://ldap.myorg.com:636",
"userattr": "samaccountname",
"userdn": "ou=Users,dc=example,dc=com"
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
5. Список групп Kerberos LDAP
Эта конечная точка возвращает список существующих LDAP групп в методе аутентификации Kerberos.
| Метод | Путь |
|---|---|
|
|
5.1. Параметры
-
after(string: "")- необязательная запись, с которой следует начинать перечисление для постраничной навигации; не требуется существовать; -
limit(int: 0)- необязательное количество записей для возврата; по умолчанию возвращаются все записи.
$ curl \
--header "X-Vault-Token: ..." \
--request LIST \
http://127.0.0.1:8200/v1/auth/kerberos/groups
{
"auth": null,
"warnings": null,
"wrap_info": null,
"data": {
"keys": ["scientists", "engineers"]
},
"lease_duration": 0,
"renewable": false,
"lease_id": ""
}
6. Чтение группы Kerberos LDAP
Эта конечная точка возвращает политики, связанные с группой Kerberos LDAP.
| Метод | Путь |
|---|---|
|
|
7. Создание/Обновление группы Kerberos LDAP
Эта конечная точка создает или обновляет политики группы LDAP.
| Метод | Путь |
|---|---|
|
|
7.1. Параметры
-
name(string: )- имя группы LDAP; -
policies(string: "")- список, разделенный запятыми, политик, связанных с группой.
{
"policies": "admin,default"
}
$ curl \
--header "X-Vault-Token: ..." \
--request POST \
--data @payload.json \
http://127.0.0.1:8200/v1/auth/kerberos/groups/admins
9. Вход с помощью Kerberos
Эта конечная точка позволяет вам войти с действительным Kerberos SPNEGO токеном. Этот токен получается клиентом, упаковывается и преобразуется в base 64 с использованием стандартного кодирования.
YIIFSwYGKwYBBQUCoIIFPzCCBTugDTALBgkqhkiG9xIBAgKiggUoBIIFJGCCBSAGCSq
GSIb3EgECAgEAboIFDzCCBQugAwIBBaEDAgEOogcDBQAgAAAAo4IEB2GCBAMwggP/oA
MCAQWhDBsKTUFUUklYLkxBTqIvMC2gAwIBA6EmMCQbBEhUVFAbHDdlZmNjZTg4MGVkM
y5tYXRyaXgubGFuOjgyMDCjggO3MIIDs6ADAgEXoQMCAQKiggOlBIIDoXky+VDSMXqT
Z8XqUiIfzX3+t1ROgO49WYQPoqW1EJLA6vOVtsLITTuDUw8WaLIexki07up3wiO7bKn
unPFN3Y6VaKZfGoubVBFnLwrxqiEqytk19fiuc0bUJD5fNX+BUeHjePPmE73kRcuchC
L5+WkbY0X37cH5uKwCWI6TxpuEc74+mvmGOdAOdisC31MO6EBnOpTlxvKOXzShVk5Xa
rkkHjTJyjoUslgm8JVdj/uB/+x16k0bFVOuWybfeCkn4FY7OeIxypxDJgk6uHU+5jpy
XsdXK4w5GG+TK5BI6LXW8ZH6NOhcTZnRyt1/S4Wihd6HKhL8lH6H+wPWAnN4Ym8jiSg
7O0nIkp9su1l/umJWnLnyUdsC9ekKmCYS9MLrmaUREnKMFfrYOF283gWVmfuSWd832Q
9PIE93vUVTfetw1OwbJXEbG7ex3BotXPJ8yaDUAz4Zv0a6zQlj6JutE7LF3JvuuQeot
QnwPhrZTrmv7ZbmGO3GmkzbMzIwcTXCCKX8ocOo8GLmtEigAPK23FOW2Y0p1meYjF0U
xPzU6MPxfQWiXTWflqabXug7uZh8u76rzSEEceosPxoBqMm6hSmGc85+0bzy/E7AGJM
5ELa2Ny2KpyniPiYCap44GsFZbGM1FwJeh1bG3dJungIn7po4X2wlg00wZVlbHsBzhP
Hys0oxVzOQfrvx88G0fH80+vyzQiQAq4ZqmZqkO0zFSsdqG8ReJvpY0eGzN6/lGwcRl
eav7Vum/s5MalXhYUdOjB4K3A5yQArHbbLfeZlhb7d4vttzPNkmaZ9ZNTyW1GSuqDtd
+YJ0g70aN82KQMWiK3cbJcx/1jcmaN5gjSDm0xk19G2eb8VlRpwLFAazOlpPGozPl0Y
PD45h3Yv3AA5aMVXvEi+NvSYR3z9VXxk6A8wFJxV5NZxV2hYwmxt0S+TYXFeudXzT+W
ySoykcsxIU6rUevmJlEqZDyD3VcdnUOE9pxrIY/cqpdBBwatorF+jIK/ytcTBjvoM6c
LL4g4n/isWMu8Xs6lSMxZzrC3Ewv9VYMzOEFxaHUXlyIC8GCN6t9DHZNzT91TC0u5Rj
XuLqXENczg33dACvr+yhvin/0QNBQG+EXz/E4NiBBWqtTFa0BiTVTwyrKL5OyiLcIVe
v4l8l9vyj/ABwDacr9ZGjhFbOShCTuFFWBPNnBwPqiRBV4y1gPP4abYBmeboLrUiqwZ
81UrP2L8rCTEtYu9q3GmW/pIHqMIHnoAMCAReigd8EgdxwBViqyCyL0+J/k2bw0upNL
h+4wzJcFBFC/wxX2aMvvIYdQv5nWwdNLMII3l/zQ0+eRdzpKfg1ZRT6x0D5278eQLto
9r1CqKNW515u4kD5+pE8VOwZJMVe3FmduaH2gnTLAcoYXkBUE24hcr0ExSY6kTTBWPj
U5dsmUsj3+qrN9JruEADqw99t/EWnN3iTsHh1rOQOd9jIJ1wCIkgvnLB8Rad+q5jguG
8qQh1WDObTlNOnezDtiuLtRb03QDo8Q4Sm72IIcLDlffVvl7WAog5TpC8qM97+Wmv0C
sWw
| Метод | Путь |
|---|---|
|
|
$ curl \
--header "Authorization: Negotiate YIIFSw...sWw" \
--request POST \
http://127.0.0.1:8200/v1/auth/kerberos/login