Rôles d'obtention d'Elasticsearch

Roles D Obtention D Elasticsearch



'Elasticsearch est un moteur de recherche et d'analyse incroyablement polyvalent et puissant. Il peut rapidement ingérer, organiser, trier, agréger et gérer de grandes quantités de données textuelles.

Malgré tout cela, l'une des fonctionnalités les plus remarquables d'Elasticsearch et de tout son écosystème est les fonctionnalités de sécurité à toute épreuve. Elasticsearch inclut des fonctionnalités telles que la signature des requêtes HTTP et permet uniquement aux utilisateurs authentifiés d'effectuer des opérations sur le cluster.







Une autre fonctionnalité de sécurité dans Elasticsearch est l'utilisation d'utilisateurs et de rôles. Elasticsearch vous permet d'attribuer des rôles spécifiques aux utilisateurs du cluster. Ceux-ci sont ensuite utilisés pour déterminer les actions que le nom d'utilisateur peut effectuer sur le cluster.



Elasticsearch attribuera un rôle par défaut à tous les utilisateurs créés dans le cluster. Le rôle par défaut permet aux utilisateurs d'accéder au point de terminaison d'authentification, qui est responsable de la modification des mots de passe, de la récupération des informations utilisateur, etc.



REMARQUE : Le rôle par défaut est également attribué aux utilisateurs anonymes.





Le cœur de ce tutoriel est de vous donner les bases des rôles Elasticsearch. À l'aide de ce didacticiel, vous découvrirez comment récupérer les rôles dans le domaine natif Elasticsearch et afficher les rôles attribués à un nom d'utilisateur spécifique.

Plongeons dedans.



API d'obtention de rôles Elasticsearch

Nous utilisons l'API Get Roles pour récupérer des informations sur les rôles dans le cluster Elasticsearch. La syntaxe de la requête est la suivante :

OBTENIR / _Sécurité / rôle


La requête ci-dessus doit renvoyer tous les rôles du système.

Pour récupérer des informations sur un rôle spécifique, vous pouvez utiliser la syntaxe comme indiqué :

OBTENIR / _Sécurité / rôle /< Nom >


REMARQUE : Cette API nécessite que l'utilisateur dispose du privilège manage_security sur le cluster.

Si la demande aboutit, la requête doit renvoyer un tableau de rôles.

Exemple 1 – Récupérer tous les rôles dans le cluster

L'exemple de requête ci-dessous récupérera tous les rôles dans le cluster Elasticsearch :

boucle -XGET 'http://localhost:9200/_security/role?pretty=true' -H 'kbn-xsrf : création de rapports'


Un exemple de sortie est illustré ci-dessous :

{
'apm_user' : {
'groupe' : [ ] ,
'indices' : [
{
'des noms' : [
'apm-*'
] ,
'privilèges' : [
'lis' ,
'afficher_index_métadonnées'
] ,
'allow_restricted_indices' : faux
} ,
{
'des noms' : [
'fenêtre-env.*'
] ,
'privilèges' : [
'lis' ,
'afficher_index_métadonnées'
] ,
'allow_restricted_indices' : faux
} ,
{
'des noms' : [
'fenêtre-environ-*'
] ,
'privilèges' : [
'lis' ,
'afficher_index_métadonnées'
] ,
'allow_restricted_indices' : faux
} ,
{
'des noms' : [
'metrics-apm.*'
] ,
'privilèges' : [
'lis' ,
'afficher_index_métadonnées'
] ,
'allow_restricted_indices' : faux
} ,
{
'des noms' : [
'metrics-apm-*'
] ,
'privilèges' : [
'lis' ,
'afficher_index_métadonnées'
] ,
'allow_restricted_indices' : faux
} ,
{
'des noms' : [
'traces-apm.*'
] ,
'privilèges' : [
'lis' ,
'afficher_index_métadonnées'
] ,
'allow_restricted_indices' : faux
} ,


REMARQUE : la sortie ci-dessus a été tronquée pour la portée de ce didacticiel.

Exemple 2 – Obtenir des informations sur un rôle spécifique

L'exemple ci-dessous renvoie des informations sur le rôle kibana_admin.

boucle -XGET 'http://localhost:9200/_security/role/kibana_admin' -H 'kbn-xsrf : création de rapports'


Les informations de rôle qui en résultent sont les suivantes :

{
'kibana_admin' : {
'groupe' : [ ] ,
'indices' : [ ] ,
'applications' : [
{
'application' : 'kibana-.kibana' ,
'privilèges' : [
'tout'
] ,
'Ressources' : [
'*'
]
}
] ,
'courir comme' : [ ] ,
'métadonnées' : {
'_réservé' : vrai
} ,
'transient_metadata' : {
'activé' : vrai
}
}
}

Récupérer les informations de rôle dans YAML

Par défaut, l'API get roles renverra le résultat au format JSON. Cependant, vous pouvez choisir un format différent à l'aide du paramètre format.

La syntaxe est comme indiqué :

OBTENIR / _Sécurité / rôle? format =json / yaml


Par exemple, pour récupérer les informations sur le rôle kibana_admin au format YAML, nous pouvons exécuter :

boucle -XGET 'http://localhost:9200/_security/role/kibana_admin?format=yaml' -H 'kbn-xsrf : création de rapports'


Sortie résultante :

---
kibana_admin :
groupe: [ ]
indices : [ ]
applications:
- application: 'kibana-.kibana'
privilèges :
- 'tout'
Ressources:
- '*'
courir comme: [ ]
métadonnées :
_réservé: vrai
transitoire_metadata :
activé: vrai

Afficher les rôles d'un utilisateur spécifique

Si vous souhaitez afficher des informations sur un nom d'utilisateur spécifique (y compris ses rôles), vous pouvez utiliser la requête comme indiqué :

OBTENIR / _Sécurité / utilisateur


Par exemple, supposons que nous ayons un nom d'utilisateur 'linuxhint', nous pouvons récupérer ces informations utilisateur comme indiqué :

boucle -XGET 'http://locahost:9200/_security/user/linuxhint?format=yaml' -H 'kbn-xsrf : création de rapports'


La requête ci-dessus doit renvoyer des informations sur l'utilisateur au format YAML, comme indiqué :

---
linuxhint :
Nom d'utilisateur: 'Linux'
les rôles:
- 'téléspectateur'
- 'observateur_utilisateur'
nom et prénom: 'linuxhint.com'
e-mail: ' [e-mail protégé] '
métadonnées : { }
activé: vrai


Nous pouvons voir que l'utilisateur a les rôles viewer et watcher_user.

Voir les rôles dans Kibana

Si vous ne souhaitez pas utiliser l'API cat roles, vous pouvez afficher les rôles Elasticsearch dans Kibana en accédant à Management -> Stack Management.


Ensuite, accédez à Sécurité -> Rôles


Vous pouvez ensuite afficher et gérer les rôles.

Conclusion

Dans cet article, vous avez appris à utiliser l'API Elasticsearch Roles pour afficher des informations sur des rôles spécifiques dans le cluster. Vous avez également découvert comment afficher les rôles d'un nom d'utilisateur donné à l'aide de l'API utilisateur.

Merci d'avoir lu!