IA

L’IA sera source de valeur si la data est maîtrisée et gouvernée au sein des organisations

L'IA sera source de valeur si la data est maîtrisée et gouvernée au sein des organisations

26 novembre 2024

Louis Allavena

Consultant Transformation Data

Maureen Delaloi

Manager Transformation Data

Contrairement à une idée reçue, la réglementation de l’IA à vocation à favoriser son développement et son partage dans les projets des organisations.  

Chez Rhapsodies Conseil, nous considérons que les bonnes pratiques Data sont indispensables à la réussite des projets IA (intégration d’un outil ou développement interne).  Nous abordons le sujet de l’IA par les usages raisonnés de ces technologies. Pour assurer le succès de l’intégration de l’IA dans notre quotidien, nous mettons l’accent sur la gouvernance et la mise en qualité des données. En effet la maîtrise des données est pour nous un incontournable de la réussite d’un projet IA, au même titre que les questions éthiques et réglementaires que nous avons dû nous poser pour définir notre charte d’IA qui intègre les exigences de l’AI Act comme la gestion des risques tout au long du cycle de vie du système d’IA. 

Gouvernance des données : Une structure solide

Une gouvernance des données efficace est cruciale pour garantir des données maîtrisées et conformes à la réglementation. Cette efficacité passe par des politiques claires de gestion et suivi de la qualité des données, des responsabilités définies, ainsi que par une traçabilité des données. Et ce, en lien avec le cycle de vie du projet IA. 

En assurant une supervision continue, la gouvernance aide à éviter les biais, à respecter les droits des individus et à maintenir la transparence des processus, en ligne avec les exigences des autorités régulatrices.

Qualité des données : L’essence de l’IA

Pour que les modèles d’IA fonctionnent de manière optimale, il est essentiel de fournir des données de haute qualité. Cela implique la vérification de la cohérence, de l’exactitude et de la pertinence des données. Des processus de validation et de nettoyage des données doivent être mis en place pour éviter les erreurs, les biais et garantir que les modèles sont alimentés par des informations fiables.  

Cette démarche est d’autant plus essentielle pour les applications classées « à haut risque » par l’AI Act. Tout traitement automatisé de données personnelles pour évaluer divers aspects de la vie d’une personne (situation économique, intérêts, localisation, etc.), est considéré comme un traitement à haut risque. Ainsi les défaillances peuvent avoir des conséquences majeures comme des fuites de données personnelles, des biais discriminatoires ou la mise en place par ceux qui déploient des systèmes de surveillance humaine.  

Conformité avec l’AI Act : Processus intégrés et documentation

L’AI Act impose des obligations précises aux projets IA, notamment en matière de documentation, de traçabilité des décisions et d’explicabilité des modèles. Les fournisseurs de modèles doivent effectuer des évaluations de modèles, y compris mener et documenter des tests contradictoires afin d’identifier et d’atténuer le risque systémique. Ils doivent repérer, documenter et signaler les incidents graves et les éventuelles mesures correctives à l’Office AI et aux autorités nationales compétentes dans les meilleurs délais.  

Pour répondre à ces obligations, il est essentiel de mettre en place des processus intégrés qui permettent de suivre, documenter et auditer les données utilisées à chaque étape du projet.  

Cette approche préventive renforce non seulement la conformité, mais facilite également l’adaptation aux futures régulations et les audits de conformité éventuels. 

En résumé, avant de vous lancer dans un projet IA nous vous conseillons fortement de respecter un ensemble de bonnes pratiques Data et de les personnaliser selon votre contexte :  

ia valeur

Nous attirons aussi votre lecture sur un sujet crucial de l’impact de l’IA.  En raison de l’impact environnemental et social important et croissant de l’IA et en particulier de l’IA Générative, ses usages doivent rester limités au strict nécessaire pour les organisations. Les prises de décision autour du déploiement de ces technologies doivent se faire en prenant en compte systématiquement ces enjeux.


–> Voir la norme AFNOR de référence sur le sujet !

Pour aller plus loin, n’hésitez pas à contacter l’un de nos experts Transformation Data :

octobre rose movember

Octobre Rose & Movember : Ensemble pour la santé de toutes et tous, avec flexibilité

Octobre Rose & Movember : Ensemble pour la santé de toutes et tous, avec flexibilité

7 novembre 2024

Graziella Pibiri

Directrice Ressources Humaines

Clara Partiseti

Communication & Marketing

Octobre Rose et Movember sont deux mois clés dans la lutte contre les cancers qui touchent des millions de personnes chaque année. Octobre Rose est dédié à la prévention du cancer du sein. Movember se concentre sur la santé masculine : prévention des cancers de la prostate et des testicules, ainsi que la santé mentale des hommes.

Pourquoi ces campagnes sont-elles si importantes ?

Le dépistage précoce est un élément crucial pour améliorer les chances de survie face à ces maladies. Octobre Rose encourage les femmes à se faire dépister régulièrement pour le cancer du sein, une étape clé pour détecter la maladie à temps. Movember, de son côté, sensibilise les hommes à l’importance de surveiller leur santé, souvent négligée, et d’oser parler de sujets tels que le cancer ou la dépression.

La flexibilité chez Rhapsodies Conseil, un levier pour le bien-être

Chez Rhapsodies Conseil, nous croyons fermement que la flexibilité au travail peut jouer un rôle important dans la prise en charge de la santé, qu’il s’agisse de prévention, de dépistage ou de traitement. Voici comment nos pratiques actuelles et celles que nous pourrions développer y contribuent :

Un engagement au quotidien pour le bien-être des collaborateurs

Chez Rhapsodies Conseil, la sensibilisation à ces enjeux ne s’arrête pas là. Chaque année, nous organisons la Semaine de la Qualité de Vie au Travail pour aborder ces questions essentielles et encourager les discussions sur la santé et le bien-être. De plus, des réunions régulières sont tenues autour de projets d’inclusion afin de garantir que chacun se sente soutenu et inclus dans nos démarches.

Ces sujets sont également abordés dans notre newsletter interne, qui informe les collaborateurs des initiatives en cours, des bonnes pratiques, et des ressources disponibles pour mieux concilier santé et travail.

La flexibilité au service de la santé : un engagement durable

Nous soutenons activement Octobre Rose et Movember, avec des politiques de flexibilité au travail. Au-delà de nos objectifs professionnels, la santé de nos collaborateurs est une priorité. Aller à un dépistage, suivre un traitement, ou prendre soin de sa santé mentale : chacun doit bénéficier d’un environnement de travail flexible adapté à ses besoins.

Chez Rhapsodies Conseil, nous nous engageons à faire en sorte que la conciliation entre vie professionnelle et santé soit non seulement possible, mais encouragée.

octobre rose movember
rd solertia

Solertia – L’archi

Solertia - L'archi

29 octobre 2024

Rhapsodies Digital

Antoine Belluard

Responsable technique Rhapsodies Digital

À Rhapsodies Digital, on aime construire des solutions numériques (oui oui), et on s’est dit qu’on avait envie de partager dans le détail ce qu’on fait. C’est donc avec une série d’articles que l’on va soulever le capot, et présenter les détails techniques de nos travaux.

On va commencer par parler de notre projet Solertia (car il est tout frais, le MVP vient de sortir), de son archi, le back, le front, et de comment on a fait tout ça.

Solertia, projet visant à lister, catégoriser et présenter des entreprises au savoir-faire exceptionnel, est aussi notre premier vrai projet interne, imaginé et réalisé par une équipe très réduite, mais passionnée !

On y va ?

Boring or not boring ?

Le choix de l’ennui : côté application

Le projet Solertia en gros résumé

À première vue, le projet présente une architecture très classique, avec un socle API et base de données consommée par un front.

L’avantage, c’est que si, un jour, on a envie d’exposer et de monétiser nos données, c’est presque déjà fait (bon, moyennant un système d’authentification et de rate-limit bien évidemment…). Et ça tombe bien, car c’est également une des ambitions du projet.

Autre avantage, notre front n’étant qu’une couche de présentation, il ne fera pas d’écriture sur nos données, tout comme les clients potentiels de notre API, on peut donc, sans vergogne, couper en deux nos routes et ajouter une protection supplémentaire sur tout ce qui est POST/PUT et DELETE.

Notre API/Back, sera de plus un proxy pour récupérer et agréger de la data sur nos fameuses entreprises, avec notamment des connexions API avec Pappers (et d’autres sources de données qui arriveront par la suite).

C’est pour cela que le full monolithe (bien qu’avec beaucoup d’avantages, on le rappelle, utilisé par exemple chez Stackoverflow), n’a pas retenu mon attention ici.

Le choix de l’ennui : côté base de données

TL;DR : j’aime bien PGSQL.

Une de mes technos préférées, je dois l’admettre, est PostgreSQL. Robuste, ultra-performante, sécurisée et éprouvée, les nombreuses qualités de cette base de donnée relationnelle open source ne sont plus à présenter.

Son excellente gestion du JSON, avec bon nombre de fonctions et d’opérateurs prêts à l’emploi (on en parlera plus en détails sur la partie backend), peuvent permettre, par exemple, de créer des requêtes dont le résultat est directement mappables sur un DTO.

Concernant le volume de données, quelques milliers d’entreprises, il me paraissait overkill d’utiliser ElasticSearch pour l’instant (qui nécessite son serveur et donc sa maintenance — ou alors des solutions SaaS hors de prix (coucou Algolia/Melisearch)), sachant que PG dispose d’un excellent module de recherche fulltext.

Puisqu’on a évoqué un peu de NoSQL, je n’ai pas retenu cette solution non plus, car on a quand même pas mal de relations à gérer, et n’étant pas non plus un fana des micro-services (quand ce n’est pas nécessaire), je n’avais pas envie de m’embêter à ce niveau-là. PostgreSQL est mon choix rationnel, par défaut, quand je cherche une base de donnée.

Car oui, il faut le reconnaître, le NoSQL est sexy et a d’autres avantages, et match très bien quand on a moultes services qui ont leur propre système de stockage. Mais bien souvent, ce n’est qu’une question de préférence sur la modélisation, au final, on peut très bien faire du NoSQL sur PG.

Comment qu’on se cache

TL;DR : un jour oui, mais pas maintenant.

Actuellement, le projet ne dispose pas d’un système de cache applicatif, autre que ce que les technos choisies font nativement. Nous verrons après le lancement du projet, car on aime bien itérer et donc pour l’instant, on préfère avoir notre BDD en frontal de notre API.

Parce que oui, développer un système de cache, ce n’est pas auto-magique, il ne suffit pas d’installer l’excellent Redis et hop, c’est fait. Il y a du code à écrire, et pas mal de cas à gérer, ainsi qu’une dépendance et un serveur supplémentaire.

Parlons technos applicatives !

Le choix du compilé côté Backend

S’il y a bien une chose que j’ai comprise au cours de mes derniers projets, c’est que l’interprété, c’est pratique, mais c’est coûteux en performance et donc en serveur.

Côté API, il est absolument vital que les performances soient au RDV, car c’est notre backend, c’est ce qui va exposer nos données, et c’est ce qui sera le plus gros bottleneck de notre architecture.

Ce que j’aime bien avec les exécutables, c’est qu’après avoir target une plateforme, on a pratiquement besoin de rien sur le serveur pour le faire tourner, couplé avec supervisord par exemple, on peut également avoir rapidement un système simple, auto-gérable. Le choix de docker en prod est par ailleurs plus envisageable, il suffit d’une alpine vanilla et c’est parti.

Les choix évidents : Rust vs Go

Secrètement, cela fait des années que je me forme au langage Rust, que j’adore et dont j’admire le design. Gestion de la mémoire fine sans garbage collector, syntaxe élégante, typage strict, friendly compilateur, zero-cost abstractions et performances proches du C/C++.

Néanmoins, son gros (et peut-être seul ?) défaut reste son niveau d’adoption professionnelle. Bien qu’on dénombre de plus en plus de success story après un passage à du Rust (Discord, AWS, Kernel Linux, 1Password…), le nombre de développeurs est actuellement limité, et la gymnastique mentale nécessaire pour coder en Rust est importante.

Je suis convaincu que le jour où on sera plus nombreux, je pousserai fort pour que l’on puisse construire nos backend en Rust pour participer également à la popularisation de ce langage.

Surtout que tokio (les créateurs de l’async sur le langage), avance à grands pas avec son framework web ultra-performant axum, qui je pense va tout éclater sur son passage. À l’heure où j’écris ces lignes, le projet est en v0.9.3.

Le vainqueur rationnel : Go

Et donc oui, spoiler alerte, le backend de Solertia est écrit en Go.

Rebuté par sa syntaxe dans un premier temps, loin d’être élégante, force est de constater que le langage est populaire. Certainement causé par la réécriture de pas mal de backend PHP/Nodejs/Java et avec un Google en back.

Il s’est rapidement imposé, comme un bon compromis simplicité d’utilisation/performances.

Bien qu’on s’écarte sensiblement des performances de Rust, il est sympa de voir que des calls API sont de l’ordre de la milliseconde, avec des appels BDD derrière de la transformation de data. Surtout une belle économie de CPU/RAM, juste parce qu’on utilise mieux les ressources et qu’on a besoin de peu de dépendances (genre curl en fait) sur le serveur.

Côté langage, Go est également typé strictement et se veut surtout une boîte à outils complète côté network. Et là oui, pour faire du web, c’est simple, nativement tout existe déjà dans le STD. De plus, sa gestion de la concurrence le rend très cool à utiliser.Côté librairies/framework, on est aussi très bien, avec bon nombre de choses qui existent (forcément, car le gros du truc est déjà présent dans le langage). Ici, on va juste teaser, en disant qu’on a un framework web (Gin), un semi-ORM un peu naze, mais pratique pour les migrations (Bun) et un truc génial pour auto-générer la documentation OpenAPI à partir de nos DTO d’entrée et de sortie (Huma).

NodeJS et Astro pour le front

Je vais vous l’avouer, je n’ai jamais été très grand partisan de NodeJS (étant plus côté PHP historiquement).

On peut néanmoins reconnaître que son extrême popularité a généré tout un tas de truc quand même bien cool comme Typescript et Astro, excellent framework web que l’on m’a fait découvrir très récemment (big-up à Renaud qui se reconnaitra s’il est dans les parages !). Et également, côté performance, il ne se défend pas si mal que ça. Le souci, c’est qu’on paie ça avec un nombre absolument dingue de dépendance nécessaire.

Mais l’histoire de ce choix est, en réalité, un peu plus complexe que ça. 

Un truc que fait très bien Astro, c’est la génération d’un build statique (du pur HTML/CSS avec un très peu de javascript côté client). Et ça, pour le coup, j’aime bien, car ça me rappelle le côté exécutable, presque ennuyeux, prêt à l’hébergement sur un bucket (par exemple), avec 0 dépendances côté serveur et des performances forcément extraordinaires.

Le seul “soucis”, c’est que c’est complexe à mettre en place quand on a du contenu dynamique. On n’a ici pas des masses de choix :

La deuxième solution ne me plait guère, car cela veut dire que si on veut implémenter un rate-limit pour protéger et monétiser notre API, les conséquences seront subies côté client (ou alors, on ajoute un BFF, mais ça nécessite une autre app et donc de la complexité), et qu’on va nécessairement perdre de la performance et donc l’intérêt d’un build statique.

Donc, je suis plutôt partisan ici de la première solution, sauf que c’est quand même assez compliqué à mettre en place, surtout qu’on a, en plus, un moteur de recherche à implémenter (oui, des solutions pour le build statique existent, mais on verra plus tard !).

Limités par le temps et les ressources de développement, on va donc la jouer interprété côté serveur, avec les technos qui permettent de générer un static, et on migrera vers cette solution par la suite, ça, c’est certain.

Et PHP alors ?

Croyez-moi bien qu’avec mes 8 ans d’xp en développement PHP/Symfony (et j’adore le langage depuis sa version 7), cette piste a été étudiée, finalement rejetée, car j’avais envie d’expérimenter d’autres choses, principalement pour ouvrir mes chakras (bien qu’elle fonctionne très bien !).

De plus, pour la génération de build statique (qui est, rappelons-le, notre cible idéale), on a des solutions qui sont, selon moi, bien moins éprouvées que côté NodeJS. Et de toute façon, on a de l’interactivité forte côté UI, donc on aura forcément besoin de JavaScript.

Le Backoffice

Ce qu’on a dit jusqu’à présent, c’est super, mais il faut quand même à un moment pouvoir administrer nos données, car ça ne se fait pas tout seul (dommage…).

Et bon, ouvrir un éditeur de base de données et faire les modifs comme ça, directement en prod, c’est bien nature, un peu trop à mon goût.

Le p’tit soucis, c’est que faire un back-office, c’est pénible car :

Si seulement il existait des solutions qui permettent de faire du drag & drop de composants, de gérer l’authentification et les droits des utilisateurs, de créer des formulaires en 4 clics, plug & play sur n’importe quelle API, ça serait vraiment cool pour notre use case !

Ah, mais si ça existe et ça s’appelle Retool !

Grâce à cet outil et à sa version gratuite, on a pu monter un BO en quelques jours, autour des endpoints d’écriture de notre API. Sa base est solide pour faire des formulaires et des listings simples, sur les résultats de notre API. On définit les endpoints, on map les champs sur les inputs et pouf, ça marche.

Après, il y a quand même des désavantages par rapport à un BO développé maison, certaines choses m’ont bien frustré, comme l’absence de gestion avancée des images par exemple, car le système ne propose qu’un bête input d’upload de fichier, exit donc les jolis croppers et les résolutions fixes en fonction du champ.

Une infra (plutôt) simple

Avant de terminer cet (long) article, j’aimerais tout même partager quelques mots sur l’infra choisie pour l’hébergement du projet.

Étant très sensible à la philosophie Dev Ops, mais avec des connaissances limitées en Infra as Code (IAC) et en administration réseau, j’avais tout même envie d’un environnement propre avec, surtout, de la facilité au niveau du déploiement. L’IAC puisqu’on en parle, est, selon moi, l’un des aspects les plus importants à mettre en place, parce qu’elle constitue une description exhaustive de ce qui est online.

Côté hébergement, cela fait maintenant quelques années également que j’évolue dans des environnements “cloud”, où l’approche budgétaire et la grande flexibilité sous-jacente permettent d’appliquer l’agilité et l’itération plus facilement au domaine du système, notamment encore fois, lorsque les forces vives sont réduites. Il était donc naturel pour moi d’implémenter ces outils pour Solertia.

Le Cloud de Scaleway

Etant plutôt à l’aise avec les services d’AWS, j’ai également voulu innover, et de tester les services de Scaleway, qui est européen par nature.

On retrouve tout ce qu’il faut pour construire ce que l’on désire ici :

Comme décrit plus haut, j’aime itérer et faire vivre l’architecture, ici, on ne présente que ce qui propulsera le MVP. Il est possible que cela change dans le futur (pourquoi s’en priver ? c’est un des aspects sympa qu’offre le cloud).

Docker couplé avec une CI/CD chez Gitlab

Bon c’est super tout ça, mais je n’aime pas spécialement l’idée de construire mes images docker sur mon poste et de les mettre en prod via la console UI de Scaleway.

Fort heureusement, nous utilisons Gitlab, qui avec sa puissante et beginner-friendly CI/CD m’a permis de mettre en place, pour les deux projets :

Le cycle quant à lui est honteusement simple : À chaque nouvelle branche, la CI nous dit si c’est bien (ou pas, très objective qu’elle est), et à chaque nouveau tag sur main, ça déploie.

La full picture

Pour conclure, ce qu’il va falloir améliorer

Voici une mini-liste non exhaustive de ce que j’ai mal/pas fait, et que j’aimerais donc pousser par la suite :

Merci de m’avoir lu !

Écrit par Antoine Belluard – Responsable technique chez Rhapsodies Digital, j’ai une dizaine d’années d’expérience dans le développement informatique. Passionné par la programmation et la technologie, et poussé par un fort impostor-syndrome, je suis en apprentissage continu.

API

API & SECURITE – Du SI au RSSI

API & SECURITE - Du SI au RSSI

29 octobre 2024

Architecture

Thomas Jardinet

Manager Architecture

Cet article a eu en primo-inspiration mon sentiment qu’IT et Cyber travaillent malheureusement de manière trop souvent silotées. Avec des contraintes de sécurité souvent mal abordées ou insuffisamment partagées. Inspiration également au travers de rencontres de personnes travaillant dans le Cyber, qui peut-être se reconnaîtront. 

En effet, la sécurité des API, côté IT, est souvent perçue comme un sujet couvert à partir du moment ou l’on gère bien l’authentification, les droits, et qu’on utilise une API Gateway. Oui bien sûr cela est nécessaire. Mais penser sécurité des API, au regard de ce que ce sujet implique, c’est penser un gros pan de la sécurité de son SI.

Ne venant pas du monde du Cyber, cet article n’aura comme seule prétention d’essayer de se faire rencontrer ces deux mondes. En abordant tous les aspects que la sécurité des API peut couvrir. Et évidemment, cet article est une invitation à vous rapprocher de vos équipes Cyber ! Et de vous fournir une liste de courses aussi synthétique que possible pour échanger entre équipes IT et Cyber. Mais un peu longue quand même. D’où le formalisme très concis choisi pour cet article.

Pour se faire, nous allons dans un premier temps expliciter les risques que nous identifions, pour ensuite aborder la sécurisation des API sur toute leur chaîne de valeur, du DevSecOps aux WAF d’API (WAAP pour Web Application and API Protection). Pour ensuite offrir un panorama de technologies, et enfin finir avec des préconisations. Sur ce, on y va !

Pourquoi la sécurité des API est-elle cruciale ?

  1. Les données exposées sont très souvent sensibles : Les API renvoient souvent des données confidentielles, rendant leur protection indispensable.
  2. C’est un vecteur d’attaque privilégié : En tant que point d’entrée unique des données,  les APIs sont des points d’attaque de choix.
  3. Leur complexité est croissante : L’évolution des architectures (microservices, coud, service mesh, …) peut augmenter la surface d’attaque potentielle.
  4. Les API doivent respecter le cadre réglementaire : RGPD, PCI DSS, PSD2, etc…, autant de réglementations qui exigent une exposition sécurisée des API.

Cela n’arrive qu’aux autres? Et bien non. 

2019. Facebook. Fuite de données concernant 540 millions d’utilisateurs à cause de serveurs non sécurisés et accessibles via des API.

2018. Twitter. Une mauvaise gestion des autorisations d’accès a rendu disponibles les messages privés de certains utilisateurs.

Maintenant que ces enjeux sont rappelés, nous allons détailler les risques et solutions.

API
Source : StartUp Stock Photo, Pexels

I. Les risques majeurs liés à la sécurité des API

1.1 Vulnérabilités courantes des API

1.1.1 Injection de code

L’injection de code est l’une des menaces les plus connues, avec 

Mais aussi par commandes avec l’exemple pas si ancien de la faille Log4J.

1.1.2 Authentification et autorisation inadéquates

Il est primordial d’avoir une politique d’authentification et d’autorisation bien appliquée afin de bloquer au mieux les attaquants. On peut retenir comme principes : 

1.1.3 Exposition de données sensibles

Les API peuvent involontairement exposer des données sensibles et inutiles si elles ne sont pas correctement définies, configurées ou sécurisées. Les cas typiques sont  :

Les erreurs sont mal gérées : Messages d’erreur révélant des informations sensibles sur l’infrastructure.

1.2 Menaces émergentes et sophistiquées

1.2.1 Attaques par force brute et credential stuffing

Stratégie largement connue, consistant à tester des combinaisons de noms d’utilisateur et de mots de passe. Elles sont aussi simples à parer que particulièrement dangereuses car :

1.2.2 Attaques « Man-in-the-Middle » (MITM)

Une attaque MITM consiste à ce que l’attaquant se place entre le client et l’API Gateway pour intercepter ou modifier les échanges. Les risques incluent :

1.2.3 Attaques DDoS

Ces attaques consistent à avoir un très grand nombre d’appels, afin de rendre indisponible l’API. Elles peuvent prendre plusieurs formes :

1.3 Risques spécifiques aux architectures modernes

1.3.1 Microservices et conteneurisation

La conteneurisation et les microservices ajoutent de nouveaux défis de sécurité :

L’exposition accrue des API internes : Les API internes ne doivent absolument pas être exposées en externe !

1.3.2 API dans le cloud

Le déploiement d’API dans des environnements cloud présente des risques spécifiques :

1.3.3 Shadow API et API zombies

Les « shadow API » (non documentées ou non gérées) et les « API zombies » (obsolètes mais toujours actives) représentent des risques significatifs :

Les Accès non contrôlés : Il ya alors un risque d’exploitation par des attaquants sur des systèmes ou des données sensibles.

II. Stratégies et solutions pour sécuriser efficacement les API

2.1 Approche globale de la sécurité des API

2.1.1 Sécurisation de l’API via DevSecOps

L’approche DevSecOps permet de sécuriser une API en amont de son déploiement, via :

La gestion continue des vulnérabilités : Code, librairies, dépendances, etc… Tous ces éléments peuvent faillir ou contenir des failles découvertes après coup. Il faut donc les détecter et les corriger.

2.1.2 Gouvernance et politiques de sécurité des API

Que serait-on sans gouvernance ? C’est évidemment un point primordial, sur lequel on sera particulièrement vigilant sur les aspects suivants  :

Des audits réguliers : Afin d’évaluer de manière continue la conformité des API aux politiques de sécurité.

2.1.3 Formation et sensibilisation des équipes

La sécurité des API repose en grande partie sur les compétences et la vigilance de toutes les équipes, qu’elles soient devops, cyber ou dev :

Une culture de la sécurité : En encourageant à signaler et à résoudre les problèmes de sécurité.

2.2 Technologies et outils de sécurisation des API

2.2.1 API Gateways et Web Application and API Protection (WAAP)

Les API Gateways (et leurs cousins service mesh et micro-gateway) et les WAAP (WAF pour API, si vous préférez) représentent la première ligne de défense :

Et en analysant le trafic : En détectant et en bloquant les comportements suspects.

2.2.2 Solutions de gestion et de protection des API

D’autres outils spécialisés existent, qui ont des fonctionnalités avancées pour la sécurité des API :

Solutions de conformité réglementaire : Afin de démontrer la conformité aux règlements de sécurité.

2.2.3 Outils d’analyse de la sécurité des API

Des outils dédiées existent également pour déterminer des failles spécifiques aux API :

Outils d’analyse statique et dynamique : Il existe des SAST et DAST adaptés aux API.

2.3 Meilleures pratiques de sécurisation des API

2.3.1 Authentification et autorisation robustes

2.3.2 Centralisation et découpage des API Gateway

Une API Gateway est à placer idéalement de manière centrale dans son architecture pour ne pas multiplier les points d’entrée. On peut néanmoins avoir deux API Gateway, une “publique” et une autre “privée” afin de mitiger les risques au mieux :

2.3.3 Chiffrement et protection des données

2.3.4 Gestion des logs et audit

2.3.5 Surveillance en temps réel

2.3.6 Tests de pénétration et validation de la sécurité

Conclusion

Comme on peut le voir, la sécurité des API demandent des compétences dans diverses équipes, mais également un engagement de tous. Des solutions informatiques existent, mais elles ne sont rien sans une politique de sécurité partagée à tous et pour tous. Et aussi et surtout l’établissement des bonnes pratiques définies en interne, comme nous l’avons partagées dans cet article. 

Pour aller plus loin, on pourra aussi se reporter au RGS de l’ANSSI (https://cyber.gouv.fr/le-referentiel-general-de-securite-rgs), mais aussi faire de la veille sur les outils de découvertes d’API, l’utilisation de l’IA pour la sécurité, et bien sur aller faire un tour sur l’OWASP API Security Project (https://owasp.org/www-project-api-security/)

Devops, Dev, RSSI, c’est à vous !

Articles qui pourraient vous intéresser

design system

Le design system qu’est ce que c’est, pourquoi l’adopter ?

Le design system qu’est ce que c’est, pourquoi l’adopter ?

23 octobre 2024

Rhapsodies Digital

Christophe Roselmac

Responsable design Rhapsodies Digital

L’adoption d’un design system est une décision qui nécessite une compréhension approfondie des besoins de l’entreprise et une communication efficiente avec la sa direction. Dans cet article nous allons apporter notre définition à ce qu’est un design system et les gains qu’il peut apporter à une stratégie globale.

Que suppose l’adoption d’un design system ?

Référence centrale pour tous les projets de conception, le design system est le langage commun entre les designers et les développeurs. Il permet de simplifier le travail des équipes tout en préservant une harmonie dans l’expérience utilisateur et une cohérence visuelle.

La mise en place d’un design system est avant tout un travail de compréhension des besoins, des enjeux et de communication entre les équipes.

La compréhension des besoins passe par une recherche approfondie pour analyser les spécificités des produits existants, identifier les problèmes de cohérence et mesurer l’impact sur l’expérience utilisateur.

L’évaluation des enjeux passe par une compréhension des contraintes budgétaires, des ressources disponibles ou encore de l’analyse de la concurrence afin de savoir à quoi nous faisons face. Cela permettra d’être certain qu’un design system est la solution appropriée à mettre en place.

Cette évaluation des enjeux doit être partagée avec la direction de l’entreprise en mettant en évidence les avantages potentiels qu’apporteront l’adoption d’un design system pour améliorer l’efficacité globale.

Des impacts concrets sur le ROI peuvent être mis en avant, comme l’économie des coûts de développement, de réduction du temps de mise sur le marché ou encore l’amélioration de l’expérience utilisateur et constituent autant d’arguments pour des décideurs quant à son adoption.

Le choix de mettre en place un design system est une décision stratégique, tout en étant un projet à part entière qui vit et évolue au rythme de la production de l’entreprise. Cette dernière peut réaliser des gains significatifs en termes d’efficacité et d’efficience des équipes grâce à la cohérence générale de l’organisation et des produits qui en découlent.

À quel moment se demander si un design system peut être utile ?

Chaque projet a ses particularités et suit des phases d’évolutions depuis sa création. Il peut exister plusieurs contextes spécifiques où il y a une nécessité d’établir des normes et des ressources pour la conception cohérente d’interfaces.

Les deux premiers moments clés où un design system devient pertinent sont lors de la croissance de l’entreprise et/ou de son produit et lors du constat de la répétition et de la redondance d’éléments de design.

En effet, la multiplication des types d’écrans et de pages lorsqu’un produit devient plus complexe peut être facilité grâce à un design system aidant à maintenir la cohérence visuelle et fonctionnelle.

L’augmentation de l’équipe de conception peut également initier la mise en place d’un design system, concentré sur des directives claires et des composants standardisés facilitant l’intégration de nouvelles personnes rejoignant l’équipe.

La répétition et la redondance peuvent être drastiquement réduites grâce à la centralisation d’éléments dans un design system. Il sera important de consacrer du temps à sa mise en place, quand on constate que les mêmes design sont recréés dans différentes sections d’un produit ou différents projets.

Enfin, si différents membres de l’équipe produisent des design qui ne sont pas uniformes, un design system permettra d’harmoniser les styles et les éléments.

Les autres moments importants ou un design system devient indispensable sont lors de phases d’évolution importante de l’entreprise et/ou son produit, voici quelques exemples :

La migration technologique : lorsqu’un produit évolue vers un nouveau produit ou un nouveau framework, un design system à toute sa pertinence pour aider l’intégration des nouveaux composants tout en maintenant la cohérence. Cela va de paire avec de nouvelles normes de conception fournissant une base pour appliquer ces changements de manière uniforme à travers le produit.

Améliorer la collaboration : dans les environnements de travail avec des équipes interfonctionnelles ou dispersées géographiquement ou encore suite à l’intégration de nouvelles équipes suite à une acquisition, un design system fournit un langage commun, des ressources partagées et facilite la standardisation et une meilleure collaboration.

Optimiser les process de conception et développement : une documentation centrale pour la formation et la conformité avec les standards de conception issus d’un design system permet de réduire des temps de développements des nouveaux composants et style en réutilisant les éléments existants.

Vous l’aurez compris, le design system est un outil puissant et devient incontournable lorsqu’une organisation nécessite une approche systématique pour maintenir la cohérence, améliorer l’efficacité et faciliter la collaboration entre différentes équipes. Le design system devient particulièrement pertinent lorsque les défis de cohérence et de gestion de l’interface et de l’expérience nécessitent une solution structurée.

data lakehouse

DATA Lakehouse – Exploration d’une Architecture de plateforme de données innovante

DATA Lakehouse - Exploration d'une Architecture de plateforme de données innovante

22 octobre 2024

Architecture

Mohammed Bouchta

Consultant Senior Architecture

Après avoir introduit les concepts fondamentaux d’un lakehouse dans notre précédent article, plongeons maintenant dans les détails qui font du lakehouse une solution d’architecture alignée sur les principes d’une modern data plateform.

Nous allons explorer son fonctionnement interne et les technologies clés qui le soutiennent.

data lakehouse
Source : Pexels – Tima Miroshnichenko

Fonctionnement d’un Lakehouse

L’architecture lakehouse représente une évolution significative dans le traitement et la gestion des données, cherchant à harmoniser les capacités de stockage d’un datalake avec les fonctionnalités analytiques et transactionnelles avancées d’un data warehouse. Cette convergence vise à créer une plateforme flexible, capable de gérer à la fois l’analyse de données historiques et les opérations transactionnelles, sans faire de compromis sur la performance, la sécurité, ou la qualité des données.

Rôle des métadonnées

Au cœur de cette innovation, l’usage stratégique des métadonnées joue un rôle prépondérant, orchestrant avec la gestion des schémas de données et leur évolution.

Les métadonnées, dans l’écosystème lakehouse, ne se limitent pas à la gouvernance et à la qualité des données, bien que ces aspects soient importants, notamment pour soutenir des transactions fiables. Elles permettent également d’indexer de manière efficiente les données susceptibles d’être requises, facilitant ainsi leur accès et leur analyse. 

Cette architecture assure que, même au sein d’un stockage de données bruts et diversifiées, l’information pertinente peut être rapidement localisée et exploitée.

Système de stockage 

Le lakehouse exploite les avantages économiques du stockage en DataLake, tel que le système de fichiers distribués HDFS ou les solutions de stockage objet dans le cloud, comme Amazon S3 et Azure Blob Storage. Ces plateformes de stockage, reconnues pour leur coût-efficacité, en grande partie grâce à la séparation du stockage et du calcul, sont complétées par une couche sémantique riche, pilotée par les métadonnées. Cette couche ne se contente pas de cataloguer les données; elle améliore aussi leur traitement et facilite leur accès, optimisant de ce fait l’efficacité générale de la plateforme.

Gestion transactionnelle des données

La fusion réussie de ces éléments au sein d’une architecture lakehouse repose sur l’intégration de principes transactionnels rigoureux, tels que l’atomicité, la cohérence, l’isolation, et la durabilité (ACID). Ces principes sont essentiels pour garantir la fiabilité et l’intégrité des données, permettant de s’appuyer sur le lakehouse pour des opérations critiques sans craindre de compromettre la qualité ou la sécurité des informations traitées.

Meilleure performance qu’un Datalake

Par ailleurs, pour ce qui est de l’amélioration des performances, le lakehouse intègre des mécanismes de mise en cache avancés. Ces systèmes sont conçus pour précharger en mémoire les données les plus sollicitées, accélérant ainsi significativement le temps d’accès et la réactivité de la plateforme.

Technologies Clés

La réalisation d’un lakehouse repose sur des technologies avancées qui permettent de surmonter les défis traditionnels posés par les datalakes et les data warehouses offrant une flexibilité, une fiabilité et des performances accrues pour la gestion et l’analyse des données à grande échelle.

Voici un aperçu de ces technologies clés :

Delta Lake

Delta Lake est une couche de stockage open source conçue pour apporter la gestion transactionnelle ACID aux datalakes. Cette technologie transforme un datalake en un système capable de gérer des opérations de lecture et d’écriture concurrentes, garantissant ainsi l’intégrité des données. Avec Delta Lake, les utilisateurs peuvent effectuer des mises à jour, des suppressions, des insertions, et même des merges (fusion de données) directement sur les données stockées dans un datalake, tout en maintenant un historique complet des modifications. Cela permet une gestion des données plus flexible et robuste, facilitant des cas d’utilisation comme le rollback pour corriger des erreurs ou auditer des modifications. De plus, Delta Lake optimise les requêtes en utilisant le « data skipping » (saut de données non pertinentes), améliorant ainsi la vitesse d’analyse des vastes ensembles de données.

Apache Hudi

Apache Hudi (Hadoop Upserts Deletes and Incrementals) est une autre technologie open source qui révolutionne la gestion des données dans les datalakes. Elle permet des mises à jour et des suppressions rapides, ainsi que des insertions et des requêtes incrémentielles sur de grands ensembles de données. Apache Hudi introduit le concept de « views » (vues) de données, permettant aux utilisateurs de voir des snapshots des données à un moment choisi ou des changements sur une période, rendant ainsi possible la gestion de versions et le time travel (navigation temporelle dans les données). Cette capacité à gérer des modifications de données de manière efficace rend Hudi particulièrement adapté aux environnements où les données changent fréquemment, supportant des cas d’utilisation tels que la capture de données modifiées (Change Data Capture, CDC) et les pipelines de données en temps réel.

Apache Iceberg

Apache Iceberg est un format de table open source qui vise à améliorer la gestion et les performances des requêtes dans les datalakes. 

Iceberg traite de nombreux problèmes rencontrés avec les formats de fichiers traditionnels et les modèles de métadonnées dans les datalakes, tels que la complexité de gestion des schémas évoluant dans le temps ou les problèmes de performance des requêtes sur de grandes tables. 

Avec Iceberg, les tables sont traitées comme des entités de première classe, supportant des fonctionnalités avancées telles que les schémas évolutifs, les partitions cachées, et les transactions atomiques. 

Le format est conçu pour être agnostique au moteur de calcul, permettant ainsi son utilisation avec diverses plateformes d’analyse de données, telles que Spark, Trino et Flink. 

Iceberg optimise également les performances des requêtes en utilisant un indexation fine des données, ce qui réduit le volume de données scannées lors des analyses.

Conclusion

En conclusion, le lakehouse émerge comme une solution hautement performante et flexible qui étend la portée et les capacités d’un datalake en combinant le stockage économique des datalakes avec les capacités d’analyse et de gestion transactionnelle des data warehouses, tout en exploitant intelligemment les métadonnées pour la gouvernance, l’indexation, et l’optimisation des accès sans pour autant éclipser le rôle stratégique que peut jouer un datahub dans l’écosystème global de gestion des données au sein du système d’information.

Articles qui pourraient vous intéresser