Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›REST API ›API безопасности

API делегирования аутентификации PKI

Реализует обмен цепочкой сертификатов X509Certificate на маркер доступа Elasticsearch.

Запрос

POST /_security/delegate_pki

Предварительные условия

  • Для вызова этого API у (прокси-)пользователя должны быть права delegate_pki или all кластера. Встроенная роль kibana_system уже предоставляет эти права. См. Права доступа.

Описание

Этот API реализует обмен цепочкой сертификатов X509Certificate на маркер доступа Elasticsearch. Цепочка сертификатов проверяется в соответствии с RFC 5280, последовательно учитывая конфигурацию доверия каждого установленного домена PKI, у которого параметр delegation.enabled установлен в значение true (по умолчанию false). Успешно проверенный сертификат клиента также подлежит проверке имени субъекта в соответствии с его доменной конфигурацией username_pattern.

Этот API вызывается умными и доверенными прокси, такими как Kibana, которые завершают сеанс TLS пользователя, но всё ещё хотят аутентифицировать пользователя с помощью домена PKI — как если бы пользователь подключался непосредственно к Elasticsearch. Для получения более подробной информации см. Аутентификация PKI для клиентов, подключающихся к Kibana.

Связь между открытым ключом субъекта в целевом сертификате и соответствующим закрытым ключом не проверяется. Это часть процесса аутентификации TLS, и она делегируется прокси, который вызывает этот API. Прокси доверен, что выполнил аутентификацию TLS, и этот API преобразует эту аутентификацию в маркер доступа Elasticsearch.

Тело запроса

x509_certificate_chain

(Обязательный список строк) Цепочка сертификатов X509Certificate, представленная как упорядоченный массив строк. Каждая строка в массиве — это base64-кодированная (Раздел 4 RFC4648 — не base64url-кодированная) кодировка сертификата DER.

Первый элемент — целевой сертификат, содержащий имя субъекта, запрашивающее доступ. За ним могут следовать дополнительные сертификаты; каждый последующий сертификат используется для подтверждения предыдущего.

Тело ответа

access_token
(строка) Маркер доступа, связанный с именем субъекта сертификата клиента.
expires_in
(единицы времени) Время действия маркера в секундах.
type
(строка) Тип маркера.

Примеры

Следующий пример запроса:

POST /_security/delegate_pki
{
  "x509_certificate_chain": ["MIIDeDCCAmCgAwIBAgIUBzj/nGGKxP2iXawsSquHmQjCJmMwDQYJKoZIhvcNAQELBQAwUzErMCkGA1UEAxMiRWxhc3RpY3NlYXJjaCBUZXN0IEludGVybWVkaWF0ZSBDQTEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMB4XDTIzMDcxODE5MjkwNloXDTQzMDcxMzE5MjkwNlowSjEiMCAGA1UEAxMZRWxhc3RpY3NlYXJjaCBUZXN0IENsaWVudDEWMBQGA1UECxMNRWxhc3RpY3NlYXJjaDEMMAoGA1UEChMDb3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAllHL4pQkkfwAm/oLkxYYO+r950DEy1bjH+4viCHzNADLCTWO+lOZJVlNx7QEzJE3QGMdif9CCBBxQFMapA7oUFCLq84fPSQQu5AnvvbltVD9nwVtCs+9ZGDjMKsz98RhSLMFIkxdxi6HkQ3Lfa4ZSI4lvba4oo+T/GveazBDS+NgmKyq00EOXt3tWi1G9vEVItommzXWfv0agJWzVnLMldwkPqsw0W7zrpyT7FZS4iLbQADGceOW8fiauOGMkscu9zAnDR/SbWl/chYioQOdw6ndFLn1YIFPd37xL0WsdsldTpn0vH3YfzgLMffT/3P6YlwBegWzsx6FnM/93Ecb4wIDAQABo00wSzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQKNRwjW+Ad/FN1Rpoqme/5+jrFWzAfBgNVHSMEGDAWgBRcya0c0x/PaI7MbmJVIylWgLqXNjANBgkqhkiG9w0BAQsFAAOCAQEACZ3PF7Uqu47lplXHP6YlzYL2jL0D28hpj5lGtdha4Muw1m/BjDb0Pu8l0NQ1z3AP6AVcvjNDkQq6Y5jeSz0bwQlealQpYfo7EMXjOidrft1GbqOMFmTBLpLA9SvwYGobSTXWTkJzonqVaTcf80HpMgM2uEhodwTcvz6v1WEfeT/HMjmdIsq4ImrOL9RNrcZG6nWfw0HR3JNOgrbfyEztEI471jHznZ336OEcyX7gQuvHE8tOv5+oD1d7s3Xg1yuFp+Ynh+FfOi3hPCuaHA+7F6fLmzMDLVUBAllugst1C3U+L/paD7tqIa4ka+KNPCbSfwazmJrt4XNiivPR4hwH5g=="] 
}

Цепочка сертификатов из одного элемента.

Что возвращает следующий ответ:

{
  "access_token" : "dGhpcyBpcyBub3QgYSByZWFsIHRva2VuIGJ1dCBpdCBpcyBvbmx5IHRlc3QgZGF0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==",
  "type" : "Bearer",
  "expires_in" : 1200,
  "authentication" : {
    "username" : "Elasticsearch Test Client",
    "roles" : [ ],
    "full_name" : null,
    "email" : null,
    "metadata" : {
      "pki_dn" : "O=org, OU=Elasticsearch, CN=Elasticsearch Test Client",
      "pki_delegated_by_user" : "test_admin",
      "pki_delegated_by_realm" : "file"
    },
    "enabled" : true,
    "authentication_realm" : {
      "name" : "pki1",
      "type" : "pki"
    },
    "lookup_realm" : {
      "name" : "pki1",
      "type" : "pki"
    },
    "authentication_type" : "realm"
  }
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/security-api-delegate-pki-authentication.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API