“O Elasticsearch é um mecanismo de pesquisa e análise incrivelmente versátil e poderoso. Ele pode ingerir, organizar, classificar, agregar e gerenciar rapidamente grandes quantidades de dados de texto.
Apesar de tudo isso, um dos recursos mais destacados do Elasticsearch e de todo o seu ecossistema são os recursos de segurança rígidos. O Elasticsearch inclui recursos como a assinatura de solicitações HTTP e permite que apenas usuários autenticados realizem operações no cluster.
Outro recurso de segurança no Elasticsearch é o uso de usuários e funções. O Elasticsearch permite atribuir funções específicas a usuários no cluster. Eles são usados para determinar quais ações o nome de usuário pode executar no cluster.
O Elasticsearch atribuirá uma função padrão a todos os usuários criados no cluster. A função padrão permite que os usuários acessem o terminal de autenticação, que é responsável por alterar senhas, recuperar informações do usuário etc.
NOTA: A função padrão também é atribuída a usuários anônimos.
O núcleo deste tutorial é fornecer os fundamentos das funções do Elasticsearch. Usando este tutorial, você descobrirá como buscar as funções no realm nativo do Elasticsearch e visualizar as funções atribuídas a um nome de usuário específico.
Vamos mergulhar.
API de obtenção de funções do Elasticsearch
Usamos a API Get Roles para recuperar informações sobre funções no cluster Elasticsearch. A sintaxe da solicitação é a mostrada:
PEGUE / _segurança / Função
A consulta acima deve retornar todos os papéis no sistema.
Para recuperar informações sobre uma função específica, você pode usar a sintaxe conforme mostrado:
PEGUE / _segurança / Função /< nome >
NOTA: Esta API requer que o usuário tenha o privilégio manage_security no cluster.
Se a solicitação for bem-sucedida, a consulta deverá retornar uma matriz de funções.
Exemplo 1 – Recuperar todas as funções no cluster
A solicitação de exemplo abaixo recuperará todas as funções no cluster do Elasticsearch:
ondulação -XGET “http://localhost:9200/_security/role?pretty=true” -H 'kbn-xsrf: relatórios'
Um exemplo de saída é mostrado abaixo:
'apm_user' : {
'conjunto' : [ ] ,
'índices' : [
{
'nomes' : [
'apm-*'
] ,
'privilégios' : [
'ler' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : falso
} ,
{
'nomes' : [
'janela-aprox.*'
] ,
'privilégios' : [
'ler' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : falso
} ,
{
'nomes' : [
'janela-aprox-*'
] ,
'privilégios' : [
'ler' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : falso
} ,
{
'nomes' : [
'metrics-apm.*'
] ,
'privilégios' : [
'ler' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : falso
} ,
{
'nomes' : [
'metrics-apm-*'
] ,
'privilégios' : [
'ler' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : falso
} ,
{
'nomes' : [
'traces-apm.*'
] ,
'privilégios' : [
'ler' ,
'view_index_metadata'
] ,
'allow_restricted_indices' : falso
} ,
NOTA: A saída acima foi truncada para o escopo deste tutorial.
Exemplo 2 – Obter informações sobre uma função específica
O exemplo abaixo retorna informações sobre a função kibana_admin.
ondulação -XGET “http://localhost:9200/_security/role/kibana_admin” -H 'kbn-xsrf: relatórios'
As informações de função resultantes são mostradas:
'kibana_admin' : {
'conjunto' : [ ] ,
'índices' : [ ] ,
'formulários' : [
{
'inscrição' : 'kibana-.kibana' ,
'privilégios' : [
'tudo'
] ,
'Recursos' : [
'*'
]
}
] ,
'correr como' : [ ] ,
'metadados' : {
'_reservado' : verdadeiro
} ,
'transient_metadata' : {
'ativado' : verdadeiro
}
}
}
Recuperar informações de função em YAML
Por padrão, a API get roles retornará o resultado no formato JSON. No entanto, você pode escolher um formato diferente usando o parâmetro de formato.
A sintaxe é a mostrada:
PEGUE / _segurança / Função? formato =json / yaml
Por exemplo, para recuperar as informações sobre a função kibana_admin no formato YAML, podemos executar:
Saída resultante:
kibana_admin:
conjunto: [ ]
índices: [ ]
formulários:
- inscrição: 'kibana-.kibana'
privilégios:
- 'tudo'
Recursos:
- '*'
correr como: [ ]
metadados:
_reservado: verdadeiro
transient_metadata:
ativado: verdadeiro
Exibir funções para um usuário específico
Se você deseja visualizar informações sobre um nome de usuário específico (incluindo suas funções), pode usar a solicitação conforme mostrado:
PEGUE / _segurança / do utilizador
Por exemplo, suponha que tenhamos um nome de usuário “linuxhint”, podemos recuperar essas informações do usuário conforme mostrado:
A solicitação acima deve retornar informações sobre o usuário no formato YAML, conforme mostrado:
linuxhint:
nome de usuário: 'linux'
papéis:
- 'visualizador'
- 'watcher_user'
nome completo: 'linuxhint. com'
o email: ' [e-mail protegido] '
metadados: { }
ativado: verdadeiro
Podemos ver que o usuário tem os papéis viewer e watcher_user.
Ver funções no Kibana
Se você não quiser usar a API cat roles, poderá visualizar as funções do Elasticsearch no Kibana navegando até Management -> Stack Management.
Em seguida, navegue até Segurança -> Funções
Você pode então visualizar e gerenciar as funções.
Conclusão
Neste artigo, você aprendeu como usar a API Elasticsearch Roles para visualizar informações sobre funções específicas no cluster. Você também descobriu como visualizar as funções de um determinado nome de usuário usando a API do usuário.
Obrigado por ler!