Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction a la securite dans un environnement docker

211 views

Published on

Présentation OWASP Québec du 24 avril 2018: "La sécurité dans un environnement docker/kubernetes/cloud avec micro-services"
Par Vincent Crépin

Published in: Software
  • Be the first to comment

  • Be the first to like this

Introduction a la securite dans un environnement docker

  1. 1. Introduction à la sécurité dans un environnement docker/kubernetes/cloud avec micro-services Vincent Crépin Avril 2018
  2. 2. 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
  3. 3. Approche • Retour sur expériences vécues • Présentation des outils utilisés et leur rôle • Un peu d’architecture
  4. 4. 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.
  5. 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. 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. 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. 8. 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
  9. 9. IAP
  10. 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. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. Service mesh
  16. 16. 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
  17. 17. 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
  18. 18. 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
  19. 19. 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.
  20. 20. 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
  21. 21. CI/CD
  22. 22. Pipeline CI/CD 28
  23. 23. 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
  24. 24. Arachni • Framework pour scanner les applications web (balayage de vulnérabilité dynamique) • Inclus dans le pipeline de CI/CD
  25. 25. 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…
  26. 26. 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
  27. 27. 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
  28. 28. Questions

×