Sommaire |
---|
Principe
Pour limiter l'accès aux données contenues dans Agimus-NG, nous allons utiliser le serveur hébergeant kibana pour restreindre l'accès à elasticsearch.
...
Le frontal ne fait qu'afficher une interface réduite de kibana sous forme d'iframe. Elle permet de gérer les droits d'accès aux différents graphiques suivant des profils et d'empêcher un utilisateur de facilement modifier les graphiques créés. Pour retrouver le code de ce frontal, rendez-vous à l'adresse suivante :
https://github.com/EsupPortail/agimus-ng/tree/master/experimentation/front-agimus-ngfrontal
Avertissement |
---|
Si quelqu'un a accès via le frontal, il a également accès à kibana et peut, s'il connaît l'url, modifier les graphiques créés. C'est pourquoi nous vous conseillons de sauvegarder régulièrement vos configurations kibana avec les scripts proposés sur le dépôt github. |
...
Configuration du frontal
Bloc de code | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
$user_roles = array('ROLE_ADMIN', 'ROLE_MANAGER', 'ROLE_USER'); $user_roles_mapping = array( "ROLE_ADMIN" => "nom_du_groupe_ldap_ADMIN", "ROLE_MANAGER" => "nom_du_groupe_ldap_MANAGER", "ROLE_USER" => "nom_du_groupe_ldap_USER" ); |
...
Bloc de code | ||||
---|---|---|---|---|
| ||||
RewriteEngine on RewriteRule "^/$" "/kibana4kibana/" [R] RewriteRule "^/kopf/?$" "/elasticsearch/_plugin/kopf/" [R] CustomLog logs/access.agimus.log combined ErrorLog logs/error.agimus.log RemoteIPHeader X-Forwarded-For # Configuration du module mod_cas include conf.modules.d/00-cas.conf <Proxy *> Order allow,deny Allow from all </Proxy> <Location "/kibana4kibana/"> <RequireAny> # Autorisation d'appel du serveur kibana sur lui même sans authentification (123.456.789.012) Require ip 123.456.789.012 127.0.0.1 # Autorisation des comptes CAS AuthType CAS CASScope / #### 2 types d'autorisation possibles ### On utilise uniquement le CAS et une autorisation par utilisateurs require user login1 login2 login3 ### On autorise en se basant sur un attribut LDAP qui peut également être utilisé dans la configuration du frontal # AuthLDAPURL "ldap://ldap.univ.fr:389/ou=people,dc=univ,dc=fr?uid??" # AuthLDAPBindDN "cn=app-agimus,ou=system,dc=univ,dc=fr" # AuthLDAPBindPassword "XXXXXXXXX" ## Groupe englobant l'ensemble des groupes utilisés dans le frontal # require ldap-filter group=Agimus-user </RequireAny> ProxyPass http://localhost:5601/ ProxyPassReverse http://localhost:5601/ </Location> ############## # Cas où elasticsearch est sur le même serveur que kibana ############## #<Location "/elasticsearch"> # <RequireAny> # # Autorisation d'appel du serveur kibana sur lui même sans authentification (123.456.789.012) # Require ip 123.456.789.012 127.0.0.1 # # Autorisation des comptes CAS (ici on limite aux utilisateurs suivant le cluster, les informaticiens) # AuthType CAS # CASScope / # require user login1 # </RequireAny> # ProxyPass http://localhost:9200/ # ProxyPassReverse http://localhost:9200/ #</Location> # ############### ############## # Cas où elasticsearch est un cluster ############## <Proxy balancer://EScluster> BalancerMember http://es1.univ.fr:9200 route=es1 BalancerMember http://es2.univ.fr:9200 route=es2 </Proxy> Header add Set-Cookie "AgimusRoute=route.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED <Location "/elasticsearch"> <RequireAny> # Autorisation d'appel du serveur kibana sur lui même sans authentification (123.456.789.012) Require ip 123.456.789.012 127.0.0.1 Require local # Autorisation des comptes CAS (ici on limite aux utilisateurs suivant le cluster, les informaticiens) AuthType CAS CASScope / require user login1 </RequireAny> ProxyPass balancer://EScluster stickysession=AgimusRoute ProxyPassReverse balancer://EScluster </Location> ProxyPreserveHost on #Empêche le proxy apache (nous on ne fait que du reverse proxy) ProxyRequests Off |
...