Cloud Computing
Savoir définir le cloud
Le cloud, de nos jours assez répandu, consiste de manière simple à accéder à des services depuis internet, qu'il s'agisse de stockage, de mails, musique, etc... Une mise en garde est posée concernant la vie privée; de plus, la question de l'existence future des ordinateurs personnels est posée.
Définition du NIST :
- cloud
- Le cloud computing est un modèle pour permettre de manière ubiquitaire, pratique, à la demande l'accès par le réseau à un parc de ressources informatiques partagées et configurables (par exemple des réseaux, des serveurs, du stockage, des applications et des services) qui peuvent être rapidement provisionnés et libérés avec un effort de gestion minimal ou sans interaction avec le fournisseur.
Fournisseurs
Il existe de nombreux fournisseurs : Amazon, Google, OVH, etc... Tous ont 3 points en commun :
- Les fournisseurs de cloud opèrent à grande échelle, et font ainsi des économies (d'échelle).
- Ils ont des savoirs-faire standardisés dans un produit dédié.
- La disponibilité des services est "à la demande", que ce soit pour quelques minutes ou pour plusieurs années. Le tout se fait sans coûts d'investissement.
NIST
Le NIST (National Institute of Standards and Technology) est une institution américaine en charge de promouvoir l'innovation. En plus de leur définition du cloud citée plus haut, donne 5 caractéristiques :
- Service à la demande
- Accès réseau global : accès par des mécanismes standards, via le réseau
- Mise en commun des ressources : le client n'ayant généralement pas le contrôle de l'emplacement de ses ressources, on peut mettre en commun les clients sur une seule ressource et les allouer au besoin (c'est ce que l'on appelle un modèle "multi-tenants").
- Élasticité rapide : Les capacités peuvent être facilement provisionnées ou relâchées, selon le besoin ou la demande.
- Service mesuré : Les systèmes cloud contrôlent et optimisent automatiquement l'usage des ressources en s'appuyant sur des systèmes de mesure.
Pour résumer
Sans reprendre l'analogie des bananes, ont peut dire que "le cloud computing est le supermarché de l'informatique" : faciole d'accès, avec une offre étoffée, et des tarifs transparents. Le modèle mutli-tenants rend possible le fait d'apporter une solution aux problèmes de chacun.
Notion de DevOps
- DevOps
- Le DevOps est la personne en charge de faire le pont entre le produit et le Cloud, il est en relation directe avec les développeurs et doit faire son possible pour rendre leurs tâches le plus simples possible en automatisant au maximum son environnement.
Cette notion devient de plus en plus importante dans l'administration système : l'administrateur est amené à travailler avec des développeurs et d'adopter leurs méthodes. On parle d'"Infrastructure as code", dans laquelle nous codons notre infrastructure et son déploiement.
Providers
Sans rentrer dans les détails, les plus gros providers sont :
- Google : avec son infrastructure mondiale, son prix très compétitif et la grosse évolution présente sur sa plateforme
- AWS : Leader mondial, en évolution continue avec un énorme écosystème
- Azure : Facile à intégrer avec les services Microsoft, permet la migration simple d'un parc Windows et une grosse évolution sur celui-ci.
Il en existe d'autres : Linode, Heroku, DigitalOcean; et en France : OVH, Scaleway...
Enfin, concernant le cloud privé, Openstack est le grand leader. Il est gratuit, opensource et peut prendre la main sur l'infra pour contrôler les serveurs physiques déjà présents.
Connaître les principaux services
VM
Je ne vais pas résumer ici ce qu'est une machine virtuelle; il est bien sûr possible d'en créer dans le cloud.
Panorama des services
Le cloud étant le supermarché de l'informatique, la question de savoir quels sont les rayons permet de savoir quoi chercher. Plusieurs choses sont disponibles :
- Temps de calcul (compute) : exécuter du code
- Persistance (Persist, Storage, Database) : stocker des données pour plus tard
- Réseau : Connecter des services entre eux
- Gestion (Management) : Supervision de nos services
- Intelligence (Machine learning, AI, NLP) : Profiter de procédés ou de données à valeur ajoutée d'une autre entreprise
- Application (SaaS) : Fournir des applications sans installation ni maintenance.
Sans surprise, il s'agit de métiers déjà familiers dans le monde de l'informatique. Nous allons détailler quelques services.
IaaS (Infrastructure as a Service)
Principes :
- Service de plus bas niveau dans le modèle cloud.
- Le fournisseur Cloud, livre un parc informatique virtualisé comprenant : machines virtuelles, serveurs de fichiers, stockage des données , pare-feu, les équilibreurs de charge, les adresses IP, les réseaux locaux virtuels, etc.
- L’installation et mise à jour de l’OS et autres logiciels sont sous la responsabilité de l’utilisateur.
Avantages :
- Extensible
- Facturé à l'utilisation
- Résilient
- Sécurité physique
- multi-tenant
Amazon AWS: Utilisé par SNCF , The Guardian, Amazon store Windows Azure, OVH, Rackspace open cloud, IBM SmartCloud, HPE Converged Infrastructure.
PaaS (Platform as a Service)
Principes :
- L’OS ,les logiciels et services d’infrastructure ainsi que tout l’environnement d’exécution applicatif(Serveur Web, Base de données, etc.) sont livrés en plus des composants IaaS.
- L’utilisateur installe ses applications et ses outils.
- Accès aux ressources PAAS via une console web.
Avantages :
- Développement simplifié et accessible
- Flexibilité
- Sécurité
- Très prises par les entreprises consommatrices de standards
Les avantages sont nombreux, mais attention au risque de dépendance au fournisseur!
Principaux fournisseurs: AWS Elastic Beanstalk, OpenShift de Redhat, Google app engine, Caspio, Microsoft Azure.
Les différentes couches du cloud

Exemples d'architecture cloud
Hybride
Ici, on se repose sur le cloud seulement pour les fortes charges, afin d'assurer la disponibilité du service.

FullCloud
Cloud et services managés uniquement, ici.

Serverless
Ici, nous n'avons plus du tout de serveur, mais uniquement des services managés.

Sécurité et risques
Lois et règlementations
Le Patriot act
- Loi anti-terroriste signée par le congrès américain en Octobre 2011 et qui autorise l’administration américaine à accéder à toute donnée informatique détenue par les particuliers et les entreprises sans autorisation préalable et sans en informer les utilisateurs.
- Elle s’applique aux données hébergées (ou transitant) sur des serveurs situés sur le sol américain, et sur toutes sociétés de droit américain et ses filiales partout dans le monde.
Le RGPD (Règlement général sur la protection des données)
- Nouveau texte européen renforçant la protection des données à caractère personnelle au sein de l’union européenne.
- Règlement adopté en avril 2016 et applicable à compter du 25 mai 2018
- Les changements : Le droit à l’effacement, application extraterritoriale, profilage, sanction plus importante en cas de non respect (4% du CA mondial annuel), Le droit à la portabilité des données personnelles, un cadre harmonisé.
LPM (Loi de programmation militaire)
- Loi du 18/12/2013 promulguée suite aux orientations fixée par le livre blanc sur la défense et la sécurité nationale 2013
- L’article 22 prévoit l’adoption de mesures de renforcement de la sécurité des opérateurs d’importance vitale et confère à l’ANSSI de nouvelles prérogatives : l’agence, pourra imposer aux OIV des mesures de sécurité et des contrôles de leurs systèmes d’information les plus critiques.
- OIV: Organisme d’importance vitale. Secteur Etatique (Activité civile , militaire, judiciaire), Secteur de la protection des citoyens (Santé, gestion de l’eau , alimentation) , Secteur de la vie économique et sociale de la nation ( Finance, Energie, industrie , transport, audiovisuel )
ISO27001
- Norme internationale publiée en 2005 et révisée en 2013 décrivant les exigences pour la mise en place d’un système de gestion de la sécurité de l’information.
- L’objectif est de protéger les fonctions et informations de toute perte, vol ou altération, et les systèmes informatiques de toute intrusion et sinistre informatique.
- La norme 27001 comporte 11 chapitres ; les exigences qu'ils contiennent doivent être respectées pour obtenir une certification.
Architecture
Application
- Service d’identification et d’authentification
- Accès à la donnée
- Vulnérabilité du code /API
Machines virtuelles
- Firewall local
- Antivirus
- Sécurisation des accès (VPN, tunnel SSH)
- CPU, Mémoire, OS
Hyperviseur
- Réseau virtuel (Ségrégation environnement développement vs production)
- Gestion des API de contrôle de la VM( Portabilité , contrôle de l’état)
Système d’exploitation
- Gestion des patchs
Stockage hardware et donnée
- Chiffrement de la donnée
- Gestion des clés
- Sécurisation des bloc de données
- DLP (Data loss prevention): outil permettant à l’entreprise de protéger ses données. (serveur de gestion centralisé)
- Service de destruction ou restauration de la donnée
Réseau
- Sécurisation des accès VPN
- Isolation réseau (Firewall , DMZ)
- Sécurisation des bloc de données
- DLP (Data loss prevention): outil permettant à l’entreprise de protéger ses données. (serveur de gestion centralisé)
- Système de détection et de prévention d’intrusion (sonde IPS/IDS)
- Sécurisation des services de transport(TLS , Ipsec)
- Sécurisation des messages (flux chiffré)
- Sécurité des datacenters
Attaques possibles
- Déni de service: indisponibilité d’un service par une surcharge réseau ou une perturbation des connexions.
- Attaque par balayage de port : découverte de ports ouverts et exploitables depuis l’extérieur. Attaque simultanée avec fort impact.
- Injection de maliciel.
- Piratage de compte en ligne
Risques
Risque organisationnel
- Vendor lock-in
- Perte de maîtrise et de gouvernance de son SI
- Challenge sur la conformité
- Fin d’activité d’un prestataire
Risque technologique
- Attaque malicieuse
- Compromission de la console de gestion
- Data leakage
- Perte des clés de chiffrement
- Isolation réseau faible ou cassée
Risque Juridique
- Changement de juridiction
- Licensing
Bonnes pratiques
- Sécuriser le compte maître
- Le mieux est de compartimenter au maximum les différents comptes, et utiliser la 2FA. Éviter les comptes communs, le 1FA, le monocompte...
- Gestion du firewall
- Dans le cloud un firewall est un groupe de sécurité, ceux ci permettent de définir les access a nos différentes ressources. Les groupes de sécurité sont des pare-feu couplés à un commutateur; l'objectif est de créer des rôles par instance, avec chacun ses propres règles. Dans le cloud, chaque flux (même dans un sous-réseau) passe par le firewall.
- AZs(Zones de disponibilité)
- Une AZ est en gros un groupe comprenant une ou plusieurs instances. Il permettent de répartir les données sur plusieurs datacenters et d'augmenter la résilience de l'application. Le traffic inter-AZ est souvent plus rapide (lien dédié) et parfois gratuit.
Les outils du DevOps
Méthodes de déploiement
Le blue-green

Le blue green est une technique basique de gestion d'une production, nous avons un routeur (Load balancer) en frontal de notre application pour switcher le traffic entre deux chaines de production. si nous souhaitons mettre a jour une application au niveau n + 1 nous le faisons sur l'environment blue, alors inactif. Une fois la mise a jour faite nous faisons passer le traffic vers cette nouvelle chaine.
En cas de problème nous pouvons ainsi revenir facilement sur l'environnement n -1 en faisant un retour arrière sur le routeur
A/B testing

Fonctionne comme le Blue-Green mais permet un déploiement progressif des utilisateurs vers la nouvelle version pour tester son fonctionnement en production; cette solution n'est pas compatible avec toutes les applications car elle demande d'avoir 2 versions différentes de celle ci en production.
Features Flipping

Ici le code est mis à jour en continu sur la production mais les nouveautés peuvent être activées ou désactivées a la demande, c'est la solution la plus moderne mais la plus difficile a mettre en place.
Automatisation
Il existe de nombreux outils :
- La suite Hashicorp
- Leader, basée sur Ansible. Permet d'automatiser toute la chaîne de déploiement.
Elle comprend :
- Consul
- Consul est un annuaire de service et permet de stocker des informations de type key = value, il permet l'infrastructure de savoir de quoi elle est composé, c'est aussi un manager de configuration et un service de verification de santé.
- Vault
- Vault permet de garder nos secrets en dehors de notre code ( mot de passe, données sensibles) il permet de gérer les droits.
- Nomad
- Orchestrateur, permet de gérer les conteneurs applicatifs. Gère par exemple un cluster Docker.
- Terraform
- La piece maitresse, Terraform permet de coder son infrastructure et donne tout son sens au mot DevOps, grace a lui nous pouvons définir des briques d'infrastructures (x serveurs, y base de données etc...) et Terraform va parler avec les providers pour les créer a notre place ! Il est compatible avec tous les providers vu dans ce cours et permet donc de faire une PRA, notre infrastructure tient maintenant dans un simple fichier de lignes de code et nous pouvons la deployer a la demande !
Bien sûr, Ansible permet beaucoup de choses de son côté.
De la même façon, nous pouvons coder nous-même avec des APIs pour contrôler le cloud. Les providers mettent à disposition des SDK (ou "interfaces programmatiques") , du code préfabriqué pour utiliser les ressources du cloud. On peut citer : *AWS-CLI Boto
- Azure-CLI
- Horizon
- GCloud
Monitoring
Outils personnalisables et 'In-House'
L'outils de visualisation le plus celebre est Grafana, il permet de visualiser nos datas en utilisant plusieurs sources de données, il permet aussi de créer des alertes sur nos metrics. Je le connais déjà.
SaaS
Il existe diverses solutions en SaaS, comme Newrelic et Datadog. ils nous permettent de ne plus avoir a gérer notre solution de monitoring et de ne pas nous inquiéter de la disponibilité de l'outils, ces outils sont généralement payants et chers.
Communication
Le point le plus important du monitoring est la communication en cas d'incidents, il est indispensable de créer une système que ne va pas nous inonder d'informations pour permettre d'avoir une réponse efficace en cas d'incident. Les outils de chat d'entreprise sont parfaits pour cette tache en permettant aux integrations de poster les incidents.
Des liens :