Introduction à la sécurité dans un
environnement docker/kubernetes/cloud
avec micro-services
Vincent Crépin
Avril 2018
Vincent Crépin
• Architecte logiciel passionné possédant plus de 25
années d’expérience
• Spécialisé en intégration, conception logicielle et
architecture cloud
• Intérêts prononcés en mobilité, sécurité et
DevOps
• A travaillé dans plusieurs grandes entreprises à
titre de conseiller en architecture
• Fondateur de Elapse Technologies
Approche
• Retour sur expériences vécues
• Présentation des outils utilisés et leur rôle
• Un peu d’architecture
docker/kubernetes/cloud
• docker est un logiciel open source qui permet
d'embarquer une application et ses dépendances
dans un conteneur.
• kubernetes est un système permettant
d'automatiser le déploiement, la montée en charge
et la gestion des applications de type conteneur.
• cloud est une plateforme permettant de
provisionner une infrastructure rapidement et
d’obtenir une facturation à l’utilisation.
Micro-services
(selon Martin Fowler)
• Approche permettant de développer une
seule application en tant qu’assemblage de
petits services, chacun s'exécutant dans son
propre processus et communiquant avec des
mécanismes légers, souvent via une API de
ressources HTTP.
Enjeux de sécurité
(résumé)
• Sécurité de l’environnement cloud
• Sécurité des containers
• Sécurité des micro-services
• Déploiements rapides et fréquents
• Automatisation
Solutions possibles
• gcloud
• IAM, IAP
• kubernetes
• docker (image scanner)
• Cloud Armor
• Forseti security
• Let’s Encrypt (TLS)
• Istio (network policies)
• Firebase (authentification)
• JWT (claims)
• Kong API Gateway (JWT, claims, rate limiting, bot detection)
• Configuration (spring cloud config, encryption)
• CI/CD (Jenkins, Spinnaker, static analysis, tests de pénétration, etc)
• NSP (Node Security Platform)
• Arachni
• Microservices
IAM-IAP
• IAM est la solution intégrée dans GCP pour gérer les
utilisateurs, comptes de service, rôles et accès
• IAP (Identity-Aware-Proxy) permet de sécuriser un url
hébergé dans GCP en forçant une authentification. Ex:
donner accès à la console de gestion kubernetes sur
internet.
• Ces deux solutions sont basées sur des comptes google
• Il est possible de synchroniser les comptes avec un AD
interne
IAP
Kubernetes
• Container engine (docker)
• Orchestration des déploiements
• API sécurisé pour contrôler la plateforme
• Environnement sécurisé à la base
– Authentification et autorisation pour la gestion
– Isolation des ressources
– Durcissement et sécurité réseau
– Journaux et audit
Docker image scanner
Container Registry Vulnerability Scanning
• Permet de détecter les vulnérabilités répertoriées
sur les OS des images
• Les actions correctives doivent être appliquées
dans les images de base
• S’intègre avec des outils de livraison continue
• Il est important de prendre en charge et limiter le
nombre d’images de base (signature, admission
controller) afin de conserver un certain contrôle
Cloud Armor
• Protection des services contre les dénis de
service et les attaques web
• S’intègre avec le loadbalancer de google
• Whitelist-blacklist
• Règles custom
Forseti security
• Projet open source pour assurer la sécurité de
GCP
• Permet de gérer les états de l’environnement
(snapshots)
• Permet de monitorer les politiques
• Assurer les configurations sécures de base de
GCP
• Avoir une visibilité sur les politiques IAM
Let’s encrypt
• Provisionnement automatisé de certificats TLS
• Tous les endpoints donnant accès au cluster
utilisent TLS et cela est provisionné lors du
déploiement
Service mesh
Istio
An open platform to connect, manage, and secure microservices
• Assurer une visibilité sur le service mesh
• Gérer la communication sécurisée à l’intérieur du
cluster
• Gérer le routage intelligent et le balancement de
charge
• Enforcement de politiques (rate limit)
• Télémétrie exhaustive des communications
• Circuit breaker
• Injection de fautes
Firebase
18
• Base de données temps-réel et fournisseur
d’identité
• Supporte plusieurs mode d’authentification
• Contient les utilisateurs et les rôles
• Solution intégrée avec GCP
JWT
• Standard qui définit une façon compacte et
self-contained de véhiculer de façon sécure de
l’information entre différents partis
• Authenticité basée sur une signature digitale
Kong API Gateway
22
• Intercepte tous les appels de services entrants dans le
cluster kubernetes. Constitue le seul point d’entrée vers les
services internes
• Effectue plusieurs tâches avec des intercepteurs (plugins)
– Vérification de l’authentification
– Vérification des autorisations (rôles)
– CORS
– Throttling
– Limite sur les requêtes et réponse
– Bot detection
– Etc.
Spring cloud config
• Permet d’externaliser et de gérer les
configurations des services/applications de
façon centralisée et sécuritaire
• Gestion des accès
• Encryption des secrets
CI/CD
Pipeline CI/CD
28
NSP
• Suite de produits et de services de sécurité
continue axée sur l'expédition et la
maintenance de logiciels NodeJS sécurisés
• Tout récemment acquis par NPM
• Inclus dans le pipeline
Arachni
• Framework pour scanner les applications web
(balayage de vulnérabilité dynamique)
• Inclus dans le pipeline de CI/CD
Micro-services (sécurité)
• Utilisation de librairies externes pour les
aspects sécurité (helmet…)
• Validation des intrants-extrants
• Validation des tokens même s’ils sont validés
en amont par le API Gateway
• Limiter les fonctionnalités d’un micro-services
• Et bien d’autres…
Anatomie d’un micro-service
(12 factor app)
37
❖ I. Base de code
❖ Une base de code suivie avec un système de contrôle
de version, plusieurs déploiements
❖ II. Dépendances
❖ Déclarez explicitement et isolez les dépendances
❖ III. Configuration
❖ Stockez la configuration dans l’environnement
❖ IV. Services externes
❖ Traitez les services externes comme des ressources
attachées
❖ V. Build, release, run
❖ Séparez strictement les étapes d’assemblage et
d’exécution
❖ VI. Processus
❖ Exécutez l’application comme un ou plusieurs
processus sans état
❖ VII. Associations de ports
❖ Exportez les services via des associations de ports
❖ VIII. Concurrence
❖ Grossissez à l’aide du modèle de processus
❖ IX. Jetable
❖ Maximisez la robustesse avec des démarrages
rapides et des arrêts gracieux
❖ X. Parité dev/prod
❖ Gardez le développement, la validation et la
production aussi proches que possible
❖ XI. Logs
❖ Traitez les logs comme des flux d’évènements
❖ XII. Processus d’administration
❖ Lancez les processus d’administration et de
maintenance comme des one-off-processes
Recommandations
• Bien préparer la plateforme identifiée et mettre la
sécurité au cœur de cette démarche
• Connaître les enjeux de sécurité
• Automatiser au maximum
• Dépendre le moins possible du code pour la sécurité
• Implémenter les vérifications de sécurité dans le
pipeline CI/CD
• Analyser, détecter, corriger et améliorer de façon
continue
Questions

Introduction a la securite dans un environnement docker

  • 1.
    Introduction à lasécurité dans un environnement docker/kubernetes/cloud avec micro-services Vincent Crépin Avril 2018
  • 2.
    Vincent Crépin • Architectelogiciel passionné possédant plus de 25 années d’expérience • Spécialisé en intégration, conception logicielle et architecture cloud • Intérêts prononcés en mobilité, sécurité et DevOps • A travaillé dans plusieurs grandes entreprises à titre de conseiller en architecture • Fondateur de Elapse Technologies
  • 3.
    Approche • Retour surexpériences vécues • Présentation des outils utilisés et leur rôle • Un peu d’architecture
  • 4.
    docker/kubernetes/cloud • docker estun logiciel open source qui permet d'embarquer une application et ses dépendances dans un conteneur. • kubernetes est un système permettant d'automatiser le déploiement, la montée en charge et la gestion des applications de type conteneur. • cloud est une plateforme permettant de provisionner une infrastructure rapidement et d’obtenir une facturation à l’utilisation.
  • 5.
    Micro-services (selon Martin Fowler) •Approche permettant de développer une seule application en tant qu’assemblage de petits services, chacun s'exécutant dans son propre processus et communiquant avec des mécanismes légers, souvent via une API de ressources HTTP.
  • 6.
    Enjeux de sécurité (résumé) •Sécurité de l’environnement cloud • Sécurité des containers • Sécurité des micro-services • Déploiements rapides et fréquents • Automatisation
  • 7.
    Solutions possibles • gcloud •IAM, IAP • kubernetes • docker (image scanner) • Cloud Armor • Forseti security • Let’s Encrypt (TLS) • Istio (network policies) • Firebase (authentification) • JWT (claims) • Kong API Gateway (JWT, claims, rate limiting, bot detection) • Configuration (spring cloud config, encryption) • CI/CD (Jenkins, Spinnaker, static analysis, tests de pénétration, etc) • NSP (Node Security Platform) • Arachni • Microservices
  • 8.
    IAM-IAP • IAM estla solution intégrée dans GCP pour gérer les utilisateurs, comptes de service, rôles et accès • IAP (Identity-Aware-Proxy) permet de sécuriser un url hébergé dans GCP en forçant une authentification. Ex: donner accès à la console de gestion kubernetes sur internet. • Ces deux solutions sont basées sur des comptes google • Il est possible de synchroniser les comptes avec un AD interne
  • 9.
  • 10.
    Kubernetes • Container engine(docker) • Orchestration des déploiements • API sécurisé pour contrôler la plateforme • Environnement sécurisé à la base – Authentification et autorisation pour la gestion – Isolation des ressources – Durcissement et sécurité réseau – Journaux et audit
  • 11.
    Docker image scanner ContainerRegistry Vulnerability Scanning • Permet de détecter les vulnérabilités répertoriées sur les OS des images • Les actions correctives doivent être appliquées dans les images de base • S’intègre avec des outils de livraison continue • Il est important de prendre en charge et limiter le nombre d’images de base (signature, admission controller) afin de conserver un certain contrôle
  • 12.
    Cloud Armor • Protectiondes services contre les dénis de service et les attaques web • S’intègre avec le loadbalancer de google • Whitelist-blacklist • Règles custom
  • 13.
    Forseti security • Projetopen source pour assurer la sécurité de GCP • Permet de gérer les états de l’environnement (snapshots) • Permet de monitorer les politiques • Assurer les configurations sécures de base de GCP • Avoir une visibilité sur les politiques IAM
  • 14.
    Let’s encrypt • Provisionnementautomatisé de certificats TLS • Tous les endpoints donnant accès au cluster utilisent TLS et cela est provisionné lors du déploiement
  • 15.
  • 16.
    Istio An open platformto connect, manage, and secure microservices • Assurer une visibilité sur le service mesh • Gérer la communication sécurisée à l’intérieur du cluster • Gérer le routage intelligent et le balancement de charge • Enforcement de politiques (rate limit) • Télémétrie exhaustive des communications • Circuit breaker • Injection de fautes
  • 18.
    Firebase 18 • Base dedonnées temps-réel et fournisseur d’identité • Supporte plusieurs mode d’authentification • Contient les utilisateurs et les rôles • Solution intégrée avec GCP
  • 20.
    JWT • Standard quidéfinit une façon compacte et self-contained de véhiculer de façon sécure de l’information entre différents partis • Authenticité basée sur une signature digitale
  • 22.
    Kong API Gateway 22 •Intercepte tous les appels de services entrants dans le cluster kubernetes. Constitue le seul point d’entrée vers les services internes • Effectue plusieurs tâches avec des intercepteurs (plugins) – Vérification de l’authentification – Vérification des autorisations (rôles) – CORS – Throttling – Limite sur les requêtes et réponse – Bot detection – Etc.
  • 25.
    Spring cloud config •Permet d’externaliser et de gérer les configurations des services/applications de façon centralisée et sécuritaire • Gestion des accès • Encryption des secrets
  • 27.
  • 28.
  • 30.
    NSP • Suite deproduits et de services de sécurité continue axée sur l'expédition et la maintenance de logiciels NodeJS sécurisés • Tout récemment acquis par NPM • Inclus dans le pipeline
  • 32.
    Arachni • Framework pourscanner les applications web (balayage de vulnérabilité dynamique) • Inclus dans le pipeline de CI/CD
  • 36.
    Micro-services (sécurité) • Utilisationde librairies externes pour les aspects sécurité (helmet…) • Validation des intrants-extrants • Validation des tokens même s’ils sont validés en amont par le API Gateway • Limiter les fonctionnalités d’un micro-services • Et bien d’autres…
  • 37.
    Anatomie d’un micro-service (12factor app) 37 ❖ I. Base de code ❖ Une base de code suivie avec un système de contrôle de version, plusieurs déploiements ❖ II. Dépendances ❖ Déclarez explicitement et isolez les dépendances ❖ III. Configuration ❖ Stockez la configuration dans l’environnement ❖ IV. Services externes ❖ Traitez les services externes comme des ressources attachées ❖ V. Build, release, run ❖ Séparez strictement les étapes d’assemblage et d’exécution ❖ VI. Processus ❖ Exécutez l’application comme un ou plusieurs processus sans état ❖ VII. Associations de ports ❖ Exportez les services via des associations de ports ❖ VIII. Concurrence ❖ Grossissez à l’aide du modèle de processus ❖ IX. Jetable ❖ Maximisez la robustesse avec des démarrages rapides et des arrêts gracieux ❖ X. Parité dev/prod ❖ Gardez le développement, la validation et la production aussi proches que possible ❖ XI. Logs ❖ Traitez les logs comme des flux d’évènements ❖ XII. Processus d’administration ❖ Lancez les processus d’administration et de maintenance comme des one-off-processes
  • 38.
    Recommandations • Bien préparerla plateforme identifiée et mettre la sécurité au cœur de cette démarche • Connaître les enjeux de sécurité • Automatiser au maximum • Dépendre le moins possible du code pour la sécurité • Implémenter les vérifications de sécurité dans le pipeline CI/CD • Analyser, détecter, corriger et améliorer de façon continue
  • 39.