Elasticsearch X-Pack propose un contrôle d'accès basé sur les rôles (RBAC) qui vous permet d'attribuer des privilèges spécifiques à des rôles, puis d'assigner ces rôles aux utilisateurs. Alibaba Cloud Elasticsearch inclut plusieurs rôles intégrés, mais vous pouvez également créer des rôles personnalisés pour un contrôle plus granulaire sur les clusters, les index et les champs.
Contexte
Pour en savoir plus sur le RBAC X-Pack, consultez la documentation Autorisation des utilisateurs.
Pour plus de détails sur l'authentification de sécurité, reportez-vous à l'article Authentification et autorisation dans Elasticsearch.
Procédure
Ces instructions s'appliquent aux versions Elasticsearch 6.7 et 7.x. Les étapes peuvent varier selon les autres versions. Consultez la console pour obtenir la procédure la plus précise.
-
Créez un rôle.
-
Connectez-vous à la console Kibana.
Pour plus d'informations, consultez la rubrique Connexion à la console Kibana.
-
Accédez à la page de gestion.
V6.7 : Dans le volet de navigation de gauche, cliquez sur ManagementManagement.
V7.x : Dans le coin supérieur gauche de la page, cliquez sur l'icône

, puis sélectionnez ManagementManagement > Stack Management.
Dans la section SecuritySecurity, cliquez sur RolesRoles.
-
Cliquez sur Create role et configurez les paramètres.
Paramètre
Description
Role Name
Nom du rôle.
Privilèges de cluster
Définit les privilèges pour les opérations de cluster, telles que l'affichage de l'état et des paramètres du cluster, ou la création d'un snapshot. Pour plus d'informations, consultez Privilèges de cluster.
Privilèges Run As
Facultatif. Utilisateur qui assume ce rôle. Si cette information n'est pas spécifiée ici, vous pourrez assigner le rôle lors de la création de l'utilisateur. Pour plus de détails, voir Créer un utilisateur.
Privilèges d'index
Définit les privilèges pour les opérations d'index, par exemple l'octroi d'un accès
readà tous les champs de tous les index en définissant le nom de l'index sur. Les noms d'index acceptent les caractères génériques () et les expressions régulières. Pour en savoir plus, consultez Privilèges d'index. Configurez les paramètres suivants :-
Indices : Lors de la création d'un rôle, la liste déroulante affiche uniquement les modèles d'index existants et ne charge pas automatiquement tous les index physiques du cluster. Pour accorder des autorisations sur un index non affiché, saisissez manuellement le nom spécifique de l'index ou un nom contenant un caractère générique (
) dans le champ de saisie, puis appuyez sur Enter pour l'ajouter. Exemple :heartbeat-.RemarqueSi vous ne disposez d'aucun modèle d'index, accédez à la page Management, cliquez sur Index Pattern sous Kibana, et suivez les instructions à l'écran pour en créer un.
-
Privileges : Privilèges à attribuer au rôle.
-
Granted fields (optional) : Champs sur lesquels octroyer des privilèges.
Privilèges Kibana
Définit les privilèges pour les opérations Kibana.
ImportantLes versions de Kibana antérieures à 7,0 prennent uniquement en charge les privilèges de base, qui accordent par défaut l'accès à tous les espaces. À partir de Kibana 7.0, les privilèges de fonctionnalité sont également pris en charge en plus des privilèges de base. Ces derniers permettent d'accéder à des fonctionnalités Kibana spécifiques et nécessitent la spécification d'un espace Kibana.
Lors de la création d'un rôle, vous devez lui attribuer des privilèges. Les exemples suivants illustrent des configurations de rôles courantes :
-
Accordez à un utilisateur standard des privilèges en lecture seule sur un index spécifique. Cet utilisateur pourra uniquement accéder à l'index indiqué.
Pour plus d'informations, consultez Configurer des privilèges d'index en lecture seule.
-
Accordez à un utilisateur standard les privilèges nécessaires pour consulter tout ou partie des tableaux de bord.
Pour en savoir plus, voir Configurer les privilèges de tableau de bord.
-
Accordez à un utilisateur standard des privilèges de lecture et d'écriture sur certains index, ainsi que des privilèges de lecture seule sur tous les clusters. Par exemple, l'utilisateur peut consulter l'état du cluster, les snapshots et les paramètres, et écrire des données ou mettre à jour les mappings d'un index.
Consultez la section Configurer les privilèges de lecture/écriture d'index et de lecture seule de cluster pour plus de détails.
-
Accordez à un utilisateur standard des privilèges de lecture seule pour Kibana Discover et pour un index. L'utilisateur pourra ainsi accéder à la page Discover de la console Kibana pour visualiser les données de cet index.
Plus d'informations disponibles dans Configurer les privilèges de lecture seule Discover pour les données d'index.
-
Accordez à un utilisateur standard les privilèges de création, lecture, mise à jour et suppression de documents, de création et suppression d'index, ainsi que de modification des configurations d'index, sans lui donner accès à la console Kibana.
Reportez-vous à Configurer les autorisations de gestion des index et des documents sans accès Kibana.
-
Cliquez sur Create role.
-
-
Créez un utilisateur et assignez-lui des rôles pour lui octroyer des autorisations.
-
Accédez à la page de gestion.
V6.7 : Dans le volet de navigation de gauche, cliquez sur ManagementManagement.
V7.x : Dans le coin supérieur gauche de la page, cliquez sur l'icône

, puis sélectionnez ManagementManagement > Stack Management.
Dans la section SecuritySecurity, cliquez sur Users.
-
Cliquez sur Create new user et configurez les paramètres.
Paramètre
Description
Username
Nom d'utilisateur pour la connexion à la console Kibana.
Password
Mot de passe permettant à l'utilisateur de se connecter à la console Kibana.
Confirm Password
Doit correspondre au champ Password.
Nom complet
Nom complet de l'utilisateur.
Adresse e-mail
Adresse e-mail de l'utilisateur.
Roles
Rôles à attribuer à l'utilisateur. Vous pouvez sélectionner un ou plusieurs rôles personnalisés ou intégrés.
ImportantMême si vous avez spécifié un utilisateur dans la section
Run As privilegeslors de la création du rôle, vous devez toujours lui assigner ce rôle ici. Sans cela, l'utilisateur ne pourra pas se connecter. Cliquez sur Create user.
-
Connectez-vous à la console Kibana avec le nouvel utilisateur et effectuez une opération pour vérifier les autorisations.
Configurer des privilèges d'index en lecture seule
Cas d'utilisation
Accordez à un utilisateur standard des privilèges de lecture seule pour un index spécifique. L'utilisateur pourra interroger les données de l'index dans la console Kibana, mais n'aura pas accès aux API au niveau du cluster.
Configuration du rôle
Tableau 1. Description des privilèges
|
Type de privilège |
Clé de privilège |
Valeur de privilège |
Description |
|
Privilèges d'index |
indices |
kibana_sample_data_logs |
Nom de l'index. Vous pouvez spécifier le nom complet, un alias, un caractère générique ou une expression régulière. Pour plus d'informations, consultez Privilèges d'index. |
|
privileges |
|
Accorde des privilèges de lecture seule sur l'index. Ces privilèges incluent |
|
|
Champs accordés (facultatif) |
|
Champs de l'index. * indique tous les champs. |
|
|
Privilèges Kibana |
privileges |
|
Accorde à Kibana un accès en lecture seule à tous les espaces. La valeur par défaut est none, ce qui refuse l'accès à tous les espaces Kibana. Important
Les versions de Kibana antérieures à 7,0 prennent uniquement en charge les privilèges de base, qui accordent par défaut l'accès à tous les espaces. À partir de Kibana 7.0, les privilèges de fonctionnalité sont également pris en charge en plus des privilèges de base. Ces derniers permettent d'accéder à des fonctionnalités Kibana spécifiques et nécessitent la spécification d'un espace Kibana. |
Vérification
-
Connectez-vous à la console Kibana avec le nouvel utilisateur et exécutez une commande de lecture. La commande doit renvoyer un résultat normal.
GET /kibana_sample_data_logs/_search -
Exécutez une commande d'écriture. Vous recevrez une erreur d'autorisation.
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 }
Configurer les privilèges de tableau de bord
Cas d'utilisation
Accordez à un utilisateur standard des privilèges de lecture seule pour un index spécifique et autorisez-le à consulter les données du tableau de bord associées à cet index.
Configuration du rôle
Lorsque vous créez un utilisateur, assignez les rôles read-index et kibana_dashboard_only_user à l'utilisateur.
read-index : Exemple de rôle personnalisé que vous devez créer. Ce rôle dispose de privilèges de lecture seule pour un index spécifié.
-
kibana_dashboard_only_user : Rôle Kibana intégré disposant du privilège de consultation des données de tableau de bord pour des index spécifiés.
RemarqueÀ partir de Kibana 7.0, le rôle kibana_dashboard_only_user est obsolète. Pour consulter le tableau de bord d'un index spécifique, il suffit de configurer des privilèges de lecture seule pour cet index. Pour plus de détails, voir Configuration des privilèges de lecture seule pour un index.
Le rôle kibana_dashboard_only_user peut être utilisé conjointement avec des rôles personnalisés dans de nombreux scénarios. Si vous souhaitez attribuer uniquement la fonctionnalité Dashboards only roles à un rôle personnalisé, dans la zone KibanaKibana de la page ManagementManagement, localisez la section DashboardDashboard et associez-y un rôle personnalisé (par défaut, le rôle kibana_dashboard_only_user ).
Vérification
Connectez-vous à la console Kibana avec le nouvel utilisateur. Vous pouvez consulter le tableau de bord correspondant à l'index.
Le tableau de bord nommé heartbeat-dashboard contient un graphique linéaire heartbeat-visu, avec Count sur l'axe Y et @timestamp per 30 seconds sur l'axe X, illustrant la tendance du nombre de battements de cœur au fil du temps.
Configurer la lecture/écriture d'index et l'accès en lecture seule au cluster
Cas d'utilisation
Accordez à un utilisateur les privilèges de lecture, d'écriture et de suppression pour des index spécifiques, ainsi que des privilèges en lecture seule pour le cluster et Kibana.
Configuration du rôle
Tableau 2. Description des privilèges
|
Type de privilège |
Clé de privilège |
Valeur de privilège |
Description |
|
Privilèges de cluster |
Cluster |
|
Accorde des privilèges en lecture seule sur le cluster, tels que la consultation de l'état de santé du cluster, du statut, des threads actifs, des informations sur les nœuds et des tâches bloquées. |
|
Privilèges d'index |
indices |
|
Nom de l'index. Vous pouvez spécifier le nom complet, un alias, un caractère générique ou une expression régulière. Pour plus d'informations, consultez roles-indices-priv. |
|
privileges |
|
Accorde des privilèges en lecture seule sur l'index. Ces privilèges incluent |
|
|
|
Privilège permettant de créer un index. Si vous définissez un alias d'index lors de la création d'un index, vous devez également accorder le privilège Important
L'alias d'index doit également satisfaire aux règles de correspondance définies sous indices. |
||
|
|
Accorde un accès en lecture seule aux métadonnées de l'index, telles que les mappings et les paramètres. |
||
|
|
Privilège permettant d'effectuer toutes les opérations d'écriture sur les documents, y compris |
||
|
|
Privilège permettant de surveiller toutes les opérations, y compris |
||
|
|
Privilège permettant de supprimer des documents d'index. |
||
|
|
Privilège permettant de supprimer un index. |
||
|
granted fields |
|
Champs d'index à autoriser. * représente tous les champs de l'index. |
|
|
Privilèges Kibana |
privileges |
|
Accorde à Kibana un accès en lecture seule à tous les espaces. La valeur par défaut est none, ce qui refuse l'accès à tous les espaces Kibana. Important
Les versions de Kibana antérieures à 7,0 prennent uniquement en charge les Base privileges, qui accordent par défaut l'accès à tous les espaces. Kibana 7.0 et les versions ultérieures prennent en charge les Feature privileges en plus des Base privileges. Les Feature privileges accordent l'accès à des fonctionnalités Kibana spécifiques et nécessitent que vous spécifiiez un espace Kibana. |
Vérification
Connectez-vous à la console Kibana en tant qu'utilisateur standard. Toutes les commandes suivantes aboutissent.
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
-
Consultez les informations détaillées sur les index du cluster.
GET /_cat/indices?v -
Consultez l'état du cluster.
GET /_cluster/stats -
Interrogez les données dans l'index
library_v1.GET /library_v1/_search -
Interrogez les données dans l'index
library_v2.GET /library_v2/_search -
Écrivez des données dans l'index
heartbeat-2023.01.01à l'aide de la méthode POST.POST /heartbeat-2023.01.01/_doc/2 { "productName": "testpro", "annual_rate": "3.22%", "describe": "testpro" } -
Écrivez des données dans l'index
library_v3à l'aide de la méthode PUT.PUT /library_v3/_doc/1 { "productName": "testpro", "annual_rate": "3.22%", "describe": "testpro" } -
Supprimez l'index
library_v1.DELETE library_v1
Configurer les privilèges en lecture seule pour Discover
Cas d'utilisation
Accordez à un utilisateur standard des privilèges en lecture seule pour Kibana Discover et un index. Cet utilisateur peut accéder à la page Discover dans la console Kibana pour afficher les données de cet index.
Configuration du rôle
Tableau 3. Description des privilèges
|
Type de privilège |
Clé de privilège |
Valeur de privilège |
Description |
|
Privilèges de cluster |
Privileges |
|
Accorde des privilèges en lecture seule sur tous les clusters, tels que la consultation de l'état de santé et du statut du cluster, des threads actifs, des informations sur les nœuds, des statistiques sur les nœuds et le cluster, ainsi que des tâches de cluster en attente. |
|
Privilèges d'index |
Indices |
kibana_sample_data_ecommerce |
Nom de l'index. Vous pouvez spécifier le nom complet, un alias, un caractère générique ou une expression régulière. Pour plus d'informations, consultez Indices Privileges. |
|
Privileges |
|
Accorde des privilèges en lecture seule sur l'index. Ces privilèges incluent |
|
|
Granted fields (optional) |
|
Champ d'index. Le |
|
|
Privilèges Kibana |
Privileges |
|
Accorde des privilèges en lecture seule pour tous les espaces Kibana. La valeur par défaut est Important
Les versions de Kibana antérieures à 7,0 prennent uniquement en charge les Base privileges, qui accordent par défaut l'accès à tous les espaces. Kibana 7.0 et les versions ultérieures prennent en charge les Feature privileges en plus des Base privileges. Les Feature privileges accordent l'accès à des fonctionnalités Kibana spécifiques, telles que la page Discover, et nécessitent que vous spécifiiez un espace Kibana. |
Vérification
Connectez-vous à la console Kibana en tant que nouvel utilisateur. Vous pouvez afficher les données de l'index spécifié sur la page Discover.
L'index actuellement consulté est kibana_sample_data_ecommerce et la page affiche correctement les détails des documents de commande e-commerce contenus dans cet index.
Gérer les index et les documents sans accès à Kibana
Cas d'utilisation
Accordez à un utilisateur les privilèges nécessaires pour gérer les index et les documents via l'API, sans accès à la console Kibana.
Configuration du rôle
Tableau 4. Description des privilèges
|
Type de privilège |
Clé de privilège |
Valeur de privilège |
Description |
|
Privilèges d'index |
Indices |
|
Nom de l'index. Vous pouvez spécifier le nom complet, un alias, un caractère générique ou une expression régulière. Pour plus d'informations, consultez Indices Privileges. |
|
Privileges |
|
Privilège permettant de créer un index. Si la demande de création d'index contient un alias à ajouter à l'index, vous devez également accorder le privilège |
|
|
|
Privilège permettant de supprimer un index. |
||
|
|
Privilège permettant d'indexer et de mettre à jour des documents, ainsi que de mettre à jour les mappings d'index. |
||
|
|
Privilège permettant de supprimer des documents. |
||
|
|
Accorde des privilèges en lecture seule sur l'index. Ces privilèges incluent |
||
|
|
Accorde des privilèges pour les opérations de gestion d'index, telles que la gestion des alias, des paramètres, des mappings et des modèles. |
||
|
Granted fields (optional) |
|
Champs d'index. |
|
|
Privilèges Kibana |
Privileges |
|
Définissez la valeur sur Important
Les versions de Kibana antérieures à 7,0 prennent uniquement en charge les Base privileges, qui accordent par défaut l'accès à tous les espaces. Kibana 7.0 et les versions ultérieures prennent en charge les Feature privileges en plus des Base privileges. Les Feature privileges accordent l'accès à des fonctionnalités Kibana spécifiques et nécessitent que vous spécifiiez un espace Kibana. |
Vérification
-
Utilisez cURL pour créer puis supprimer un index.
[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 ~]# -
Modifiez la configuration de l'index. Cet exemple définit les données de l'index comme des données froides.
[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 ~]# -
Effectuez des opérations CRUD sur les documents.
[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 ~]# -
Connectez-vous à la console Kibana en tant qu'utilisateur.
Un message s'affiche indiquant que l'utilisateur ne dispose pas des privilèges requis.
FAQ
Puis-je utiliser l'AccessKey ID et l'AccessKey secret d'un utilisateur Resource Access Management (RAM) pour accéder directement aux données d'un cluster Elasticsearch ?
Non. L'AccessKey ID et l'AccessKey secret d'un utilisateur Resource Access Management (RAM) peuvent uniquement être utilisés pour appeler les API de gestion Alibaba Cloud, telles que les API de création ou de redémarrage d'instances et de modification des configurations. Ils ne permettent pas d'accéder directement aux données d'un cluster Elasticsearch ni de les manipuler. Pour lire ou écrire des données de cluster ou effectuer des opérations sur les index, utilisez le nom d'utilisateur et le mot de passe créés dans le système d'authentification de sécurité Elasticsearch X-Pack.
Pourquoi l'utilisateur superutilisateur elastic reçoit-il une erreur 403 « insufficient privileges » lors de la suppression de l'index .kibana_security_session_1 ?
L'index .kibana_security_session_1 est un index système protégé qu'utilise Kibana pour stocker les informations de session utilisateur. Même l'utilisateur elastic doté du rôle superuser ne peut pas supprimer directement cet index via une API. Il s'agit d'une restriction de sécurité d'Elasticsearch et de Kibana, et non d'une erreur de configuration des autorisations. Si un problème lié à cet index entraîne des difficultés de connexion ou de session, effacez le cache du navigateur et reconnectez-vous à la console Kibana.