O X-Pack do Elasticsearch oferece controle de acesso baseado em função (RBAC), que permite conceder privilégios específicos a funções e atribuí-las aos usuários. O Alibaba Cloud Elasticsearch inclui várias funções integradas, e você pode criar funções personalizadas para obter um controle mais granular sobre clusters, índices e campos.
Contexto
Para obter detalhes sobre o RBAC do X-Pack, consulte User authorization.
Para obter detalhes sobre autenticação de segurança, consulte Authentication and authorization in Elasticsearch.
Procedimento
Estas instruções aplicam-se ao Elasticsearch V6.7 e V7.x. As etapas para outras versões podem ser diferentes. Consulte o console para obter as etapas mais precisas.
-
Crie uma função.
-
Faça logon no console do Kibana.
Para obter mais informações, consulte Log on to the Kibana console.
-
Acesse a página de gerenciamento.
V6.7: No painel de navegação à esquerda, clique em Management.
V7.x: No canto superior esquerdo da página, clique no ícone
e selecione Management > Stack Management.
Na seção Security, clique em Roles.
-
Clique em Create role e configure os parâmetros.
Parâmetro
Descrição
Role Name
Nome da função.
Cluster privileges
Define privilégios para operações de cluster, como visualizar integridade e configurações do cluster ou criar um snapshot. Para obter mais informações, consulte Cluster privileges.
Run As privileges
Opcional. Usuário que assume esta função. Se não especificado aqui, atribua a função ao criar o usuário. Para obter mais informações, consulte Create a user.
Index privileges
Define privilégios para operações de índice, como conceder acesso de
reada todos os campos de todos os índices definindo o nome do índice como. Os nomes de índices aceitam caracteres curinga () e expressões regulares. Para obter mais informações, consulte Indices privileges. Configure os seguintes parâmetros:-
Indices: Ao criar uma função, a lista suspensa exibe apenas padrões de índice existentes e não carrega automaticamente todos os índices físicos do cluster. Para conceder permissões em um índice não exibido, insira manualmente o nome específico do índice ou um nome de índice contendo um caractere curinga (
) no campo de entrada e pressione Enter para adicioná-lo. Exemplo:heartbeat-.NotaSe você não tiver um padrão de índice, acesse a página Management, clique em Index Pattern em Kibana e siga as instruções na tela para criar um.
-
Privileges: Privilégios a serem atribuídos à função.
-
Granted fields (optional): Campos nos quais os privilégios serão concedidos.
Kibana privileges
Define privilégios para operações do Kibana.
ImportanteVersões do Kibana anteriores à 7.0 suportam apenas Base privileges, que concedem acesso a todos os espaços por padrão. O Kibana 7.0 e versões posteriores suportam Feature privileges além dos Base privileges. Os Feature privileges concedem acesso a recursos específicos do Kibana e exigem a especificação de um espaço do Kibana.
Ao criar uma função, é necessário atribuir privilégios. Os exemplos a seguir mostram configurações comuns de funções:
-
Conceda a um usuário padrão privilégios somente leitura em um índice específico. Esse usuário poderá acessar apenas o índice especificado.
Para obter mais informações, consulte Configure read-only index privileges.
-
Conceda a um usuário padrão privilégios para visualizar todos ou alguns painéis.
Para obter mais informações, consulte Configure dashboard privileges.
-
Conceda a um usuário padrão privilégios de leitura e gravação em alguns índices e privilégios somente leitura em todos os clusters. Por exemplo, o usuário pode visualizar a integridade, snapshots e configurações do cluster, além de gravar dados e atualizar mapeamentos de um índice.
Para obter mais informações, consulte Configure index read/write and cluster read-only privileges.
-
Conceda a um usuário padrão privilégios somente leitura para o Kibana Discover e um índice. Esse usuário pode acessar a página Discover no console do Kibana para visualizar os dados desse índice.
Para obter mais informações, consulte Configure Discover read-only privileges for index data.
-
Conceda a um usuário padrão privilégios para criar, ler, atualizar e excluir documentos, criar e excluir índices e modificar configurações de índice, sem conceder acesso ao console do Kibana.
Para obter mais informações, consulte Configure permissions to manage indexes and documents without Kibana access.
-
Clique em Create role.
-
-
Crie um usuário e atribua funções para conceder permissões.
-
Acesse a página de gerenciamento.
V6.7: No painel de navegação à esquerda, clique em Management.
V7.x: No canto superior esquerdo da página, clique no ícone
e selecione Management > Stack Management.
Na seção Security, clique em Users.
-
Clique em Create new user e configure os parâmetros.
Parâmetro
Descrição
Username
Nome de usuário para fazer logon no console do Kibana.
Password
Senha para o usuário fazer logon no console do Kibana.
Confirm Password
Deve corresponder à Password.
Full name
Nome completo do usuário.
Email address
Endereço de e-mail do usuário.
Roles
Atribua funções ao usuário. Selecione uma ou mais funções personalizadas ou integradas.
ImportanteMesmo que você tenha especificado um usuário na seção
Run As privilegesao create the role, ainda será necessário atribuir essa função ao usuário aqui. Caso contrário, o usuário não conseguirá fazer logon. Clique em Create user.
-
Faça logon no console do Kibana como o novo usuário e execute uma operação para verificar as permissões.
Configure privilégios de índice somente leitura
Caso de uso
Conceda a um usuário padrão privilégios somente leitura para um índice específico. O usuário pode consultar dados do índice no console do Kibana, mas não pode acessar APIs de nível de cluster.
Configuração da função
Tabela 1. Descrição do privilégio
|
Tipo de privilégio |
Chave do privilégio |
Valor do privilégio |
Descrição |
|
Index privileges |
indices |
kibana_sample_data_logs |
Nome do índice. Especifique o nome completo, um alias, um caractere curinga ou uma expressão regular. Para obter mais informações, consulte Indices Privileges. |
|
privileges |
|
Concede privilégios somente leitura no índice. Esses privilégios incluem |
|
|
Granted fields (optional) |
|
Campos do índice. * indica todos os campos. |
|
|
Kibana privileges |
privileges |
|
Concede acesso somente leitura do Kibana a todos os espaços. O padrão é none, que nega acesso a todos os espaços do Kibana. Importante
Versões do Kibana anteriores à 7.0 suportam apenas Base privileges, que concedem acesso a todos os espaços por padrão. O Kibana 7.0 e versões posteriores suportam Feature privileges além dos Base privileges. Os Feature privileges concedem acesso a recursos específicos do Kibana e exigem a especificação de um espaço do Kibana. |
Verificação
-
Faça logon no console do Kibana como o novo usuário e execute um comando de leitura. O comando deve retornar um resultado normal.
GET /kibana_sample_data_logs/_search -
Execute um comando de gravação. Você receberá um erro de autorização.
POST /kibana_sample_data_logs/_doc/1 { "productName": "testpro", "annual_rate": "3.22%", "describe": "testpro" }{ "error": { "root_cause": [ { "type": "security_exception", "reason": "action [indices:data/write/index] is unauthorized for user [user-test]" } ], "type": "security_exception", "reason": "action [indices:data/write/index] is unauthorized for user [user-test]" }, "status": 403 }
Configure privilégios de painel
Caso de uso
Conceda a um usuário padrão privilégios somente leitura para um índice específico e permita que o usuário visualize os dados do painel desse índice.
Configuração da função
Ao create a user, atribua as funções read-index e kibana_dashboard_only_user ao usuário.
read-index: Exemplo de função personalizada que você deve criar. Essa função tem privilégios somente leitura para um índice especificado.
-
kibana_dashboard_only_user: Função integrada do Kibana que possui o privilégio de visualizar dados de painel para índices especificados.
NotaNo Kibana 7.0 e versões posteriores, a função kibana_dashboard_only_user foi descontinuada. Para visualizar o painel de um índice específico, basta configurar privilégios somente leitura para esse índice. Para obter mais informações, consulte Configuring read-only privileges for an index.
A função kibana_dashboard_only_user pode ser usada com funções personalizadas em muitos cenários. Se você precisar atribuir apenas o recurso Dashboards only roles a uma função personalizada, na área Kibana da página Management, localize a seção Dashboard e vincule uma função personalizada (o padrão é a função kibana_dashboard_only_user).
Verificação
Faça logon no console do Kibana como o novo usuário. Você poderá visualizar o painel do índice correspondente.
O painel chamado heartbeat-dashboard contém um gráfico de linhas heartbeat-visu, com Count no eixo Y e @timestamp per 30 seconds no eixo X, mostrando a tendência de contagem de heartbeat ao longo do tempo.
Configure leitura/gravação de índice e cluster somente leitura
Caso de uso
Conceda a um usuário privilégios de leitura, gravação e exclusão para índices específicos, e privilégios somente leitura para o cluster e o Kibana.
Configuração da função
Tabela 2. Descrição do privilégio
|
Tipo de privilégio |
Chave do privilégio |
Valor do privilégio |
Descrição |
|
Cluster privileges |
Cluster |
|
Concede privilégios somente leitura no cluster, como visualizar integridade, status, hot threads, informações de nó e tarefas bloqueadas. |
|
Index privileges |
indices |
|
Nome do índice. Especifique o nome completo, um alias, um caractere curinga ou uma expressão regular. Para obter mais informações, consulte roles-indices-priv. |
|
privileges |
|
Concede privilégios somente leitura no índice. Esses privilégios incluem |
|
|
|
Privilégio para criar um índice. Se você definir um alias de índice ao criar um índice, também será necessário conceder o privilégio Importante
O alias do índice também deve satisfazer as regras de correspondência definidas em indices. |
||
|
|
Concede acesso somente leitura aos metadados do índice, como mapeamentos e configurações. |
||
|
|
Privilégio para executar todas as operações de gravação em documentos, incluindo |
||
|
|
Privilégio para monitorar todas as operações, incluindo |
||
|
|
Privilégio para excluir documentos do índice. |
||
|
|
Privilégio para excluir um índice. |
||
|
granted fields |
|
Campos do índice a autorizar. * representa todos os campos do índice. |
|
|
Kibana privileges |
privileges |
|
Concede acesso somente leitura do Kibana a todos os espaços. O padrão é none, que nega acesso a todos os espaços do Kibana. Importante
Versões do Kibana anteriores à 7.0 suportam apenas Base privileges, que concedem acesso a todos os espaços por padrão. O Kibana 7.0 e versões posteriores suportam Feature privileges além dos Base privileges. Os Feature privileges concedem acesso a recursos específicos do Kibana e exigem a especificação de um espaço do Kibana. |
Verificação
Faça logon no console do Kibana como o usuário padrão. Os comandos a seguir devem ser executados com êxito.
GET _cat/indices?v
GET _cluster/stats
GET /product_info/_search
GET /product_info1/_search
POST /kibana_sample_data_logs/_doc/2
{
"productName":"testpro",
"annual_rate":"3.22%",
"describe":"testpro"
}
PUT /product_info2/_doc/1
{
"productName":"testpro",
"annual_rate":"3.22%",
"describe":"testpro"
}
DELETE product_info
--- Output ---
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .monitoring-es-6-2020.12.14 xxx 1 1
green open .kibana_1 xxx 1 1
green open kibana_sample_data_logs xxx 5 1 2 0 18.1kb 9kb
green open .monitoring-kibana-6-2020.12.12 xxx 1 1
green open .monitoring-es-6-2020.12.11 xxx 1 1
green open .monitoring-es-6-2020.12.10 xxx 1 1
green open .monitoring-kibana-6-2020.12.14 xxx 1 1
green open .monitoring-es-6-2020.12.09 xxx 1 1
green open .kibana_task_manager xxx 1 1
green open .monitoring-kibana-6-2020.12.13 xxx 1 1
green open .monitoring-kibana-6-2020.12.09 xxx 1 1
green open product_info1 xxx 5 1 0 0 2.5kb 1.2kb
green open .monitoring-kibana-6-2020.12.11 xxx 1 1
green open .monitoring-es-6-2020.12.12 xxx 1 1
green open product_info2 xxx 5 1 1 0 9.3kb 4.6kb
green open .monitoring-kibana-6-2020.12.10 xxx 1 1
green open .monitoring-es-6-2020.12.13 xxx 1 1
green open .security-6 xxx 1 1
-
Visualize informações detalhadas sobre os índices no cluster.
GET /_cat/indices?v -
Visualize o status do cluster.
GET /_cluster/stats -
Consulte dados no índice
library_v1.GET /library_v1/_search -
Consulte dados no índice
library_v2.GET /library_v2/_search -
Grave dados no índice
heartbeat-2023.01.01usando o método POST.POST /heartbeat-2023.01.01/_doc/2 { "productName": "testpro", "annual_rate": "3.22%", "describe": "testpro" } -
Grave dados no índice
library_v3usando o método PUT.PUT /library_v3/_doc/1 { "productName": "testpro", "annual_rate": "3.22%", "describe": "testpro" } -
Exclua o índice
library_v1.DELETE library_v1
Configure privilégios somente leitura do Discover
Caso de uso
Conceda a um usuário padrão privilégios somente leitura para o Kibana Discover e um índice. Esse usuário pode acessar a página Discover no console do Kibana para visualizar os dados desse índice.
Configuração da função
Tabela 3. Descrição do privilégio
|
Tipo de privilégio |
Chave do privilégio |
Valor do privilégio |
Descrição |
|
Cluster privileges |
Privileges |
|
Concede privilégios somente leitura em todos os clusters, como visualizar integridade e status do cluster, hot threads, informações de nó, estatísticas de nó e cluster e tarefas pendentes do cluster. |
|
Index privileges |
Indices |
kibana_sample_data_ecommerce |
Nome do índice. Especifique o nome completo, um alias, um caractere curinga ou uma expressão regular. Para obter mais informações, consulte Indices Privileges. |
|
Privileges |
|
Concede privilégios somente leitura no índice. Esses privilégios incluem |
|
|
Granted fields (optional) |
|
Campo do índice. O |
|
|
Kibana privileges |
Privileges |
|
Concede privilégios somente leitura para todos os espaços do Kibana. O valor padrão é Importante
Versões do Kibana anteriores à 7.0 suportam apenas Base privileges, que concedem acesso a todos os espaços por padrão. O Kibana 7.0 e versões posteriores suportam Feature privileges além dos Base privileges. Os Feature privileges concedem acesso a recursos específicos do Kibana, como a página Discover, e exigem a especificação de um espaço do Kibana. |
Verificação
Faça logon no console do Kibana como o novo usuário. Você poderá visualizar os dados do índice especificado na página Discover.
O índice atualmente visualizado é kibana_sample_data_ecommerce, e a página exibe com êxito os detalhes do documento de pedido de e-commerce nesse índice.
Gerencie índices e documentos sem acesso ao Kibana
Caso de uso
Conceda a um usuário privilégios para gerenciar índices e documentos via API, sem acesso ao console do Kibana.
Configuração da função
Tabela 4. Descrição do privilégio
|
Tipo de privilégio |
Chave do privilégio |
Valor do privilégio |
Descrição |
|
Index privileges |
Indices |
|
Nome do índice. Especifique o nome completo, um alias, um caractere curinga ou uma expressão regular. Para obter mais informações, consulte Indices Privileges. |
|
Privileges |
|
Privilégio para criar um índice. Se a solicitação para criar um índice contiver um alias a ser adicionado ao índice, também será necessário conceder o privilégio |
|
|
|
Privilégio para excluir um índice. |
||
|
|
Privilégio para indexar e atualizar documentos, e para atualizar mapeamentos de índice. |
||
|
|
Privilégio para excluir documentos. |
||
|
|
Concede privilégios somente leitura no índice. Esses privilégios incluem |
||
|
|
Concede privilégios para operações de gerenciamento de índice, como gerenciar aliases, configurações, mapeamentos e modelos. |
||
|
Granted fields (optional) |
|
Campos do índice. |
|
|
Kibana privileges |
Privileges |
|
Defina como Importante
Versões do Kibana anteriores à 7.0 suportam apenas Base privileges, que concedem acesso a todos os espaços por padrão. O Kibana 7.0 e versões posteriores suportam Feature privileges além dos Base privileges. Os Feature privileges concedem acesso a recursos específicos do Kibana e exigem a especificação de um espaço do Kibana. |
Verificação
-
Use cURL para criar e, em seguida, excluir um índice.
[root@iZbp17az4re1xxx ~]# [root@iZbp17az4re1xxx ~]# curl -u 'test:xxx' -XPUT "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role" {"acknowledged":true,"shards_acknowledged":true,"index":"test_role"}[root@iZbp17az4re1kuerxxx ~]# [root@iZbp17az4re1xxx ~]# [root@iZbp17az4re1xxx ~]# curl -u 'test:xxx' -XDELETE "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role" {"acknowledged":true} root@iZbp17az4re1kuerxxx ~]# -
Modifique a configuração do índice. Este exemplo define os dados do índice como dados frios.
[root@iZbp17az4re1kuere ~]# [root@iZbp17az4re1kuere ~]# curl -u 'test:xxx' -XPUT "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_settings" -H 'content-Type:application/json' -d '{"index":{"routing":{"allocation":{"require.box_type": "warm"}}}}' {"acknowledged":true}[root@iZbp17az4re1kuere-xxx ~]# -
Execute operações CRUD em documentos.
[root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# curl -u 'test_xxx' -XPOST "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_doc/1" -H 'content-Type:application/json' -d '{"test":"you know, for search"}' {"_index":"test_role","_type":"_doc","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":0,"_primary_term":1} [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# curl -u 'test_xxx' -XPOST "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_doc/2" -H 'content-Type:application/json' -d '{"test":"you know, for search"}' {"_index":"test_role","_type":"_doc","_id":"2","_version":1,"result":"created","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":1,"_primary_term":1} [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# curl -u 'test_xxx' -XPOST "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_doc/2" -H 'content-Type:application/json' -d '{"test":"you know, for search, 2.0"}' {"_index":"test_role","_type":"_doc","_id":"2","_version":2,"result":"updated","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":2,"_primary_term":1} [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# curl -u 'test_xxx' -XGET "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_search?q=test:'search'" {"took":64,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":2,"max_score":0.19100356,"hits":[{"_index":"test_role","_type":"_doc","_id":"1","_score":0.19100356,"_source":{"test":"you know,for search"}},{"_index":"test_role","_type":"_doc","_id":"2","_score":0.17439455,"_source":{"test":"you know,for search, 2.0"}}]}} [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# curl -u 'test_xxx' -XDELETE "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_doc/2" {"_index":"test_role","_type":"_doc","_id":"2","_version":3,"result":"deleted","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":3,"_primary_term":1} [root@iZbp17az4re1kueren xxx ~]# [root@iZbp17az4re1kueren xxx ~]# -
Faça logon no console do Kibana como o usuário.
Uma mensagem será exibida indicando que o usuário não possui os privilégios necessários.
Perguntas frequentes
Posso usar o AccessKey ID e o AccessKey secret de um usuário do Resource Access Management (RAM) para acessar diretamente dados em um cluster do Elasticsearch?
Não. O AccessKey ID e o AccessKey secret de um usuário do Resource Access Management (RAM) servem apenas para chamar APIs de gerenciamento do Alibaba Cloud, como APIs para criar ou reiniciar instâncias e modificar configurações. Eles não permitem acessar ou manipular diretamente dados em um cluster do Elasticsearch. Para ler ou gravar dados do cluster ou executar operações de índice, use o nome de usuário e a senha criados no sistema de autenticação de segurança do X-Pack do Elasticsearch.
Por que o superusuário elastic recebe um erro 403 de privilégios insuficientes ao excluir o índice .kibana_security_session_1?
O índice .kibana_security_session_1 é um índice de sistema protegido que o Kibana usa para armazenar informações de sessão do usuário. Mesmo o usuário elastic com a função superuser não pode excluir diretamente este índice usando uma API. Trata-se de uma restrição de segurança do Elasticsearch e do Kibana, não de um erro de configuração de permissão. Se um problema com este índice causar falhas de login ou sessão, limpe o cache do navegador e faça logon novamente no console do Kibana.