# Gestion des accès/RBAC Grafana<!-- .element: style="font-size:2em" --> #### Démo Equipe Monitoring du 13/09/2022 --- # Principe du POC - On connecte 3 Grafana à Keycloak.<!-- .element: style="font-size:70%" --> - On crée des utilisateurs avec des rôles Keycloak différents.<!-- .element: style="font-size:70%" --> - On vérifie dans Grafana quel utilisateur a quel rôle.<!-- .element: style="font-size:70%" --> - On vérifie les fonctionnalités disponibles dans Grafana selon les rôles.<!-- .element: style="font-size:70%" --> --- # Comptes utilisateurs | | grafana-PF1136-1 | grafana-PF1136-2 | grafana-PF1136-3 | | ------------- | ---------------- | ------------------------- | ------------------------- | | **pf1136-user-1** | grafana-admin | grafana-viewer | pas de rôle (pas d'accès) | | **pf1136-user-2** | grafana-viewer | pas de rôle (pas d'accès) | grafana-viewer | | **pf1136-user-3** | grafana-editor | pas de rôle (pas d'accès) | grafana-bad-role (pas d'accès) | --- # Configuration Keycloak Différentes étapes à réaliser dans Keycloak : - création de clients ;<!-- .element: style="font-size:70%" --> - création de rôles dans chaque client ;<!-- .element: style="font-size:70%" --> - créations de mappers dans chaque client ;<!-- .element: style="font-size:70%" --> - création d'utilisateurs de test ;<!-- .element: style="font-size:70%" --> - modification *role mapping* pour chaque utilisateur.<!-- .element: style="font-size:70%" --> --- # Tests d'accès à Grafana Deux types de tests réalisés : - accès refusé par Keycloak - en utilisant la fonctionnalité *authorisation* - en utilisant l'extension de Keycloak `keycloak-restrict-client-auth` - accès refusé par Grafana - en ne donnant aucun rôle Grafana à l'utilisateur connecté --- # Tests d'accès à Grafana : refus par Keycloak Fonctionnalité *authorisation* : - Keycloak vérifie les permissions sur une ressource (policies : user, group, role...) et détermine si l'accès est autorisé ou non&nbsp;; - Keycloak indique à Grafana si l'accès est autorisé ou non dans les informations qu'il lui envoie&nbsp;; - Grafana (version communautaire) ignore cette information. Extension Keycloak [sventorben/keycloak-restrict-client-auth](https://github.com/sventorben/keycloak-restrict-client-auth) : - permet de restreindre l'autorisation des utilisateurs sur les clients&nbsp;; - nécessite d'ajouter un fichier à Keycloak puis de lancer un script pour le reconfigurer. --- # Tests d'accès à Grafana : refus par Grafana On met `role_attribute_strict=true` dans la configuration de Grafana. Si l'utilisateur n'a pas de rôle défini dans Keycloak, il n'a pas de rôle dans Grafana. ![](https://oss.eu-west-0.prod-cloud-ocb.orange-business.com/hedgedoc-corp/uploads/26f745dc-bd96-49d6-aea9-afdf9d0a72b6.png) Donc l'utilisateur se connecte à Grafana mais n'a aucun droit. --- <!-- .slide: class="prez-slide-tests-roles-grafana" --> # Tests sur les rôles dans Grafana <span>Le paramètre `role_attribute_path` de Grafana permet de faire une correspondance entre les rôles dans Keycloak et les rôles dans Grafana.</span><!-- .element: style="font-size:0.6em" --> ``` role_attribute_path = contains(roles[*], 'grafana-admin') && 'Admin' || contains(roles[*], 'grafana-editor') && 'Editor' || contains(roles[*], 'grafana-viewer') && 'Viewer' || 'Reject' ``` | compte | rôle Keycloak | rôle Grafana | Grafana de démo | | -------- | -------- | -------- | ----- | | **pf1136-user-1** | grafana-admin | Admin | [Grafana 1](https://grafana.pf-beta.cloudservicesfactory.com/obs-pf1136-1/login) | | **pf1136-user-3** | grafana-editor | Editor | [Grafana 1](https://grafana.pf-beta.cloudservicesfactory.com/obs-pf1136-1/login) | | **pf1136-user-2** | grafana-viewer | Viewer | [Grafana 1](https://grafana.pf-beta.cloudservicesfactory.com/obs-pf1136-1/login) [Grafana 3](https://grafana.pf-beta.cloudservicesfactory.com/obs-pf1136-3/login) | | **pf1136-user-3** | grafana-bad-role | Viewer avec `role_attribute_strict=false`<br />Rejeté avec `role_attribute_strict=true` | [Grafana 3](https://grafana.pf-beta.cloudservicesfactory.com/obs-pf1136-3/login) | | **pf1136-user-2** | aucun | Viewer avec `role_attribute_strict=false`<br />Rejeté avec `role_attribute_strict=true` | [Grafana 2](https://grafana.pf-beta.cloudservicesfactory.com/obs-pf1136-2/login) | | **nominatif** | aucun | Viewer avec `role_attribute_strict=false`<br />Rejeté avec `role_attribute_strict=true` | [Grafana 1](https://grafana.pf-beta.cloudservicesfactory.com/obs-pf1136-1/login) | --- # Fonctionnalités de Grafana selon les rôles Voir le tableau récapitulatif [Grafana selon les rôles.](https://confluence.corp.cloudwatt.com/pages/viewpage.action?pageId=33878248#Gestiondesacc%C3%A8s/RBACGrafana-Testssurlesfonctionnalit%C3%A9sdeGrafanaselonlesr%C3%B4les) --- # Conclusion - Refus d'accès à un Grafana : fonctionnel mais utilisation non instinctive, la solution est plus un moyen de contournement. - Attribution d'un rôle dans Grafana : fonctionnelle. - Test seulement sur la fin de la chaîne d'authentification&nbsp;: ![](https://oss.eu-west-0.prod-cloud-ocb.orange-business.com/hedgedoc-corp/uploads/4ff0778d-0d3f-49d7-b125-24ea9fe28368.png) <style type="text/css"> p { font-size: 0.7em; } .reveal ul li { font-size: 0.7em; } .reveal ul ul li { font-size: 0.5em; } .reveal section { text-align: left; } } .reveal h3 { color: orange; text-align: center; border-bottom: 1px solid orange; font-size: 0.4em; } .reveal h1 { color: orange; text-align: center; border-bottom: 1px solid orange; margin-bottom: 0.4em; font-size: 1.5em; } .reveal table tr th { font-size: 0.7em; } .reveal table tr td { font-size: 0.5em; } .reveal code { color: aquamarine; font-size: smaller; } .prez-slide-tests-roles-grafana p { font-size: 0.9em; margin: 0; } .prez-slide-tests-roles-grafana table tr th { font-size: 0.5em; } .prez-slide-tests-roles-grafana table tr td { font-size: 0.4em; } .prez-slide-tests-roles-grafana code { color: aquamarine; font-size: 0.6em; } .prez-slide-tests-roles-grafana h1 { font-size: 1.2em; } </style>
{"type":"slide","slideOptions":{"transition":"slide","center":true}}