Как получить все сопоставления ролей одного пользователя в Elasticsearch. У меня есть такое сопоставление ролей:
"sdbsd21tdsbjvbriuu": {
"enabled": true,
"roles": [
"kibana_dashboard_only_user",
"5e3bb57222b49800016b666f"
],
"rules": {
"all": [
{
"field": {
"realm.name": "oidc1"
}
},
{
"field": {
"username": [
"user001@one.com",
"User002@two.com",
"USER003@three.com"
]
}
}
]
},
"metadata": {
"migrated": false
}
}
Например, user001@one.com
может присутствовать в нескольких сопоставлениях ролей. Я хочу получить все сопоставления ролей с помощью user001@one.com
. Как это сделать? Я попытался выполнить поиск по индексу security-7
. Однако не удалось получить ни одного поискового запроса для этого.
GET .security-7/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"doc_type": "role-mapping"
}
}
]
}
}
}
Отображение индекса .security-7
:
{
".security-7": {
"mappings": {
"dynamic": "strict",
"_meta": {
"security-version": "7.6.2"
},
"properties": {
"access_token": {
"properties": {
"invalidated": {
"type": "boolean"
},
"realm": {
"type": "keyword"
},
"user_token": {
"properties": {
"authentication": {
"type": "binary"
},
"expiration_time": {
"type": "date",
"format": "epoch_millis"
},
"id": {
"type": "keyword"
},
"metadata": {
"type": "object",
"dynamic": "false"
},
"version": {
"type": "integer"
}
}
}
}
},
"actions": {
"type": "keyword"
},
"api_key_hash": {
"type": "keyword",
"index": false,
"doc_values": false
},
"api_key_invalidated": {
"type": "boolean"
},
"application": {
"type": "keyword"
},
"applications": {
"properties": {
"application": {
"type": "keyword"
},
"privileges": {
"type": "keyword"
},
"resources": {
"type": "keyword"
}
}
},
"cluster": {
"type": "keyword"
},
"creation_time": {
"type": "date",
"format": "epoch_millis"
},
"creator": {
"properties": {
"metadata": {
"type": "object",
"dynamic": "false"
},
"principal": {
"type": "keyword"
},
"realm": {
"type": "keyword"
}
}
},
"doc_type": {
"type": "keyword"
},
"email": {
"type": "text",
"analyzer": "email"
},
"enabled": {
"type": "boolean"
},
"expiration_time": {
"type": "date",
"format": "epoch_millis"
},
"full_name": {
"type": "text"
},
"global": {
"properties": {
"application": {
"properties": {
"manage": {
"properties": {
"applications": {
"type": "keyword"
}
}
}
}
}
}
},
"indices": {
"properties": {
"allow_restricted_indices": {
"type": "boolean"
},
"field_security": {
"properties": {
"except": {
"type": "keyword"
},
"grant": {
"type": "keyword"
}
}
},
"names": {
"type": "keyword"
},
"privileges": {
"type": "keyword"
},
"query": {
"type": "keyword"
}
}
},
"limited_by_role_descriptors": {
"type": "object",
"enabled": false
},
"metadata": {
"type": "object",
"dynamic": "false"
},
"name": {
"type": "keyword"
},
"password": {
"type": "keyword",
"index": false,
"doc_values": false
},
"refresh_token": {
"properties": {
"client": {
"properties": {
"realm": {
"type": "keyword"
},
"type": {
"type": "keyword"
},
"user": {
"type": "keyword"
}
}
},
"invalidated": {
"type": "boolean"
},
"refresh_time": {
"type": "date",
"format": "epoch_millis"
},
"refreshed": {
"type": "boolean"
},
"superseding": {
"properties": {
"encrypted_tokens": {
"type": "binary"
},
"encryption_iv": {
"type": "binary"
},
"encryption_salt": {
"type": "binary"
}
}
},
"token": {
"type": "keyword"
}
}
},
"role_descriptors": {
"type": "object",
"enabled": false
},
"role_templates": {
"properties": {
"format": {
"type": "keyword"
},
"template": {
"type": "text"
}
}
},
"roles": {
"type": "keyword"
},
"rules": {
"type": "object",
"dynamic": "false"
},
"run_as": {
"type": "keyword"
},
"type": {
"type": "keyword"
},
"username": {
"type": "keyword"
},
"version": {
"type": "integer"
}
}
}
}
}
Изменить: Всем будущим читателям этого вопроса я обращаюсь к команде Elasticsearch. Поскольку у меня было сопоставление ролей на основе области OID C. Что касается Elasticsearch 7.8, на мой вопрос нет решения. Наилучший способ - разобрать ответ JSON. Я придерживался этого подхода.