AGIMUS-NG en ~15 minutes Concepts
ENT Authentification validée cas-trace.log ENT TRACE-625-4SIg9haAh → dupont37@univ.fr Authentification validée Le CAS va, en parallèle, écrire dans un fichier de log la valeur du cookie déposé dans le navigateur du client et l’identité de l’utilisateur cas-service.log L’ENT le renvoie vers l’authentification CAS DATE: 19/Mar/2015:15:26:53 +0100 IP: 212.198.XXX.X ID: dupont37@univ.fr TICKET: ST-1857-q4G4eWz SERVICE: http://ent.univ.fr/Login USER-AGENT: Mozilla/5.0 (Macint... Le CAS va aussi alimenter un ficher qui contient l’identité de l’utilisateur et le service qui a demandé l’authentification Le CAS va utiliser le référenciel afin de valider les informations utilisateur L’utilisateur accède à son ENT pour la première fois COOKIE → TRACE-625-4SIg9haAh Le CAS va déposer sur la navigateur du client un cookie supplémentaire au TGC. Ce cookie (« TRACEME ») est opaque et valable pour tout le domaine (.univ.fr) Le cookie « TRACEME » est transmis vers l’ENT Une fois l’authentification validée, retour dans l’ENT apache-esup.log COOKIE → TRACE-625-4SIg9haAh REFERENTIEL UTILISATEURS L’ENT ou le frontal (apache) va pouvoir écrire dans un fichier les actions de l’utilisateur. Le cookie (« TRACEME ») positionné par le CAS sera présent dans les lignes de logs DATE:19/Mar/2015:15:26:54 +0100 IP: 212.198.XXX.X URI: /Login?ticket=ST-1857-q4G4eWz REFERER: https://www.google.fr/?gws_rd=ssl#q=ent USER-AGENT: Mozilla/5.0 (Macint.. TRACE: TRACE-625-4SIg9haAh
ENT Le cookie « TRACEME » est retransmis vers l’ENT à chaque requête L’utilisateur accède à son ENT pour un autre service (« accès LMS ») L’ENT ou le frontal (apache) va pouvoir écrire dans un fichier toutes les actions de l’utilisateur COOKIE → TRACE-625-4SIg9haAh apache-esup.log COOKIE → TRACE-625-4SIg9haAh REFERENTIEL UTILISATEURS DATE:19/Mar/2015:15:39:10 +0100 IP: 212.198.XXX.X URI: /p/mon-lms/max REFERER: https://ent.univ.fr/Login USER-AGENT: Mozilla/5.0 (Macint.. TRACE: TRACE-625-4SIg9haAh
LMS Le CAS va ajouter une ligne d’accès au service LMS dans son log Le LMS renvoie vers l’authentification CAS L’authentification de l’utilisateur est déjà valide cas-service.log Le cookie TRACEME est transmis au LMS DATE: 19/Mar/2015:15:29:10 +0100 IP: 212.198.XXX.X ID: dupont37@univ.fr TICKET: ST-1859-r7P9sKw SERVICE: http://moodle.univ.fr/login.php USER-AGENT: Mozilla/5.0 (Macint... COOKIE → TRACE-625-4SIg9haAh Une fois l’authentification validé, retour dans le LMS L’utilisateur accède à son LMS pour la première fois apache-moodle.log COOKIE → TRACE-625-4SIg9haAh REFERENTIEL UTILISATEURS DATE:19/Mar/2015:15:29:11 +0100 IP: 212.198.XXX.X URI: /login.php?ticket= ST-1859-r7P9sKw REFERER: https://ent.univ.fr/ USER-AGENT: Mozilla/5.0 (Macint.. TRACE: TRACE-625-4SIg9haAh
AUTRES Le CAS va ajouter une ligne d’accès au service APPS dans son log L’APPS renvoie vers l’authentification CAS L’authentification de l’utilisateur est déjà valide cas-service.log Votre application Le cookie TRACEME est transmis à l’APPS DATE: 19/Mar/2015:15:39:09 +0100 IP: 212.198.XXX.X ID: dupont37@univ.fr TICKET: ST-1862-r9M3tQx SERVICE: http://apps.univ.fr/entree.php USER-AGENT: Mozilla/5.0 (Macint... COOKIE → TRACE-625-4SIg9haAh Une fois l’authentification validé, retour dans une APPS L’utilisateur accède dans une APPS pour la première fois apache-apps.log COOKIE → TRACE-625-4SIg9haAh REFERENTIEL UTILISATEURS DATE:19/Mar/2015:15:39:10 +0100 IP: 212.198.XXX.X URI: /entree.php?ticket= ST-1862-r9M3tQx REFERER: https://ent.univ.fr/ USER-AGENT: Mozilla/5.0 (Macint.. TRACE: TRACE-625-4SIg9haAh
REFERENTIEL UTILISATEURS Et maintenant cas-service.log apache-esup.log cas-trace.log apache-moodle.log apache-apps.log + = REFERENTIEL UTILISATEURS
Etape 1 : cas trace Traitement du fichier cas-trace.log par LogStash TRACE-625-4SIg9haAh → dupont37@univ.fr Traitement du fichier cas-trace.log par LogStash Découpe et injecte dans Elasticsearch LogStash Enregistrement dans Elasticsearch index : trace Elasticsearch { "_type": "trace", "cookie_id": "TRACE-625-4SIg9haAh ", "ldap_uid": "dupont37@univ.fr" }
REFERENTIEL UTILISATEURS Etape 2 : ldap REFERENTIEL UTILISATEURS uid=dupont37@univ.fr eduPersonPrimaryAffiliation=student supannEntiteAffectation=FEA--, FEC-- supannEtuInscription= [annee=2015][cur={SUPANN}M1][dip={VDI}XX-X][etape={VET}YY-Y] attributMaison=ET LogStash Extraction d’information depuis le ldap par LogStash Formate et injecte dans Elasticsearch Enregistrement dans Elasticsearch index : ldap Elasticsearch { "_type": "ldap", "uid": [ "dupont37@univ.fr" ], "eduPersonPrimaryAffiliation": [ "student" ], "supannEntiteAffectation": [ "FEA--", "FEC--" ], "supannEtuInscription": [ " [annee=2015][cur={… "attributMaison= ": [ "ET" ], }
Etape 3 : apache esup DATE:19/Mar/2015:15:39:45 +0100 IP: 212.198.XXX.X URI: /p/lms-moodle/max REFERER: https://ent.univ.fr/... USER-AGENT: Mozilla/5.0 (Macint.. TRACE: TRACE-625-4SIg9haAh DATE:19/Mar/2015:15:39:29 +0100 IP: 212.198.XXX.X URI: /p/esup-portlet-annuaire-desktop/max REFERER: https://ent.univ.fr/... USER-AGENT: Mozilla/5.0 (Macint.. TRACE: TRACE-625-4SIg9haAh DATE:19/Mar/2015:15:39:17 +0100 IP: 212.198.XXX.X URI: /p/iframe-planning-etu/max REFERER: https://ent.univ.fr/... USER-AGENT: Mozilla/5.0 (Macint.. TRACE: TRACE-625-4SIg9haAh apache-esup.log DATE:19/Mar/2015:15:39:10 +0100 IP: 212.198.XXX.X URI: /p/zimbra-etud/max REFERER: https://ent.univ.fr/Login USER-AGENT: Mozilla/5.0 (Macint.. TRACE: TRACE-625-4SIg9haAh 1 - Découpage des enregistrements 2 - Enrichissement « useragent » Mozilla/5.0 (Linux; U; Android 4.4.4; … → os: Android 4.4.4 os_name: Android device: c6603 browser: chrome mobile LogStash 3 - Enrichissement « geoip » 212.198.XXX.X → Latitude: 6.178300000000007 Longitude: 48.66210000000001 4 - Transformation « trace » TRACE-625-4SIg9haAh → uid: dupont37@univ.fr 5 - Enrichissement « ldap » dupont37@univ.fr → eduPersonPrimaryAffiliation: student supannEntiteAffectation: FEA--, FEC— attributMaison : ET supannEtuInscription: [annee=2015][cur={… attributMaisonRead: [ET] Etudiants inscrits primaryAffiliationRead: étudiant anneeInscription: 2015 supannEntiteAffectationRead: [FEA] 1ère année de médecine [FEC] PACES { "_type": "esup4", "clientip": "212.198.XXX.X", "request": "/p/lms-moodle/max", "referer": "https://ent.univ.fr/p/intranet/max", "os": "Android 4.4.4", "os_name": "Android", "device": "c6603", "browser": "chrome mobile" "geoip": { "location": [ 6.178, 48.662 ] }, "uid": "b4b4fab3b7ca5b4daa9e8ad66fea26f2", "attributMaison": [ "ET" ], "attributMaisonRead": [ "[ET] Etudiants inscrits" ], "eduPersonPrimaryAffiliation": [ "student" ], "primaryAffiliationRead": [ "étudiant" ], "supannEntiteAffectation": [ "FEA--", "FEC--" ], "supannEntiteAffectationRead": [ "[FEA] 1ère année de médecine", "[FEC] PACES" ], "anneeInscription": "2015" } index : trace { "type": "trace", "cookie_id": "TRACE-625-4SIg9haAh ", "ldap_uid": "dupont37@univ.fr" } 6 - Transformation « anonymize » dupont37@univ.fr → b4b4fab3b7ca5b4daa9e8ad66fea26f2 Traitement du fichier apache-esup.log par LogStash index : ldap { "_type": « ldap« , "uid": [ "dupont37@univ.fr" ], "eduPersonPrimaryAffiliation": [ "student" ], "supannEntiteAffectation": [ "FEA--", "FEC--" ], "supannEtuInscription": [ " [annee=2015][cur={… "attributMaison= ": [ "ET" ], } Elasticsearch index : logstash-YYYY.MM.DD type : esup4
Etape X : autres Possibilité d’ajouter son fichier de log et son type dans Elasticsearch XXXXX.log { "_type": "casservice", "clientip": "212.198.XXX.X", "service": { "request": "https://mail.etu.univ.fr/p_etu.jsp", "proto": "https", "host": "mail.etu.univ.fr", "uripath": "/p_etu.jsp" }, "os": "Android 4.4.4", "os_name": "Android", "device": "c6603", "browser": "chrome mobile" "geoip": { "location": [ 6.178, 48.662 ] }, "uid": "b4b4fab3b7ca5b4daa9e8ad66fea26f2", "attributMaison": [ "ET" ], "attributMaisonRead": [ "[ET] Etudiants inscrits" ], "eduPersonPrimaryAffiliation": [ "student" ], "primaryAffiliationRead": [ "étudiant" ], "supannEntiteAffectation": [ "FEA--", "FEC--" ], "supannEntiteAffectationRead": [ "[FEA] 1ère année de médecine", "[FEC] PACES" ], "anneeInscription": "2015" } LogStash { "_type": "moodle", "clientip": "212.198.XXX.X", "request": "lms.univ.fr/course/search.php?search=fouille", "referrer": "lms.univ.fr/course/index.php", "os": "Android 4.4.4", "os_name": "Android", "device": "c6603", "browser": "chrome mobile" "geoip": { "location": [ 6.178, 48.662 ] }, "uid": "b4b4fab3b7ca5b4daa9e8ad66fea26f2", "attributMaison": [ "ET" ], "attributMaisonRead": [ "[ET] Etudiants inscrits" ], "eduPersonPrimaryAffiliation": [ "student" ], "primaryAffiliationRead": [ "étudiant" ], "supannEntiteAffectation": [ "FEA--", "FEC--" ], "supannEntiteAffectationRead": [ "[FEA] 1ère année de médecine", "[FEC] PACES" ], "anneeInscription": "2015" } Type : Moodle Elasticsearch Type : casservice Index : logstash-YYYY.MM.DD type : esup4 type : moodle type : casservice
Requêtes Elasticsearch Résultat { "hits": { "total": 59081020 }, "aggregations": { "2": { "buckets": [ "key": "Windows 7", "doc_count": 22158014 "key": "Mac OS X", "doc_count": 7512285 "key": "Android", "doc_count": 4758202 "key": "iOS", "doc_count": 4643627 "key": "Windows 8", "doc_count": 1549201 "key": "Windows XP", "doc_count": 1464605 … 59 M documents qui correspondent Windows 7: 22 M Mac OS : 7,5 M Android : 4,7 M iOS : 4,6 M Windows 8 : 1,5 M Rendu la base Requêtes Elasticsearch GET logstash-*/esup4/_search { "query": { "filtered": { "query_string": { "query": "_type:esup4" } }, "aggs": { "2": { "terms": { "field": "os_name.raw", "size": 10, "order": { "_count": "desc" "size":0 Trouve dans tous les index « logstash-* » Tous les types « esup4 » Regroupe les résultats par l’attribut « os_name » Trier les résultats par ordre décroissant Et ne garde que les 10 premiers résultats Elasticsearch Un index par jour Chaque index regroupe les informations (type) de l’ENT, du LMS et des services utilisant le CAS index : logstash-YYYY.MM.DD type : esup4 type : moodle type : casservice
Créateurs de graphique Kibana Rendu Kibana visualisation La création de "visualization" kibana se fait grâce à une interface graphique permettant de réaliser la requête Elasticsearch et ses agrégations « Create a new visualization » Type de rendu « Pie Chart » Index : « logstash-* » Découper les parts : « Split Slices » « Aggregation » : « Terms » « Field » pour faire l’agrégation : « os_name.raw » Combien en garder « top » : 60 Elasticsearch Créateurs de graphique index : logstash-YYYY.MM.DD
Créateurs de graphique Kibana Rendu Kibana visualisation Kibana traduit en requête Elasticsearch Requêtes GET logstash-*/esup4/_search { "query": { … }, "aggs": { "2": { "terms": { "field": "os_name.raw", … Elasticsearch Créateurs de graphique index : logstash-YYYY.MM.DD
Créateurs de graphique Kibana Rendu Kibana visualisation Kibana traduit le résultat en graphique Résultat { "hits": { "total": 59081020 }, "aggregations": { "2": { "buckets": [ "key": "Windows 7", "doc_count": 22158014 "key": "Mac OS X", "doc_count": 7512285 … Elasticsearch Créateurs de graphique index : logstash-YYYY.MM.DD
Kibana peut aussi agréger plusieurs visuablisations dans un « dashboard » Rendu Kibana Kibana peut créer plusieurs types de rendu
Pour participer ou poser vos questions Merci Pour participer ou poser vos questions esup-utilisateurs@esup-portail.org https://www.esup-portail.org/wiki/x/DQCfFg https://github.com/EsupPortail/agimus-ng https://trello.com/b/jp1aRH9q https://listes.esup-portail.org/sympa/info/esup-utilisateurs