Archives pour la catégorie Architecture

APIs REST ouvertes : Considérations de sécurité et implémentation

Le site Programmable Web recense plus de 10000 APIs qui se trouvent au centre du web moderne. Ces APIs permettent d’intégrer différents services allant des réseaux sociaux à la cartographie en passant par des flux d’information, de l’analyse de données, de flux le multimédia …

Fort heureusement, le simple respect des bonnes pratiques de l’architecture du Web permettent d’en lever certains. Mais créer des API ouvertes (utilisables depuis n’import quel site web) comporte tout de même certains risques de sécurité qu’il faut prendre en compte.

Considérations de sécurité

L’attaque la plus typique que peuvent subir les API REST ouvertes et applé le « Cross Site Request Forgery ». Il s’agit du fait qu’un site utilise les données d’authentification stockées dans le navigateur pour appeler des APIs sécurisées à l’insu de l’utilisateur lui même. Voir exemple sur la page wikipedia dédie au Cross Site Request Forgery

De fait, les navigateurs web limitent fortement les possibilités qu’a une page HTML a faire appel à une URL ou une API qui n’est pas sur le même serveur source que la page HTML elle même. De fait, par défaut, si je suis sur la page www.toto.com/unepage.html, je ne pourrait lire www.mesinfosprivees.com/mes_secrets/list.html ni executer www.mesinfosprivees.com/mes_secrets/api/publier. Ce qui est une bonne chose.

CORS un vrai enabler pour les API ouvertes

L’approche se sécurité citée plus haut permet de protéger les informations et services privés de la CSRF, cependant, cela limite la possibilité de mettre en place des services ouverts qui peuvent être appelés par des domaines tiers. Ainsi, je ne pourrais pas dans www.toto.com/unepage.html afficher www.mesinfospubliques.com/mesannonces.html or c’est exactement ce que je souhaite pour les API ouverte.

Le CORS (Cross Origin Resource Sharing) est une norme, implémentée par la quasi totalité des navigateurs modernes et qui permet aux site qui héberge l’API d’autoriser l’accès aux APIs depuis d’autres domaines tout en gardant un certain niveau de contrôle.

Avant d’activer CORS : regarder la sécurité

Mettre en oeuvre CORS coté serveur est en soit relativement simple, le plus complexe est de s’assurer de la maîtrise de la sécurité contre le CSRF. Pour cela :

  1. Ignorer coté serveur d’API toute authentification implicite basée sur les Cookies.
  2. De forcer chaque appel d’API à comporter les informations d’authentification s’il n’est pas public.

Pour ce second point, le pattern le plus pratique est le Synchronizer Token Pattern, il s’agit de :

  1. Générer à l’issue de l’authentification une chaine aléatoire dite (token)
  2. Transmettre à chaque appel d’API se token. (Dans un header http, dans l’URL, dans le corps)

Par contre il est extrêmement important de protéger ce token correctement :

  1. Il ne faut pas qu’il apparaisse dans le DOM (c’est à dire dans le HTML de la page statique ou dynamique)
  2. Qu’il ne soit pas accessible depuis une variable globale.

L’idéal est de le stocker dans un module javascript.

Quelques liens utiles

La mobilité, le cloud, le big data : la révolution du SI est pour tout de suite.

Les ruptures technologiques peuvent impacter de façon importante le système d ‘d’information et son rôle stratégique dans l’entreprise. De la même façon que la démocratisation du PC qui a sorti l’informatique des centres de calcul a permis au SI de devenir un élément stratégique de la performance des métiers, divers experts prévoient une nouvelle révolution du SI à l’horizon 5 à 10 ans.

Une révolution complexe

Cette fois-ci il ne s ‘agit pas d ‘une technologie mais de la convergence de plusieurs tendances. Identifiées par IDC sous le nom de la 3ème plateforme et par Gartner sous le nom du Nexus of Forces, cette convergence concerne :

  • Le cloud en tant que possibilité nouvelle offerte directement aux directions métier de se fournir en services au delà des catalogues de la DSI. Plus en phase avec le rythme effréné des nouvelles technologies et facilement pris en main par la nouvelle génération de salariés, les services cloud mettent à mal la DSI qui doit sortir du rôle de mise à disposition d’application métier internes vers la mise en oeuvre maîtrisée d’un SI forcément ouvert vers le cloud.
  • La mobilité comme une fenêtre vers le cloud dans la poche des clients, des fournisseurs ou des salariés. Un véritable vecteur de performance des métiers et de relation client, la mobilité est aussi un challenge en terme de sécurité et d ‘interopérabilité.
  • Les médias sociaux comme une nouvelle façon pour les salariés de collaborer et une nouvelle façon pour l’entreprise d ‘interagir avec ses clients et partenaires, les médias sociaux permettent aussi de comprendre, mesurer et rester en phase avec les évolutions rapides de la société.
  • L’internet des objets et le BigData comme promesse, non seulement de disposer de données plus abondantes et plus précises sur l ‘entreprise et son environnement, mais aussi de pouvoir les analyser et les visualiser pour en extraire une information pertinente.

A l’entreprise de se préparer

Autant les éditeurs que les entreprises utilisatrices doivent intégrer dans leur feuille de route la préparation à cette révolution. Si bien que l’IDC rajoute à cette recommandation pour les éditeur « quit à cannibaliser leurs marché actuel », car de leur point de vue c’est une réelle redéfinition du paysage ou toutes les places sont remises en jeu, même celles des leaders.
De son côté l’Open Group a lancé le Forum Plateform 3.0 dont le but est de définir des standards et pratiques permettant aux entreprises de bien négocier ce virage. Ainsi, pour l’Open Group l’entreprise de demain doit se doter de Capacités nouvelles, dont :

  • Traiter des données dans le cloud en maîtrisant tous les aspects (réglementaire, sécurité …).
  • Intégrer des données de diverses sources y compris celles issues d’objets communicants ou des médias sociaux.
  • Gérer, partager et distribuer un gros volume de données.
  • Extraire et exploiter l’information utile depuis ces données.

Cela nécessite bien entendu de la préparation en amont et une réelle mutation de la façon de concevoir le rôle de la DSI et l’Architecture du SI, d’autant plus que le travail d’identification des fonctions nécessaires pour supporter ces capacités sont à définir et les briques techniques à même de fournir ces fonctions sont encore en maturation.