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. Vous pouvez également créer des rôles personnalisés pour un contrôle plus granulaire des clusters, des index et des 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 différer pour les autres versions. Reportez-vous à 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 Se connecter à la console Kibana.
-
Accédez à la page de gestion.
V6.7 : dans le volet de navigation de gauche, cliquez sur Management.
V7.x : dans le coin supérieur gauche de la page, cliquez sur l'icône
, puis sélectionnez Management > Stack Management.
Dans la section Security, cliquez sur Roles.
-
Cliquez sur Create role et configurez les paramètres.
Paramètre
Description
Role Name
Nom du rôle.
Cluster privileges
Définit les privilèges pour les opérations au niveau du cluster, telles que l'affichage de l'état de santé et des paramètres du cluster, ou la création d'un snapshot. Pour plus d'informations, consultez la documentation Cluster privileges.
Run As privileges
Facultatif. Utilisateur qui assume ce rôle. Si cette information n'est pas spécifiée ici, vous pouvez attribuer le rôle lors de la création de l'utilisateur. Pour plus de détails, consultez l'étape Créer un utilisateur.
Index privileges
Définit les privilèges pour les opérations sur les index. Par exemple, vous pouvez accorder un accès en
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 plus d'informations, consultez la documentation Indices privileges. Configurez les paramètres suivants :-
Indices : sélectionnez un modèle d'index, par 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 auxquels accorder des privilèges.
Kibana privileges
Définit les privilèges pour les opérations Kibana.
ImportantLes versions de Kibana antérieures à la 7,0 prennent uniquement en charge les Base privileges, qui accordent par défaut l'accès à tous les espaces. À partir de Kibana 7.0, les Feature privileges sont également pris en charge, en plus des privilèges de base. Les privilèges de fonctionnalité accordent l'accès à 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 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 ne pourra accéder qu'à l'index indiqué.
Pour plus de détails, consultez la section Configurer les privilèges d'index en lecture seule.
-
Accordez à un utilisateur standard les privilèges nécessaires pour afficher tout ou partie des tableaux de bord.
Pour en savoir plus, reportez-vous à la section Configurer les privilèges de tableau de bord.
-
Accordez à un utilisateur standard des privilèges en lecture et écriture sur certains index, ainsi que des privilèges en lecture seule sur l'ensemble du cluster. L'utilisateur pourra par exemple consulter l'état de santé du cluster, les snapshots et les paramètres, écrire des données dans un index et mettre à jour ses mappings.
Consultez la section Configurer les privilèges de lecture/écriture sur les index et de lecture seule sur le cluster pour plus d'informations.
-
Accordez à un utilisateur standard des privilèges en lecture seule pour Kibana Discover et pour un index. L'utilisateur pourra accéder à la page Discover de la console Kibana afin de visualiser les données de cet index.
Pour plus d'informations, consultez la section Configurer les privilèges en lecture seule pour Discover sur les données d'index.
-
Accordez à un utilisateur standard les privilèges de création, lecture, mise à jour et suppression de documents, ainsi que de création et suppression d'index et de modification des configurations d'index, sans lui donner accès à la console Kibana.
Reportez-vous à la section Configurer les autorisations de gestion des index et des documents sans accès à Kibana pour plus de détails.
-
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 Management.
V7.x : dans le coin supérieur gauche de la page, cliquez sur l'icône
, puis sélectionnez Management > Stack Management.
Dans la section Security, 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.
Full name
Nom complet de l'utilisateur.
Email address
Adresse e-mail de l'utilisateur.
Roles
Attribuez des rôles à 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 attribuer ce rôle à l'utilisateur à cette étape. Sinon, l'utilisateur ne pourra pas se connecter. Cliquez sur Create user.
-
Connectez-vous à la console Kibana en tant que nouvel utilisateur et effectuez une opération pour vérifier les autorisations.
Configurer les privilèges d'index en lecture seule
Cas d'utilisation
Accordez à un utilisateur standard des privilèges en lecture seule pour un index spécifique. L'utilisateur peut interroger les données de l'index dans la console Kibana, mais n'a 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 la documentation Indices Privileges. |
|
privileges |
|
Accorde des privilèges en 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 à la 7,0 prennent uniquement en charge les Base privileges, qui accordent par défaut l'accès à tous les espaces. À partir de Kibana 7.0, les Feature privileges sont également pris en charge, en plus des privilèges de base. Les privilèges de fonctionnalité accordent l'accès à des fonctionnalités Kibana spécifiques et nécessitent la spécification d'un espace Kibana. |
Vérification
-
Connectez-vous à la console Kibana en tant que 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 en lecture seule pour un index spécifique et autorisez-le à afficher les données du tableau de bord associées à cet index.
Configuration du rôle
Lorsque vous créez un utilisateur, attribuez-lui les rôles read-index et kibana_dashboard_only_user.
read-index : exemple de rôle personnalisé que vous devez créer. Ce rôle dispose de privilèges en lecture seule pour un index spécifié.
-
kibana_dashboard_only_user : rôle Kibana intégré disposant du privilège d'affichage 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 afficher le tableau de bord d'un index spécifique, il suffit de configurer des privilèges en lecture seule pour cet index. Pour plus d'informations, consultez la section Configuration des privilèges en 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é Kibana à un rôle personnalisé, accédez à la zone Management de la page Dashboard, repérez la section Dashboard et associez-y un rôle personnalisé (le rôle par défaut est kibana_dashboard_only_user).
Vérification
Connectez-vous à la console Kibana en tant que nouvel utilisateur. Vous pouvez afficher 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, affichant la tendance du nombre de battements au fil du temps.
Configurer les privilèges de lecture/écriture sur les index et de lecture seule sur le cluster
Cas d'utilisation
Accordez à un utilisateur des 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 l'affichage de l'état de santé, 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 la documentation roles-indices-priv. |
|
privileges |
|
Accorde des privilèges en lecture seule sur l'index. Ces privilèges incluent |
|
|
|
Privilège de création d'index. Si vous définissez un alias d'index lors de la création, 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 d'exécution de toutes les opérations d'écriture sur les documents, y compris |
||
|
|
Privilège de surveillance de toutes les opérations, y compris |
||
|
|
Privilège de suppression des documents d'index. |
||
|
|
Privilège de suppression d'un index. |
||
|
champs accordés |
|
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 à la 7,0 prennent uniquement en charge les Base privileges, qui accordent par défaut l'accès à tous les espaces. À partir de Kibana 7.0, les Feature privileges sont également pris en charge, en plus des privilèges de base. Les privilèges de fonctionnalité accordent l'accès à des fonctionnalités Kibana spécifiques et nécessitent la spécification d'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
-
Affichez 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 de l'index
library_v1.GET /library_v1/_search -
Interrogez les données de 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 pour un index. L'utilisateur pourra accéder à la page Discover de la console Kibana afin de visualiser 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 |
Privilèges |
|
Accorde des privilèges en lecture seule sur tous les clusters, tels que l'affichage de l'état de santé et du statut, des threads actifs, des informations sur les nœuds, des statistiques de nœuds et de cluster, ainsi que des tâches en attente du cluster. |
|
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 la documentation Indices Privileges. |
|
Privilèges |
|
Accorde des privilèges en lecture seule sur l'index. Ces privilèges incluent |
|
|
Champs accordés (facultatif) |
|
Champ d'index. Le symbole |
|
|
Privilèges Kibana |
Privilèges |
|
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 à la 7,0 prennent uniquement en charge les Base privileges, qui accordent par défaut l'accès à tous les espaces. À partir de Kibana 7.0, les Feature privileges sont également pris en charge, en plus des privilèges de base. Les privilèges de fonctionnalité accordent l'accès à des fonctionnalités Kibana spécifiques, telles que la page Discover, et nécessitent la spécification d'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 lui donner 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 la documentation Indices Privileges. |
|
Privilèges |
|
Privilège de création d'index. Si la requête de création d'index contient un alias à ajouter à l'index, vous devez également accorder le privilège |
|
|
|
Privilège de suppression d'un index. |
||
|
|
Privilège d'indexation et de mise à jour des documents, ainsi que de mise à jour des mappings d'index. |
||
|
|
Privilège de suppression de 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. |
||
|
Champs accordés (facultatif) |
|
Champs d'index. |
|
|
Privilèges Kibana |
Privilèges |
|
Définissez sur Important
Les versions de Kibana antérieures à la 7,0 prennent uniquement en charge les Base privileges, qui accordent par défaut l'accès à tous les espaces. À partir de Kibana 7.0, les Feature privileges sont également pris en charge, en plus des privilèges de base. Les privilèges de fonctionnalité accordent l'accès à des fonctionnalités Kibana spécifiques et nécessitent la spécification d'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.