Section : ÉCONOMIE ET GESTION
Option : INFORMATIQUE ET SYSTEMES D'INFORMATION
COMPOSITION DE SCIENCES DE GESTION
Durée : 5 heures
Le lexique SQL, sans commentaire ni exemple d'utilisation des instructions, est autorisé.
La règle à dessiner les symboles informatiques est autorisée.
L'usage de tout autre ouvrage de référence, de tout dictionnaire et de tout matériel électronique (y compris la calculatrice) est rigoureusement interdit.
Si vous repérez ce qui vous semble être une erreur d'énoncé, vous devez le signaler très lisiblement sur votre copie, en proposer la correction et poursuivre l'épreuve en conséquence. De même, si cela vous conduit à formuler une ou plusieurs hypothèses, vous devez la (ou les) mentionner explicitement.
NB : Conformément au principe d'anonymat, votre copie ne doit comporter aucun signe distinctif, tel que nom, signature, origine, etc. Si le travail qui vous est demandé consiste notamment en la rédaction d'un projet ou d'une note, vous devrez impérativement vous abstenir de la signer ou de l'identifier.
INFORMATION AUX CANDIDATS
Vous trouverez ci-après les codes nécessaires vous permettant de compléter les rubriques figurant en en-tête de votre copie.
Ces codes doivent être reportés sur chacune des copies que vous remettrez.
-Concours externe du CAPET de l'enseignement public :
-Concours externe du CAFEP/CAPET de l'enseignement privé :
Structure du sujet
Le sujet est composé de 3 dossiers
Dossier 1 - Accompagner la transformation numérique (20 points)
Dossier 2 - Évolution de l'infrastructure réseau (40 points)
Dossier 3 - Développement des applications (40 points)
La documentation est structurée en fonction des dossiers
Dossier 1 :
-Document 1.1 : Les formations en lien avec le numérique
-Document 1.2 : Charte des marchés d'infogérance de la GBN
Dossier 2 :
-Document 2.1 : Schéma du réseau
-Document 2.2 : Description générale du réseau
-Document 2.3 : Liste des Vlan actuels
-Document 2.4 : Extrait du tableau des serveurs
-Document 2.5 : Architecture WI-FI Actuelle
-Document 2.6 : Fonctionnement d'un commutateur de niveau 3
-Document 2.7 : Exemple de configuration d'une plage sur un serveur DHCP
-Document 2.8 : Le serveur Syslog
-Document 2.9 : Extrait du fichier du proxy inverse
-Document 2.10 : Résultat des tests de sécurité
-Document 2.11 : Extrait d'entretien sur les critères de sécurité de la bibliothèque
Dossier 3 :
-Document 3.1 - Schéma logique de données
-Document 3.2 - Formulaire de déclaration de dépôt légal
-Document 3.3 - Extraits du code de l'API de dépôt légal
-Document 3.4 - Dépôt légal des œuvres numériques
-Document 3.5 - Exemple de fichier XML de description d'un produit
-Document 3.6 - Extrait des codes utilisés dans la description
Présentation du contexte
En moins de deux décennies, la révolution numérique a provoqué des bouleversements majeurs qui représentent un défi perpétuellement renouvelé pour les organisations. Parmi les organisations à vocation culturelle, les bibliothèques ont vu leurs missions (collecter, enrichir et transmettre le patrimoine) être directement affectées par les technologies numériques. Ainsi, l'entrée des bibliothèques dans l'ère numérique soulève de nombreux défis.
La Grande Bibliothèque Nationale (GBN) est un organisme public qui entre de plain-pied dans l'ère numérique. Les services qu'elle propose portent notamment sur : le stockage de documents papier ou numériques (les ouvrages papier, y compris très anciens, sont conservés et numérisés) ; l'indexation de l'ensemble des documents à l'aide de métadonnées (livres, revues, photos, enregistrements sonores, cartes géographiques, partitions); la fourniture d'outils de recherche dans la base documentaire par requêtes multicritères ; la mise à disposition de terminaux et de sites permettant de consulter les documents, ceci aussi bien dans les locaux de la bibliothèque qu'à distance.
Ces services s'adressent à trois catégories d'usagers : les lecteurs qui recherchent et consultent les documents, les éditeurs qui produisent les ouvrages et les enregistrent auprès de la GBN dans le cadre du dépôt légal, enfin, les chercheurs qui peuvent accéder aux documents les plus rares ou encore soumis aux droits d'auteurs.
La GBN est installée dans deux bâtiments sur deux sites géographiques ouverts au public, distants de quelques kilomètres (Chantenay et Batignolles). Un premier site accueille le grand public (les lecteurs), un second site s'adresse également aux lecteurs mais plus spécifiquement aux chercheurs. Par ailleurs, différents sites web gérés par la GBN proposent des services en ligne pour les trois types de public. Les lecteurs et chercheurs peuvent rechercher et consulter les documents via un site web, ils peuvent également prendre connaissance des nouvelles publications proposés par les éditeurs, qu'elles soient immédiatement ou prochainement disponibles.
Trois principales problématiques se présentent aujourd'hui pour la direction des systèmes d'information de la GBN:
-La DSI se doit d'accompagner les acteurs dans la transformation numérique de ses activités, ceci en tenant compte à la fois de l'évolution continue des technologies, de la mise à disposition fréquente de nouvelles applications et de l'intervention de partenaires externes dans le processus de développement.
-La GBN propose à d'autres bibliothèques disposant d'un fond documentaire constitutif du patrimoine national (bibliothèques universitaires ou de collectivités territoriales) de rendre ce fond accessible via ses outils de recherche. Ces partenariats ont des implications significatives au niveau des services réseau et système pilotés par la DSI.
-La GBN est chargée de collecter, conserver, traiter et rendre accessible le dépôt légal de l'ensemble des documents de toute nature édités, importés ou diffusés. Le dépôt légal est l'obligation pour tout éditeur, imprimeur, producteur, importateur, de déposer chaque document qu'il édite, imprime, produit ou importe, auprès de l'organisme habilité à recevoir le dépôt en fonction de la nature du document. Cette obligation s'applique à tout document diffusé en nombre à un public s'étendant au-delà du cercle de famille. Cette mission prend appui sur les ressources informatiques conçues et développées par la DSI.
Vous êtes invitée et invité à contribuer à prendre en charge ces problématiques en proposant des solutions adaptées.
Dossier 1 - Accompagner la transformation numérique
S'engager dans une démarche d'innovation durable
Tout en ayant à cœur de maintenir l'expertise de ses personnels dans d'autres domaines (gestion des collections, métiers d'art...), la GBN souhaite les accompagner durablement dans la transition numérique. Du point de vue de la gestion prévisionnelle des effectifs des emplois et des compétences, le numérique est en effet considéré comme un facteur d'évolution technologique ayant une incidence sur les emplois (émergence de nouveaux profils, évolution des activités et procédures...).
Une fois la révolution du numérique concrètement intégrée dans ses missions, la GBN a vu émerger de nouvelles compétences, souvent développées de façon informelle et expérimentale par les experts. L'établissement a pris peu à peu conscience de cet accroissement collectif des savoirs et des savoir- faire, et a entrepris de l'accompagner.
Le principal défi en termes de pilotage des ressources humaines réside cependant dans la mise en place d'indicateurs permettant de mesurer l'effet qualitatif et quantitatif du numérique sur les emplois. En effet, s'il est facile d'identifier les agents exerçant des activités liées à la numérisation, il est en revanche plus difficile d'identifier les agents dont les activités sont totalement ou partiellement tournées vers le numérique, tant la diversité de ces activités est grande.
Travail à faire
1.1Présenter les moyens que peut mettre en œuvre la GBN pour accompagner ses acteurs dans la transition numérique, ceci en précisant les effets attendus.
1.2Proposer un indicateur permettant de mesurer l'effet du numérique sur les emplois, ceci tant du point de vue quantitatif que qualitatif.
L'investissement dans le développement informatique.
La capacité d'innovation de la GBN repose pour une grande part sur son aptitude à inventer et fabriquer les applications et logiciels capables de prendre en charge des fonctions nouvelles ou des volumétries dépassant largement les performances des progiciels du marché. L'investissement consenti pour la réalisation de ces outils, souvent innovants d'un point de vue fonctionnel et technique, est souvent partagé grâce à des briques open source développées par des communautés mondiales.
L'établissement s'est doté d'un « plan de développement logiciel » annuel listant l'ensemble des besoins logiciels tous domaines confondus, avec le détail des moyens financiers et humains nécessaires sur l'année à venir ainsi que les projections financières pour les deux années suivantes. Une fois ces investissements arbitrés, les équipes du département des systèmes d'information assurent la responsabilité de chaque projet dans toutes ses composantes.
Des responsables de portefeuille gèrent un ensemble de projets en cohérence fonctionnelle. Ils accompagnent les équipes, jouent un rôle de conseil et d'expertise, assurent une veille technologique et prospective, et participent à la vie des projets de leur portefeuille (analyse des événements, arbitrages, information de la hiérarchie). Cette organisation, associée à l'utilisation d'une méthode de développement agile, favorise l'innovation et des résultats orientés vers l'utilisateur.
Travail à faire
1.3Identifier les avantages que l'on peut attendre du recours à l'open source dans le contexte particulier de la GBN.
1.4Expliquer en quoi une méthode de développement agile peut favoriser l'accompagnement au changement à la GBN.
Externalisation et contrats de services
La GBN fait appel à l'infogérance pour la gestion, la supervision et la maintenance de son parc informatique composé de la totalité des équipements matériels, logiciels et systèmes. Ainsi, un prestataire a actuellement la responsabilité contractuelle de la maîtrise d'œuvre opérationnelle de l'ensemble des services numériques.
Le marché d'infogérance d'exploitation des systèmes informatiques fait l'objet d'un contrat de service qui détaille précisément la nature des prestations attendues. Parmi les clauses de ce contrat, on trouve un chapitre consacré à la qualité de service exigée et aux pénalités prévues en cas de défauts de qualité par rapport aux objectifs fixés imputables à l'infogérant.
Le document 1.2 présente l'introduction du chapitre consacré à la qualité de service attendue de la part du prestataire.
Travail à faire
1.5Donner et expliciter quelques critères de qualité objectivement mesurable concernant le service de dépôt légal proposé aux éditeurs.
1.6Déterminer la durée d'indisponibilité contractuelle de la catégorie de services à laquelle appartiennent les trois chaînes données en exemple dans le document 1.2.
Dossier 2 : Évolution de l'infrastructure réseau
Prise en compte des besoins des chercheurs
La GBN possède trois sites dont deux sont ouverts au public pour la consultation in situ des ouvrages de la bibliothèque. Le troisième est un site technique de secours informatique. La consultation des ouvrages par le public ne concerne que les ouvrages aujourd'hui libres de droit. Les ouvrages peuvent être consultés dans leur version numérique et/ou parfois en version physique. Les ouvrages numériques sont aussi consultables via des services en ligne.
Seuls les doctorants et les chercheurs peuvent consulter les ouvrages encore soumis au droit d'auteur. Certaines salles équipées de postes informatiques leur sont donc réservées. L'infrastructure actuelle ne permet pas de différentier les chercheurs et doctorants du grand public. Il a été décidé de scinder le Vlan "PUBLIC" initial en un Vlan "PUBLIC" et un Vlan "CHERCHEUR". Les deux Vlan sont de taille égale. Vous êtes chargé de cette mission sur le site de Chantenay.
Travail à faire
2.1Expliquer l'intérêt de distinguer le Vlan "PUBLIC" du Vlan "CHERCHEUR".
2.2Proposer un découpage du réseau en deux sous-réseaux de taille égale Vlan "PUBLIC" et Vlan "CHERCHEUR".
2.3Préciser les interventions à réaliser pour intégrer ce nouveau Vlan, sur les commutateurs d'accès, les commutateurs de distribution et les commutateurs de niveau 3.
2.4Lister les modifications de configuration à réaliser pour permettre au nouveau Vlan "CHERCHEUR" d'utiliser l'infrastructure Wi-Fi.
2.5Indiquer les modifications des configurations à réaliser sur les serveurs DHCP.
Intégration d'un nouveau partenaire
La GBN a élargi le champ de la coopération numérique en proposant aux institutions partenaires de mettre en ligne leurs propres ressources numériques. Cette offre est appelée "marque blanche".
Chaque partenaire dispose de sa propre bibliothèque numérique et tout document dispose d'une notice dans les catalogues de la GBN. Hormis la page d'accueil, spécifique à chaque site, le processus de recherche et de consultation des documents est identique et s'appuie sur les mêmes outils et les mêmes technologies. Les pages sont personnalisées aux couleurs du partenaire, qui appose son logo et garde la possibilité de paramétrer l'activation ou la désactivation des différentes fonctionnalités proposées. Par ailleurs, la GBN assure la maintenance et l'hébergement de chaque site en marque blanche, même si celui-ci dispose de sa propre URL, indépendante du domaine gbn.fr.
La GBN vient d'intégrer un nouveau partenaire, l'université de Dijon, selon le protocole décrit ci-après. Pour chaque partenaire il est créé un nouveau serveur virtuel accessible de l'extérieur avec les caractéristiques suivantes :
-un nom interne pleinement qualifié "nom_interne_du_serveur.gbn.local" ;
-une réservation d'adresse IP ;
-une synchronisation sur le serveur ntp ;
-un accès à distance SSH via une authentification clé privée / clé publique ;
-tous les logs de sévérité de 0 à 3 (emerg, alert, crit, err) redirigés vers le serveur syslog.
Travail à faire
2.6Proposer les modifications nécessaires au niveau du service DHCP.
2.7Expliquer en quoi l'authentification via le couple clé privée / clé publique est plus sécurisée que l'authentification classique (couple login / mot de passe) et préciser les précautions à prendre.
2.8Justifier l'utilité du serveur syslog en cas d'arrêt inopiné d'un client du serveur syslog. Expliquer également pourquoi il peut être nécessaire de conserver un fichier log en local sur chaque client du serveur syslog.
2.9Proposer un paramétrage de syslog sur le serveur dédié au nouveau partenaire.
2.10Calculer la priorité qui doit figurer dans la trame lors de l'envoi d'un log d'erreur lié à des problèmes d'authentification. Reconstituer le message reçu par le serveur Syslog.
2.11Proposer, après avoir expliqué le principe complet d'accès de l'extérieur au nouveau serveur via I'URL "bu-unidijon.fr", les modifications nécessaires sur le proxy inverse.
Tests d'intrusion du réseau de la bibliothèque
La DSI de GBN décide de profiter de l'intégration de son nouveau partenaire de Dijon en offre SaaS marque blanche pour tester la sécurité de son infrastructure réseau et système. Le projet est confié à un prestataire spécialisé en cybersécurité via un contrat qui prévoit un test de pénétration en mode boite noire : le prestataire a un profil d'internaute extérieur à la bibliothèque avec comme seule information le nom du site extranet à tester.
La procédure prévoit notamment de réaliser deux tests :
-A1 - Un scan du réseau de la GBN : le prestataire utilise l'outil nmap afin de recueillir des informations sur l'architecture réseau et système de la GBN.
-A2 - Une tentative de force brute sur la page d'authentification du nouveau site extranet : le prestataire utilise un script en python afin d'essayer de compromettre un compte administrateur existant sur l'extranet.
Un extrait des résultats des tests de cybersécurité est présent dans le document 2.10. Le document 2.11 présente, quant à lui, un extrait d'entretien sur les exigences de cybersécurité de la bibliothèque.
Travail à faire
2.12Expliquer les conséquences sur la bibliothèque d'un succès des attaques A1 et A2 par une personne malveillante.
2.13Préciser si les résultats des tests de sécurité sont conformes aux exigences de cybersécurité de la bibliothèque.
2.14Proposer une solution permettant de prévenir les écoutes clandestines internes à la GBN.
Dossier 3 - Développement des applications
Le dépôt légal
Actuellement, la base de données de la GBN ne traite que le dépôt légal des œuvres non numériques et non périodiques. Le document 3.2 présente le formulaire papier destiné à être utilisé pour saisir les informations d'un dépôt légal.
Travail à faire
3.1Dans un langage de communication associé à une base de données, rédiger les requêtes permettant d'obtenir les informations suivantes :
A)Id, nom et prénom des auteurs qui n'ont pas de pseudonyme
B)Nombre de déclarations effectuées en janvier 2019 dont le tirage est supérieur à
20000 exemplaires
C)Id et nom des déposants pour lesquels aucune œuvre n'a été déposée en 2018
D)Quel est l'auteur ou quels sont les auteurs pour lesquels il y a eu le plus grand nombre
de déclarations au cours des années 2017 et 2018 (id, nom, prénom) ?
Dernièrement, un déposant s'est inquiété auprès de la GBN du fait qu'il ne pouvait pas enregistrer plusieurs imprimeurs pour une même œuvre.
Travail à faire
3.2Expliquer pourquoi le système actuel ne permet pas d'enregistrer plusieurs imprimeurs pour une déclaration.
3.3Proposer, sous la forme de votre choix, la modification à apporter au modèle de données actuel pour le rendre compatible avec cette nouvelle fonctionnalité dans le cas où légalement une déclaration pourrait concerner plusieurs imprimeurs.
Développement d'une API de déclaration de dépôt légal
Préalablement à l'envoi d'un exemplaire d'un nouvel ouvrage à la GBN, l'éditeur de l'ouvrage doit remplir un formulaire de déclaration de dépôt légal. Ce formulaire imprimé est obligatoirement joint à l'exemplaire envoyé à la GBN. La saisie d'un formulaire de déclaration de dépôt légal peut se faire soit à l'aide d'un formulaire en ligne, soit à l'aide d'un formulaire papier.
Le travail de saisie des déclarations représente un temps important pour les éditeurs, notamment en période de préparation de rentrée littéraire où ce sont plusieurs centaines de déclarations qui sont effectuées par chaque éditeur sur une courte période. De plus, la saisie manuelle et le traitement des déclarations est source d'erreurs et de retards.
Afin d'améliorer le processus de déclaration de dépôt légal et de réduire les délais et les coûts de traitement, les éditeurs ont exprimé le souhait de pouvoir effectuer les déclarations de dépôt légal automatiquement à partir de leurs propres applications. Afin de répondre à ce besoin, la GBN a décidé de développer une interface de programmation (API) permettant d'interroger la base de données du dépôt légal et, après authentification, d'y insérer des déclarations.
Travail à faire
3.4Expliquer en quoi le développement d'une API de dépôt légal par la GBN peut permettre de répondre au besoin exprimé par les éditeurs.
Une version préliminaire de l'API est en cours de développement. Il s'agit d'un service web développé en PHP s'inspirant d'une architecture REST. Cette version préliminaire s'appuie sur des classes d'accès aux données (DeclarationDAO, CollectionDAO,...) permettant de récupérer un objet par son identifiant (méthode find($id)) ou de récupérer l'ensemble des objets (méthode findAll()) de la classe concernée.
Un extrait du code est donné en annexe, ainsi qu'un diagramme de classe présentant l'architecture technique de l'application.
En tant que développeur, vous avez en charge le développement de la partie de l'application concernant la gestion des collections.
Certains ouvrages appartiennent à des collections. Chaque collection possède un ISSN unique qui permet de faire le lien entre l'ensemble des ouvrages d'une même collection.
Par exemple, la collection « Bibliothèque de la Pléiade », dont I'ISSN est 0768-0562, regroupe plus de 780 ouvrages (ayant chacun leur ISBN).
Pour répondre aux questions suivantes, on utilisera indifféremment du pseudo-code ou un langage de programmation.
Travail à faire
3.5Écrire la méthode getCollection(int $id) de la classe Controller
3.6Écrire la méthode getCollectionByISSN(string $issn) de la classe Controller
3.7Écrire la méthode getDeclarationsByCollection(Collection $col) de la classe Controller
Pour être cohérent avec l'ensemble de l'API, la consultation des déclarations des ouvrages correspondant à une collection donnée doit se faire via une URL de la forme : http://api.gbn.fr/collections/{id}/declarations/
où {id} est remplacé par la valeur de l'identifiant de la collection concernée. Par exemple, pour consulter l'ensemble des déclarations de la collection d'identifiant 123, il faut utiliser l'URL : http://api.gbn.fr/collections/123/declarations/
Travail à faire
3.8Indiquer les modifications à effectuer dans les fichiers RestController.php et CollectionRestHandler.php pour permettre la consultation des déclarations des ouvrages correspondant à une collection donnée.
Pour permettre aux éditeurs d'effectuer des déclarations de dépôt légal via l'API, il est nécessaire de la sécuriser et d'authentifier les utilisateurs.
Travail à faire
3.9Proposer une méthode permettant d'authentifier les utilisateurs de l'API de déclaration de dépôt légal.
Le dépôt légal des œuvres numériques
Depuis peu de temps, les livres numériques sont également concernés par le dépôt légal. Ce nouveau besoin a mis en évidence la nécessité de faire évoluer le système d'information de la GBN pour prendre en compte les différences entre le dépôt légal des œuvres papier et des œuvres numériques.
Les sites web qui commercialisent des livres papier disposent de leurs propres stocks. A contrario, les sites commercialisant des livres numériques ne disposent pas de l'œuvre au format numérique. Le fichier de l'œuvre est physiquement et en permanence stocké chez son distributeur.
Un circuit de dépôt légal spécifique aux œuvres numériques a donc dû être mis en place. Les éditeurs restent, pour la GBN, responsables du dépôt légal, mais ils ont la possibilité de passer par un mandataire pour effectuer la démarche en leur nom.
Le document 3.4 présente deux solutions proposées par les développeurs de la GBN pour prendre en considération cette spécificité.
Travail à faire
3.10Choisir, parmi les deux solutions proposées, celle qui répond le mieux au besoin ci-dessus. Justifier votre choix.
Afin d'être exploitables par les sites de vente en ligne, les livres sont décrits dans des fichiers de métadonnées respectant la norme ONIX (ONline Information EXchange). Cette norme permet l'échange normalisé d'informations entre les différents acteurs de l'édition de livres.
Au cours de sa vie, les informations concernant un livre évoluent. Par exemple : un livre peut être traduit dans une nouvelle langue ; ou encore : l'adresse web du site décrivant l'œuvre peut être modifiée.
À chaque modification, un fichier « produit » mis à jour est transmis par les éditeurs aux différents distributeurs et à la GBN. La GBN désire conserver l'historique de ces mises à jour, avec leurs dates d'enregistrement, dans une base de données compatible avec la norme ONIX. Les fichiers ONIX sont au format XML. Chaque fichier contient un produit, c'est-à-dire les informations concernant une œuvre numérique.
Le document 3.5 fournit l'extrait d'un fichier XML « produit » à modéliser ainsi qu'une description des éléments XML de l'extrait proposé.
Le document 3.6 fournit un extrait des différentes listes de valeurs utilisées dans la description d'une œuvre.
Travail à faire
3.11Compléter le schéma de la solution retenue à la question 3.10 pour intégrer les fiches de produit.
3.12Indiquer un autre format d'échange d'informations pouvant être utilisé pour diffuser un fichier ONIX. Présenter les avantages et inconvénients du format XML par rapport à cette autre possibilité.
Documentation de la partie 1
Document 1.1 : Les formations en lien avec le numérique
Document 1.2 : Charte des marchés d'infogérance de la GBN
La qualité de service exigée est décomposée :
-en critères mesurables ne donnant pas lieu à pénalités mais faisant obligation au titulaire de fournir les tableaux de bord de visibilité adéquats ;
-en critères mesurables, donnant lieu à pénalités.
Pour ces derniers, les pénalités sont applicables si elles correspondent à des défauts de qualité par rapport aux objectifs fixés imputables à l'infogérant, c'est à dire résultant de défauts de prestation : absence de réactivité sur alarme, non intervention, mauvaise exécution d'une procédure référencée, incident provoqué par l'infogérant, dépassement de délais de réactivité ou d'intervention... Les critères seront mesurables mensuellement et les pénalités éventuelles applicables sur les demandes de paiement des mois où le niveau de "non qualité" générant la pénalité aura été atteint.
L'indisponibilité d'une catégorie de services n'est pas la somme des indisponibilités des chaînes applicatives qui le composent, mais la période la plus longue pendant laquelle au moins l'une des chaînes de la catégorie aura été indisponible. Exemple pour un jour donné : chaîne 1 : indisponible de 9h à 10h ; chaîne 2 : indisponible de 9h à 9h10 ; chaîne 3 : indisponible de 9h50 à 11h.
Documentation de la partie 2
Document 2.1 : Schéma du réseau
Document 2.2 : Description générale du réseau
La GBN possède trois sites Chantenay, Batignolles et Montmartre. Le site de Montmartre est un local technique de secours. Les sites de Chantenay et Batignolles sont deux sites ouverts au public. Au niveau informatique, le site de Chantenay est le site principal, le site de Batignolles ne possède que quelques serveurs de proximité (authentification, résolution de noms, gestion de l'adressage dynamique) et des postes clients.
Les serveurs de la GBN, exceptés les serveurs de secours, sont donc essentiellement localisés sur le site de Chantenay. Ils sont constitués de deux types de serveurs :
-les serveurs dédiés à la gestion de l'infrastructure : infrastructure basée sur les produits Microsoft (serveurs de domaines, AD, DNS, DHCP,..)
-les serveurs applicatifs : serveurs Linux et AIX.
L'infrastructure mise en place est fortement virtualisée dans un cluster ESX VMWARE de 10 machines physiques. Les serveurs accèdent à des données enregistrées sur une Baie de stockage via un SAN Fiber Channel.
Le site de Chantenay compte 500 postes de travail dont 80 réservés au public. Le site des Batignolles possède 100 postes client dont 40 pour le public. Les serveurs et les stations sont sur des Vlan différents. Les serveurs sont en adressage fixe sur des Vlan centraux. Les stations de travail sont en adressage dynamique dépendant du Vlan sur lequel elles sont connectées.
Les serveurs DHCP sont doublés et les plages DHCP réparties sur les 2 serveurs. Les équipements réseau ont un rôle de relais DHCP « routant » les demandes de bail vers le serveur du site le plus disponible.
Les documents numérisés par GBN sont enregistrés sur une baie d'une capacité de 250 TO, qui se compose de contrôleurs NetApp (nœuds regroupés en paire HA - High Availability).
Document 2.3 : Liste des Vlan actuels
Numéro Vlan
Nom Vlan
Adresse réseau
Nombre d'hôtes à ce jour
10
ADMINISTRATION
172.16.10.0/27
10
20
SUPERVISION
172.16.20.0/28
4
30
SERVEURS
172.16.30.0/23
240 dont 160 virtualisés
40
PUBLIC
172.16.40.0/24
120
50
DÉVELOPPEURS
172.16.50.0/24
50
60
FORMATION
172.16.60.128/25
50
70
AGENTS
172.16.70.0/22
290
Les adresses de passerelle de chaque sous-réseau sont les dernières adresses de la plage.
Les deux sites ouverts au public sont reliés par quatre liens optiques de 10 Gb/s chacun connectés au cluster de commutateur de niveau 3 sur chacun des sites. Deux de ces liens sont dédiés aux interconnexions de niveau 3, les deux autres aux interconnexions de niveau 2. L'interconnexion des deux sites en niveau 2 permet d'étendre les Vlan entre les deux sites. Chacun des sites des Batignolles et de Chantenay est relié de la même manière au site de secours.
Document 2.4 : Extrait du tableau des serveurs
Nom local des serveurs
Fonction
Adresse IP
Adresse Mac
serv-ad1
Serveur d'authentification
172.16.30.1
de:25:63:1e:40:f4
serv-dhcp1
Serveur DHCP
172.16.30.11
de:26:b7:10:31:c4
serv-syslog
Serveur Syslog
172.16.30.21
de:21:b7:10:22:c1
serv-pub
Serveur Web public de la GBN
172.16.30.31
de:21:b7:11:da:70
serv-uni1-aix
Serveur dédié au partenaire Université d'Aix
172.16.30.101
c6:20:a3:a7:ec:aa
serv-uni1-nice
Serveur dédié au partenaire Université de Nice
172.16.30.105
c6:20:a3:10:11:bb
serv-uni1-dijon*
Serveur dédié au partenaire Université de Dijon
172.16.30.111
c6:33:a1:B7:df:4a
...
Document 2.5 : Architecture WI-FI Actuelle
Actuellement, les connexions Wi-Fi ne sont réalisées que dans le VLAN "PUBLIC".
Les bornes utilisées sont des points d'accès NETGEAR Dual Band 802.11ac WAC720 qui peuvent gérer jusqu'à 17 SSID/VLAN différents et garantissent un débit total de 1,2 Gbit/s (300 Mbit/s à 2,4 GHz et 867 Mbit/s à 5 GHz). Elles sont présentes à chaque étage des bâtiments des sites de Chantenay et Batignolles, branchées sur des commutateurs POE (Power Over Ethernet). Ces bornes proposent deux modes de fonctionnement : le mode Autonome et le mode Global qui permet de gérer jusqu'à 10 points d'accès de façon centralisée sur un même appareil. Quand une des bornes est en mode globale, elle contrôle de manière centralisée les autres bornes.
Les bornes NETGEAR WAC720 sont connectées sur un port non étiqueté, affecté au vlan "PUBLIC" sur les commutateurs d'accès.
Document 2.6 : Fonctionnement d'un commutateur de niveau 3
Les commutateurs de niveau 3 offrent des fonctions de niveaux 2 et 3 . A la création d'un nouveau Vlan, une interface de niveau trois est créée à laquelle il faut attribuer une adresse IPV4 et un masque de réseau.
Le routage est alors actif entre les différents Vlan sauf ACL (Acces Control List) permettant, par exemple, de bloquer les échanges entre différents Vlan.
Document 2.7 : Exemple de configuration d'une plage sur un serveur DHCP
Le service DHCP utilise une configuration réseau bien particulière qui engendre des conflits si jamais deux d'entre eux cohabitent sur un réseau. La solution classique pour disposer d'un serveur DHCP de secours est de configurer sur chacun des serveurs des plages d'adresses dynamiques différentes.
Sur chaque serveur, sont implémentés les fichiers de configuration suivants :
-le fichier de configuration global : /etc/dhcp/dhcpd.conf qui contient les directives principales et les "include" vers des fichiers de configuration spécifiques.
-Le fichier de configuration contenant les déclarations des différents réseaux : /etc/dhcp3/dhcpdsubnet.conf
-Les fichiers de configuration contenant les réservations d'adresses dont :
○pour les commutateurs : /etc/dhcp3/dhcpdswitch.conf
○pour les serveurs : /etc/dhcp3/dhcpserveur.conf
Extrait du fichier /etc/dhcp3/dhcpdsubnet.conf sur serv-dhcp1
### Réseau "DÉVELOPPEURS"
## Déclaration sous réseau
subnet 172.16.50.0 netmask 255.255.255.0 {
## Adresse de diffusion
option broadcast-address 172.16.50.255;
## routeur par défaut
option routers 172.16.50.254;
## Plage d'attribution d'adresses dynamiques
range 172.16.50.1 172.16.50.120;
}
Extrait du fichier /etc/dhcp3/dhcpserveur.conf
host serv-ad1 {
hardware ethernet de:25:63:1e:40:f4;
fixed-address 172.16.30.1/23;}
Document 2.8 : Le serveur Syslog
Syslog est un protocole implémenté sur des systèmes comme Windows ou Linux et des périphériques réseaux définissant un service de journaux d'événements d'un système informatique. C'est aussi le nom du format qui permet ces échanges. Ce protocole permet donc de transporter les messages de journalisation générés par les applications ou le système vers une machine hébergeant un serveur Syslog.
Syslog se compose d'une partie cliente et d'une partie serveur. La partie cliente émet les informations sur le réseau, via le port UDP 514. Les serveurs collectent l'information et se chargent de créer les journaux.
La priorité du message est un indice qui permet, lors de son exploitation, de le traiter suivant un ordre de criticité. Elle est définie en fonction de sa catégorie et de sa sévérité : (8*catégorie) + sévérité.
La sévérité (ou niveau de gravité) d'un message correspond au degré d'urgence du message. Les huit sévérités existantes sont définies par les RFC :
Code
Gravité
Mot-clé
Description
0
Emergency
emerg (panic)
Système inutilisable.
1
Alert
alert
Une intervention immédiate est nécessaire.
2
Critical
crit
Erreur critique pour le système.
3
Error
err (error)
Erreur de fonctionnement.
4
Warning
warn (warning)
Avertissement (une erreur peut intervenir si aucune action n'est prise).
5
Notice
notice
Événement normal méritant d'être signalé.
6
Informational
info
Pour information.
7
Debugging
debug
Message de mise au point.
La catégorie d'un message correspond au type d'application générant le message. Les 24 fonctionnalités existantes sont définies par la RFC 3164. En voici un extrait :
Code
Mot-clé
Description
0
kern
kernel messages
1
user
user-level messages
2
mail
mail system
3
daemon
system daemons
4
auth
security/authorization messages
5
syslog
messages generated internally by syslogd
6
lpr
line printer subsystem
7
news
network news subsystem
8
uucp
UUCP subsystem
9
clock daemon
10
authpriv
security/authorization messages
11
ftp
FTP daemon
Configuration du serveur Syslog et des clients
Sur un serveur Linux, la configuration se réalise dans le fichier /etc/rsyslog.conf qu'il faut paramétrer pour qu'il accepte les logs venant de l'extérieur en écoutant sur le port UDP 514 :
#provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
Sur un client Linux, la configuration se réalise dans le fichier /etc/rsyslog.conf en ajoutant une ou plusieurs lignes de la forme suivante :
Catégorie.Sévérité @adresseIPDestination:port
Par exemple : . @192.168.1.100:514 envoie tous les logs au serveur syslog dont l'adresse IP est 192.168.1.100 mail.info @192.168.100:514 envoie uniquement les messages dont la catégorie est liée au service mail et la sévérité est inférieure ou égale à « information » (0<=sévérité<=6)
Un message envoyé par un client est similaire à ce qui suit : "<19>sept 12 14:46:18 172.16.201.27 Message d'erreur du Service Mail", 172.16.201.27 étant l'adresse IP du client à l'origine du message.
Document 2.9 : extrait du fichier du proxy inverse
Pour qu'un utilisateur d'Internet puisse accéder aux serveurs internes dont les serveurs dédiés aux partenaires, GBN utilise HaProxy qui est une solution libre de Proxy inverse.
Un extrait de la configuration d'HaProxy vous est donné ci-dessous :
frontend proxypublic
bind:80
bind:443
mode http
....
acl access_pub hdr_beg(host) pub.gbn.fr
use_backend public if access_pub
acl access_partenaireX hdr_beg(host) URL_partenaireX
use_backend partenaireX if access_partenaireX
acl acces_bddsn path_beg /bddsn
use_backend bddsn if acces_bddsn (…)
backend public (...)
server servPub 172.16.30.31:80 (...)
backend partenaireX (...)
backend bddsn (...)
Les acl se lisent de la manière suivante : acl nom_acl suivie d'une condition. Ici hdr_beg(host) signifie « dont l'URL commence par ». Use_backend nom_backend renvoie vers un paragraphe de backend précis si l'acl dont le nom suit est vérifiée.
Document 2.10 : Résultat des tests de sécurité
Extrait du tableau de bord du pare-feu :
ALARMES
Date v
Action
Priorité
Source
Pay
Destination
Message
15:47:26
Bloquer
Mineur
Anonymized
Firewall_out
Sonde OS Nmap
15:47:26
‡ Passer
Mineur
Anonymized
Firewall_out
SSL : protocole SSLv2 déter
15:47:26
Bloquer
Majeur
Anonymized
Firewall_out
Paquet SSL invalide (Unkno
Extrait du fichier de log du nouveau serveur extranet :
"reclId":"LbluEXYj2rigCv4BP1qa","level" :2,"time":"2019-02-
21714:04:55+00:00 ","remoteAddr":"195.62.40.20",
'user" :....","app" :"core", "method":"POST","url"; "Vbu-
unidijon.frVindex.phpVlogin","message":"Login failed: 'Admin' (Remote IP :
'82.66.44.61'),"userAgent":"Mozilla\/5.0 (X11;Linux x86_64) Version 68.0.2
"reclId":"YdpNXxM8npBOLFPCg2eb","level":2,"time":"2019-02-
21T14:04:55+00:00","remoteAddr":"195.62.40.20", "user":"--
","app":"core","method":"POST","url";"\/bu-
unidijon.frVindex.phpVlogin","message":"Login failed: 'Admin' (Remote IP :
182.66.44.611),"userAgent":"MozillaV5.0 (X11;Linux x86_64) Version 68.0.2
"rec1Id":"R(T6YHui0p0CVFt5t5bn","level":2,"time":"2019-02-
21714:04:55+00:00","remoteAddr":"195.62.40.20", "user" :"--
","app":"core","method" :"POST","url";"\Au-
unidijon.frVindex.phpVlogin","message":"Login failed: 'Admin.' (Remote IP :
182.66.44.611),"userAgent":"MozillaV5.0 (X11;Linux x86_64) Version 68.0.2
"rec1Id":"x0WFbH99xcv4tTTerN","level":2,"time":"2019-02-
21714:04:56+00:00","remoteAddr":"195.62.40.20", "user":"--
","app":"core","method":"POST","url";"\/bu-
unidijon.frVindex.phriVlogin","message":"Login failed: 'Admin' (Remote IP :
'82.66.44.61'),"userAgent":"MozillaV5.0 (X11;Linux x86_64) Version 68.0.2
"rec1Id":"AzAA34fgtJu7rigTf5b5","level":2,"time":"2019-02-
21714:04:56+08:00","remoteAddr":"195.62.40.20", "user" :"--
","app":"core","method" :"POST","url";"\Au-
unidijon.frVindex.phpVlogin","message":"Login failed: 'Admin.' (Remote IP :
'82.66.44.61'),"userAgent":"Mozilla\/5.0 (X11;Linux x86_64) Version 68.0.2
Document 2.11 : Extrait d'entretien sur les critères de sécurité de la bibliothèque
"La GBN se doit de garantir un niveau de sécurité maximum à ses utilisateurs. Les informations échangées sont liées à des activités de recherche et sont donc par nature confidentielles. L'accès au service extranet de consultation des ouvrages en ligne se fait via la fourniture d'un login et d'un mot de passe sur une page web. Si cette méthode d'authentification est simple, sa fragilité réside dans le risque de compromission du mot de passe. C'est pourquoi nous voulons qu'un bannissement soit mis en place après trois tentatives infructueuses d'accès au service extranet. Quant à l'infrastructure réseau, elle est protégée via un pare-feu UTM qui bloque automatiquement le trafic malicieux. Toutes les trames suspectes doivent automatiquement être bloquées sans intervention de l'administrateur réseau."
Documentation de la partie 3
Document 3.1 - Schéma logique de données
Représentation graphique :
Représentation textuelle :
DECLARATION(id, Etat, dateDeclaration, lieuDeclaration, ISBN, titre, format, nbPages, tirage, prixPublic, nbExemplairesDeposes, datemiseADdispo, numeroDansCollection, idCollection, idDeposant, idImprimeur, idFaconnier, idTypeEdition, idTypeFinition)
id : clé primaire
idCollection : clé étrangère en référence à COLLECTION
idDeposant clé étrangère en référence à DEPOSANT
idlmprimeur clé étrangère en référence à IMPRIMEUR
idFaconnier clé étrangère en référence à FACONNIER
idTypeEdition clé étrangère en référence à TYPEEDITION
idTypeFinition clé étrangère en référence à TYPEFINITION
AUTEUR (id, nom, prenom,pseudonyme,dateNaissance)
id : clé primaire
COLLECTION (id, ISSN, titre)
id : clé primaire
DEPOSANT (id, nom, adresse1, adresse2, codepostal, ville)
id : clé primaire
IMPRIMEUR (id, nom, adresse1, adresse2, codePostal, ville)
id : clé primaire
TYPEEDITION (id, libelle)
id : clé primaire
TYPEFINITION (id, libelle)
Id : clé primaire
ECRIRE (idAuteur, idDeclaration)
idAuteur, idDeclaration : clé primaire
idAuteur clé étrangère en référence à AUTEUR
idDeclaration clé étrangère en référence à DECLARATION
FACONNIER (id, nom, adresse1, adresse2, codePostal, ville)
id : clé primaire
Document 3.2 - Formulaire de déclaration de dépôt légal
Grande
Bibliothèque
déclaration de dépôt légal - éditeur livres
Nationale
Nationale
Code du patrimoine art. L131-1 à L133-1 et R131-1 à R133-1 Arrètés du 12 janvier 1995
éditeur livres
et autres documents non périodiques
A Identification du déposant 1⊢ nom (ou raison sociale) et adresse*
B Descriptif du document déposé. Dépôt obligatoire en un exemplaire.
3 ⟼ auteur[s]
nom, prénoms
date de naissance
pseudonyme
□
□
4⊢ document
titre
titre de la collection
numéro de la collection
5 □ édition
□ nouveauté
□ nouvelle édition
□ broché
□ relié
7 - chiffre déclaré du tirage
□
□
nom (ou raison
nom (ou raison
sociale) et adresse
du demier façonnier □
prix de vente au public □
date de mise
à disposition du public □
8
C Lieu de dépôt Grande Bibliothèque Nationale Dépôt légal - Livres
Avenue de la Seine
75000 Paris
Téléphone: 0101010101
Document 3.3 - Extraits du code de l'API de dépôt légal
Fichier .htaccess (extrait)
Ce fichier est utilisé par le serveur Web pour rediriger les requêtes adressées au Webservice vers RestController.php avec les paramètres correspondant à la recherche.
<?php
require_once("AuteurRestHandler.php");
require_once("CollectionRestHandler.php");
...
$view = "";
if (isset($_GET["view"]))
$view = $_GET["view"];
/* controls the RESTful services URL mapping */
switch ($view) {
case "allAuteurs": // to handle REST Url /auteurs/
$auteurRestHandler = new AuteurRestHandler();
$auteurRestHandler->getAllAuteurs();
break;
case "auteurNom": // to handle REST Url /auteurs/search/nom/:nom/
$auteurRestHandler = new AuteurRestHandler();
$auteurRestHandler->getAuteurByNom($_GET["nom"]);
break;
case "allCollections": // to handle REST Url /collections/
$collectionRestHandler = new CollectionRestHandler();
$collectionRestHandler->getAllCollections();
break;
...
case "" :
//404 - not found;
break;
}
Fichier CollectionRestHandler.php (extrait)
Classe responsable du traitement des requêtes Rest concernant les collections.
<?php
require_once("SimpleRest.php");
require_once("Controller.php");
class CollectionRestHandler extends SimpleRest
{
public function getAllCollections()
{
$ctrl = Controller::getInstance();
$rawData = $ctrl->getLesCollections();
if (empty($rawData)) {
$statusCode = 404;
$rawData = array('error' =>'Aucune collection.');
} else {
$statusCode = 200;
}
$this->makeResponse($statusCode, $rawData);
}
public function getCollection(int $id)
{
$ctrl = Controller::getInstance();
$rawData = $ctrl->getCollection($id);
if (empty($rawData)) {
$statusCode = 404;
$rawData = array('error' =>'Collection non trouvée.');
} else {
$statusCode = 200;
}
$this->makeResponse($statusCode, $rawData);
}
public function getCollectionByISSN(string $issn)
{
$ctrl = Controller::getInstance();
$rawData = $ctrl->getCollectionByISSN($issn);
if (empty($rawData)) {
$statusCode = 404;
$rawData = array('error' =>'Collection non trouvée.');
} else {
$statusCode = 200;
}
$this->makeResponse($statusCode, $rawData);
}
public function makeResponse($code, $data)
{
// Construction de la réponse au format attendu
...
}
...
}
Controller.php (extrait)
<?php
...
// Classe singleton
class Controller
{
...
// Retourne une instance de Controller
public static function getInstance(){...}
...
public function getLesCollections()
{
return CollectionDAO::getInstance()->findAll();
}
public function getCollection(int $id)
{
// A compléter
}
public function
getCollectionByISSN(string $issn)
{
// A compléter
}
public function getDeclarationsByCollection(Collection $col)
{
// A compléter
}
}
Collection.php (extrait)
<?php
...
class Collection
{
private $id;
private $ISSN;
private $titre;
// Constructeur
public function __construct($id, $ISSN, $titre)
{
$this->id = $id;
$this->ISSN = $ISSN;
$this->titre = $titre;
}
public function getId() {return $this->id;}
public function setId(int $id)
{$this->id = $id;}
public function getISSN(){return $this->ISSN;}
public function setISSN(string $ISSN)
{$this->ISSN = $ISSN;}
public function getTitre()
{return $this->titre;}
public function setTitre(string $titre)
{$this->titre = $titre;}
...
}
CollectionDAO.php (extrait)
<?php
...
// Classe singleton permettant de récupérer les collections
class CollectionDAO
{
...
// Retourne une instance de CollectionDAO
public static function getInstance(){...}
// Retourne un tableau de Collection contenant l'ensemble des collections
public function findAll(){...}
// Retourne la Collection dont l'id est passé en paramètre
public function find(int $id){...}
}
Declaration.php (extrait)
<?php
...
class Declaration implements
{ ...
public function getId(){...}
public function getISBN(){...}
public function getTitre(){...}
public function getFinition(){...}
public function getType(){...}
public function getFormat(){...}
public function getNbPages(){...}
public function getTirage(){...}
public function getPrixPublic(){...}
public function getNbExemplaires(){...}
public function getDateMiseADispo(){...}
public function getCollection(){...}
public function getNumeroDansCollection(){...}
public function getLesAuteurs(){...}
public function getDeposant(){...}
public function getImprimeur(){...}
public function getFaconnier(){...}
...
}
DeclarationDAO.php (extrait)
<?php
/...
// Classe singleton permettant de récupérer les déclarations
class DeclarationDAO
{
...
// Retourne une instance de DeclarationDAO
public static function getInstance(){...}
// Retourne un tableau de Declaration contenant l'ensemble des déclarations
public function findAll(){...}
// Retourne la Declaration dont l'id est passé en paramètre
public function find(int $id){...}
}
Document 3.4 - Dépôt légal des œuvres numériques
Solution 1 :
Solution 2 :
Document 3.5 - Exemple de fichier XML de description d'un produit
<?xml version="1.0" encoding="UTF-8"?>
<Product>
<RecordReference>9438000062</RecordReference>
<NotificationType>03</NotificationType>
<Isbn>2765406553</Isbn>
...
<Website>
<WebsiteRole>01</WebsiteRole>
<WebsiteDescription>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Maecenas et nulla sed tellus egestas vehicula vel vitae metus.
</WebsiteDescription>
<WebsiteLink>https://editions.plonarion.com</WebsiteLink>
</Website>
<Website>
<WebsiteRole>42</WebsiteRole>
<WebsiteDescription> Donec sed ante tincidunt urna viverra posuere non ut sapien. Cras sit
amet dolor nunc. Donec in pharetra neque. Praesent placerat orci et arcu vestibulum.
</WebsiteDescription>
<WebsiteLink>https://twitter.com/Ed_plonarion</WebsiteLink>
</Website>
<Website>
<WebsiteRole>43</WebsiteRole>
<WebsiteDescription>Aenean ultrices a nisi eu euismod. Praesent mattis ornare tempor.
Fusce viverra id eros id rutrum.
</WebsiteDescription>
<WebsiteLink>https://www.facebook.com/Ed_plonarion/</WebsiteLink>
</Website>
</Product>
Elément XML ONIX
Description
<product>
Un produit est décrit selon la norme ONIX par un groupe d'éléments commençant par l'élément <Product> unique et non répétable
<RecordReference>
Ce code est unique et permanent qui identifie l'information ONIX du produit obligatoire, unique et non répétable
<NotificationType>
Code du type d'annonce ou de mise à jour qui est envoyé. (Voir liste 1) Unique et non répétable
<lsbn>
Code ISBN 10 ou 14 du livre concerné par la modification Elément non répétable et obligatoire
<Website>
Groupe d'éléments qui identifient et fournissent des pointeurs vers un site web qui est en relation avec un item de contenu. Groupe non obligatoire et répétable
<WebsiteRole>
Code qui identifie le rôle ou l'objet du site web qui est lié à travers l'élément <Website>.( voir Liste 2) Optionnel et non répétable.
<WebsiteDescription>
Texte libre décrivant la nature du site web qui est lié à travers l'élément <Website>. Optionnel et non répétable.
<WebsiteLink>
URL du site web. Obligatoire dans toute occurrence de l'élément <Website>, et non répétable
Document 3.6 - Extrait des codes utilisés dans la description
Liste 1 :Code Type d'annonce ou de mise à jour
Valeur
Libellé
01
Aparaître
02
Aparaître(confirmé)
03
Annonceconfirméeàlapublication (...)
Liste 2 : Code Rôle de site web <WebsiteRole>
Valeur
Libellé
01
Site web de l'éditeur
02
Site web de l'éditeur pour une œuvre spécifique (...)