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

Методы аутентификации. 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 токенов.

Метод Путь

POST

/auth/kerberos/config

  • 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 не возвращается, так как это конфиденциальная информация.

Метод Путь

GET

/auth/kerberos/config

Пример запроса:
$ 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.

Метод Путь

POST

/auth/kerberos/config/ldap

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.

Метод Путь

GET

/auth/kerberos/config/ldap

Пример запроса:
$ 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.

Метод Путь

LIST

/auth/kerberos/groups

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.

Метод Путь

GET

/auth/kerberos/groups/:name

6.1. Параметры

  • name (string: ) - Имя группы LDAP.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    http://127.0.0.1:8200/v1/auth/kerberos/groups/admins
Пример ответа:
{
  "data": {
    "policies": ["admin", "default"]
  },
  "renewable": false,
  "lease_id": "",
  "lease_duration": 0,
  "warnings": null
}

7. Создание/Обновление группы Kerberos LDAP

Эта конечная точка создает или обновляет политики группы LDAP.

Метод Путь

POST

/auth/kerberos/groups/:name

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

8. Удаление группы Kerberos LDAP

Эта конечная точка удаляет группу LDAP и ассоциацию политик.

Метод Путь

DELETE

/auth/kerberos/groups/:name

8.1. Параметры

  • name (string: ) - Имя группы LDAP.

Пример запроса:
$ curl \
    --header "X-Vault-Token: ..." \
    --request DELETE \
    http://127.0.0.1:8200/v1/auth/kerberos/groups/admins

9. Вход с помощью Kerberos

Эта конечная точка позволяет вам войти с действительным Kerberos SPNEGO токеном. Этот токен получается клиентом, упаковывается и преобразуется в base 64 с использованием стандартного кодирования.

Пример SPNEGO токена (новые строки добавлены для удобства):
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
Метод Путь

POST

/auth/kerberos/login

Пример запроса:
$ curl \
    --header "Authorization: Negotiate YIIFSw...sWw" \
    --request POST \
    http://127.0.0.1:8200/v1/auth/kerberos/login