Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Alphorm.com Formation Architecture Microservices - Sécurité

Cette formation décrit les problèmes liés à la sécurité dans différentes technologies. Vous découvrez la sécurité dans le monde .Net, en PHP et en Java. Les aspects spécifiques aux architectures microservices sont évoqués avec les API Gateway. Vous étudiez l’architecture .Net pour laquelle Microsoft propose un ensemble sécurisé de fonctions de sécurité qui s’intègrent dans les modèles d’applications supportées. Nous présentons en PHP, avec ou sans framework, les problèmes de sécurité que vous pouvez rencontrez dans ces technologies. Enfin, en Java, des patterns spécifiques sont proposés et vous serez à même de les mettre en œuvre.

  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Alphorm.com Formation Architecture Microservices - Sécurité

  1. 1. Formation Architecture Microservices La sécurité Une formation Fabien BRISSONNEAU
  2. 2. Cursus
  3. 3. Une formation Le propriétaire de la ressource La ressource Le principal : identité et rôle Authentification Autorisation Chiffrement Plan
  4. 4. Une formation Public concerné Développeurs Pratiquants devops Chefs de projet
  5. 5. Une formation Connaissances requises Langage de programmation
  6. 6. Présentation du projet Une formation Fabien BRISSONNEAU
  7. 7. Une formation Les généralités sur la sécurité Projet Visual Studio pour C# Architecture microservice Créer une API Gateway Projet PHPStorm Projet IntelliJ pour Java Plan
  8. 8. Une formation Visual Studio pour C# IntelliJ pour Java PHPStorm pour PHP Les outils
  9. 9. Comprendre les notions de la sécurité Une formation Fabien BRISSONNEAU
  10. 10. Une formation Le propriétaire de la ressource La ressource Le principal : identité et rôle Authentification Autorisation Chiffrement Plan
  11. 11. Une formation Le propriétaire Détient les preuves Devrait avoir accès aux ressources
  12. 12. Une formation La ressource Ce qui est protégé Fichiers, données, informations…
  13. 13. Une formation Le principal Informations sur l’utilisateur Rôles qu’il assume
  14. 14. Une formation Authentification Etablir et vérifier l’identité d’un principal
  15. 15. Une formation Autorisation Déterminer si un principal est autorisé Accès à une ressource
  16. 16. Une formation Chiffrement Symétrique ou asymétrique Être le seul à chiffrer Être le seul à déchiffrer
  17. 17. Une formation Cryptographie Intégrité des données Authentification de l’origine Non-répudiation de l’origine
  18. 18. Utiliser le Framework OAuth2 Une formation Fabien BRISSONNEAU
  19. 19. Une formation Les composants principaux Les tokens Les scénarios d’authentification Exemple Google APIs Plan
  20. 20. Propriétaire de la ressource Client : appli tierce Serveur de ressource Serveur d’autorisation Serveurs Propriétaire Client Authentification Ressource Token Les composants principaux
  21. 21. Une formation Les tokens Token d’accès : accéder à la ressource Token de refresh : pour obtenir un nouveau token
  22. 22. Une formation Les scénarios d’utilisation Avec un code Autorisation implicite Avec identifiants du propriétaire Avec identifiants du client
  23. 23. Une formation Exemple Google APIs Récupérer des infos de client Obtenir un token de Google Authorization Server Examiner les scopes d’accès Envoyer le token à une API Rafraîchir le token d’accès
  24. 24. Valider les entrées Une formation Fabien BRISSONNEAU
  25. 25. Une formation Les problèmes La validation au plus tôt Plan
  26. 26. Une formation Aspect général du logiciel Cas particuliers des applis Web Formulaires, paramètres, uploads… Injections SQL XSS (cross-site scripting) Les problèmes
  27. 27. Une formation Vérifier les entrées le plus tôt Filtrer les caractères spéciaux Les champs sont typés Réduire la surface d’attaque Syntaxique et sémantique Les solutions
  28. 28. Une formation Les validations HTML5 Whitelist plutôt que blacklist Validateurs des frameworks Schémas JSON et XML Conversion de types Minimum et maximum Expressions régulières Les solutions
  29. 29. Définir la sécurité .Net Une formation Fabien BRISSONNEAU
  30. 30. Une formation Sécurité basée sur les rôles La stratégie Sécurité de type Chiffrement Plan
  31. 31. Une formation Le principal est basé sur une identité Les informations sur le principal sont disponibles pour le thread courant Un principal encapsule identité et rôles Les autorisations sont accordées en fonction de l’identité ou du rôle Sécurité basée sur les rôles
  32. 32. Une formation La sécurité .Net est pilotée par stratégie Associer autorisations et preuves Le stockage isolé La stratégie
  33. 33. Une formation Un secret est une information qui ne doit pas être publique Le secret a une durée de vie limitée Les secrets sont protégés par crypto Les secrets
  34. 34. Une formation Chiffrement Le système de chiffrement est organisé par héritage Type d’algorithme : SymmetricAlgorithm, HashAlgorithm, .. Classe d’algorithme : Aes, RSA, ECDiffielHellamn, … Implémentations : AesManaged, … Les implémentations *CryptoServiceProvider, des wrappers autour de CAPI *Cng, des wrappers autour de CNG *Managed des classes entièrement en code managé
  35. 35. Utiliser les outils de sécurité Une formation Fabien BRISSONNEAU
  36. 36. Une formation Les noms forts des assemblys ILDASM Rechercher dans le code Plan
  37. 37. Une formation Créer un nom fort Utiliser Visual Studio La livraison dans le GAC Les noms forts
  38. 38. Une formation Désassembler IL Les attributs de l’assembly Retrouver la signature ILDASM
  39. 39. Une formation A partir d’un autre assembly Récupérer les informations Rechercher dans le code
  40. 40. Mettre en œuvre la sécurité Une formation Fabien BRISSONNEAU
  41. 41. Une formation Le contrôle basé sur les rôles Les attributs Authentification externe Lire le principal Plan
  42. 42. Une formation Les utilisateurs portent des rôles Les rôles sont contrôlés Le contrôle basé sur les rôles
  43. 43. Une formation Authorize Applicable aussi sur une classe AllowAnonymous est l’inverse Les attributs
  44. 44. Une formation Consiste à utiliser un service externe Echange de preuves et de token Plusieurs scénarios possibles Plusieurs services possibles Authentification externe
  45. 45. Une formation La propriété User.Identity Vérifications d’authentification Récupération du nom Lire le principal
  46. 46. Protéger le contenu des assemblys Une formation Fabien BRISSONNEAU
  47. 47. Une formation Un outil : ILDASM Lire Intermediate Language La décompilation
  48. 48. Une formation Mettre en œuvre Le résultat L’obsfucation
  49. 49. Une formation Pour éviter la décompilation Utiliser l’obsfuscation Conclusion
  50. 50. Protéger l’exécution des programmes Une formation Fabien BRISSONNEAU
  51. 51. Une formation Chargement des assemblies Compilation JIT Code Access Security Plan
  52. 52. Une formation Une application interagit avec le CLR Un jeu d’autorisations par appli Chargement des assemblies
  53. 53. Une formation Quand IL est exécuté Compilation JIT Vérification type-safe Vérifier avec peverify Compilation JIT
  54. 54. Une formation Restrictions selon le niveau de confiance Exécution selon les permissions données Exécution ou levée d’exception Code Acess Security
  55. 55. Une formation Donner des autorisations aux applis Identifier les preuves des assemblies Lier les assemblies aux groupes de code En déduire un ensemble d’autorisations Conclusion
  56. 56. Déployer une stratégie de sécurité dans le CLR Une formation Fabien BRISSONNEAU
  57. 57. Une formation Associer les autorisations aux preuves Limiter l’accès autorisé Preuves : namespaces, zones, … Autorisations : fichiers, exécutions, … La stratégie de sécurité
  58. 58. Une formation Stratégie de l’ordinateur Stratégie de l’utilisateur Stratégie de l’hôte Les niveaux de stratégies
  59. 59. Une formation Limitation à des droits Limitation à des exécutables Les impacts sur l’exécution
  60. 60. Une formation La stratégie de sécurité est définie Impacts sur l’exécution Conclusion
  61. 61. Choisir confiance totale ou partielle Une formation Fabien BRISSONNEAU
  62. 62. Une formation Un code qui accède aux types autorisés Accès sécurisé Lié au compilateur Le code de type sécurisé
  63. 63. Une formation Impérative / déclarative Le code demande des autorisations Soit avec du code impératif Soit avec des déclarations Syntaxe
  64. 64. Une formation Utilise des demandes de sécurité Oblige le client à avoir les droits Net framework en propose certaines Bibliothèques de classes
  65. 65. Une formation A partir de Framework 4 Ne peut pas appeler du code critique Pour applications confiance totale Et applications confiance partielle Code transparent
  66. 66. Une formation Le niveau de confiance du code Le lien avec le langage de programmation Conclusion
  67. 67. Les différences avec une architecture monolithique Une formation Fabien BRISSONNEAU
  68. 68. Une formation La surface d’attaque La sécurité et les performances Le démarrage des micro-services Les requêtes sur plusieurs Plan
  69. 69. Une formation Les points d’entrée Un seul pour le monolithe Nombreux en micro-services La surface d’attaque
  70. 70. Une formation Tester la sécurité Au point d’entrée Sur chaque micro-service La sécurité et les performances
  71. 71. Une formation Les micro-services sont liés Automatisation nécessaire Validation d’un service par ses pairs Le démarrage
  72. 72. Une formation Doit être observable Créer des logs Créer des métriques Générer des traces Les requêtes sur plusieurs
  73. 73. Une formation Autres défis Les conteneurs sont immuables Le contexte utilisateur Architecture multi-techniques Conclusion
  74. 74. Mettre en œuvre un serveur OpenId Connect Une formation Fabien BRISSONNEAU
  75. 75. Une formation L’implémentation est libre Un client, serveur quelconque Utilise JSON Signing and Encryption Standard ouvert
  76. 76. Une formation ID Token utilise un JWT Pour le propriétaire de la ressource Doit être parsé Basé sur OAuth2
  77. 77. Une formation ID Token contient un accès aux data Utilise un UserInfo endpoint Récupère les preuves de l’utilisateur Dédié à l’authentification
  78. 78. Utiliser un serveur OpenId Connect Une formation Fabien BRISSONNEAU
  79. 79. Une formation Le token possède des champs URL du demandeur L’id de l’utilisateur, du client Une durée de vie, une date Tout est signé Générer un ID Token
  80. 80. Une formation Méthodes GET et POST Fournit les preuves de l’utilisateur Créer un URL endpoint
  81. 81. Une formation Utilisant la clé du serveur Déchiffrer, vérifier Récupérer les informations Parser l’ID Token
  82. 82. Justifier une API Gateway Une formation Fabien BRISSONNEAU
  83. 83. Une formation Eviter d’exposer les microservices URL complexes Hétérogénéité Exposition des microservices
  84. 84. Une formation Gérer la sécurité en transparence Aspects non fonctionnels Code polluant Code changeant Découpler la sécurité
  85. 85. Une formation Les granularités des services Difficultés à consommer Les interfaces ne sont pas cohérentes Améliorer la cohérence
  86. 86. Une formation Les services sont hétérogènes Granularité très différentes Orchestration des appels Gérer la granularité
  87. 87. Mettre en place une API Gateway Une formation Fabien BRISSONNEAU
  88. 88. Une formation Gérer la sécurité : accès, quotas, … Tracer les actions : logs, métriques, … Régler le routage, … Equilibrer les charges Rôle de l’API Gateway
  89. 89. Une formation Kong Ambassador Gloo Istio Exemples d’implémentations
  90. 90. Sécuriser entre services avec TLS Une formation Fabien BRISSONNEAU
  91. 91. Une formation Savoir avec qui on parle Sécuriser les transferts d’information Https est http sur TLS Handshake client-serveur L’exposition avec TLS
  92. 92. Une formation Capacité de vérification du certificat OpenSSL est une implémentation Une autorité connue des services Autorité de certification
  93. 93. Une formation TLS seul identifie le serveur mTLS permet la réciproque Utiliser mutual TLS
  94. 94. Communiquer entre services avec JWT Une formation Fabien BRISSONNEAU
  95. 95. Une formation Intérêt de JWT Nécessité d’un SecurityTokenService Usages du JWT Plan
  96. 96. Une formation Communiquer entre services Standard (Header) Sécurisé (Signature) Partager un contexte (Payload) Intérêt de JWT
  97. 97. Une formation Infos en JSON contenant une preuve Auto descriptif Définition de JWT { "name": "John Doe", "email": "john@johndoe.com", "admin": true }
  98. 98. Une formation Service de production du token Accessible des services du cluster Seul AS produit la signature Nécessité d’un STS
  99. 99. Une formation Contient de l’information Authentification de l’utilisateur Gestion de session Encodé Base64 / Base64Url Usages du JWT
  100. 100. Une formation Iss pour l’entité génératrice (serveur) Iat pour le timestamps de création Sub pour l’id technique de l’utilisateur Exp pour le timestamps expiration Informations
  101. 101. Une formation Sécuriser avec JWT Capable de déchiffrer Contexte utilisateur avec JWT Identification et expiration Conclusion
  102. 102. Les bons réglages en PHP Une formation Fabien BRISSONNEAU
  103. 103. Une formation Les bonnes pratiques La configuration php.ini Les fonctions non sécures Les fonctions à restreindre Activer les protections Plan
  104. 104. Une formation Être à jour des versions Utiliser du SQL précompilé Valider les entrées utilisateurs Protocole SSL Eviter l’inclusion de fichiers Les bonnes pratiques
  105. 105. Une formation display_errors Désactiver l’affichage des erreurs group_id à un niveau bas allow_url_include OFF memory_limit : attaque DoS max_execution_time max_input_time La configuration php.ini
  106. 106. Une formation Utiliser disable_functions pour phpinfo, system, mail, exec Dimensionner les ressources Les fonctions non sécures
  107. 107. Une formation Si non nécessaires File_uploads, display_errors, allow_url_fopen, expose_php, … Les fonctions à restreindre
  108. 108. Une formation Plus d’information cgi.force.redirect, log_errors Safe modes safe_mode, sql.safe_mode Activer les protections
  109. 109. Une formation Modifier les paramètres pour sécuriser Eviter de fournir des informations Eviter les accès non souhaités Conclusion
  110. 110. PHP, la sécurité des bases de données Une formation Fabien BRISSONNEAU
  111. 111. Une formation Chaque base propose ses primitives Les PHP data objects Les crédits de connexion Le SQL précompilé Plan
  112. 112. Une formation Chaque base propose ses fonctions Autant d’extensions à installer Interfaces différentes Accroît les difficultés Les primitives
  113. 113. Une formation Une interface unique Plusieurs bases de données Nécessite d’utiliser un SQL commun Les PHP Data Objects
  114. 114. Une formation Déplacer les infos de connexion Ne pas les placer dans le code Par environnement Ne pas les versionner Les crédits de connexion
  115. 115. Une formation Ne pas exécuter SQL + variables Filtrer les entrées utilisateur Utiliser Prepared Statements Et Bound Parameters Le SQL pré compilé
  116. 116. Une formation Utiliser les PDO Pré compiler le SQL Lié des paramètres vérifiés Conclusion
  117. 117. Les vulnérabilités des applications Web Une formation Fabien BRISSONNEAU
  118. 118. Une formation Injection Authentification Exposition de données sensibles Données externes XML Contrôle d’accès brisé Mauvaise configuration de sécurité Cross-site scripting Plan
  119. 119. Une formation Injection de données non vérifiées Dans une commande ou un requête L’interpréteur va exécuter la commande Injection
  120. 120. Une formation Compromission de mots de passe Ou de clés, de tokens … Par exemple en PHP, les données de session stockées en clair sur le filesystem Authentification
  121. 121. Une formation Données sensibles non protégées Le vol ou la modification de ces infos Les données doivent être protégées, au repos comme en transit Attention particulière lorsqu’elles sont échangées avec un navigateur Exposition de données
  122. 122. Une formation Données XML parsées Une référence vers une donnée externe Mène au vol de données, DoS, scan de ports … Données externes XML
  123. 123. Une formation Les restrictions d’accès aux utilisateurs L’attaque consiste à utiliser ces accès Vol de données, modifications… Contrôle d’accès brisé
  124. 124. Une formation La configuration de sécurité Définie et déployée Pour l’application, les serveurs, les frameworks, … Par défaut, souvent non sûrs Mauvaise configuration
  125. 125. Une formation Exécution de script sur le navigateur Pour récupérer des infos, rediriger ailleurs Une application prend des données et les envoie sans validation au navigateur Cross site scripting
  126. 126. Une formation OWASP a décrit les cas fréquents Ces erreurs se répètent Pas toujours corrigées Conclusion
  127. 127. Java, charger les classes et utiliser SandBox Une formation Fabien BRISSONNEAU
  128. 128. Une formation Les class loader de Java La vérification du bytecode Le SecurityManager Plan
  129. 129. Une formation Class loader primordial Class loader d’extensions Class loader d’application Vérifient que le code nouveau ne remplace pas des éléments systèmes Les class loader de Java
  130. 130. Une formation Lorsque le loader présente la classe Le « verifier » contrôle les instructions Variables initialisées, méthodes sur les types, règles de visibilité, variables locales dans la pile, pas de débordement … La vérification du bytecode
  131. 131. Une formation Vérifie à l’exécution Méthodes dangereuses : entrées/sorties, accès réseau, définition de class loader … Le SecurityManager
  132. 132. Une formation Le modèle SandBox Empêche le code malveillant de nuire Plusieurs composants coopèrent Conclusion
  133. 133. Java, Utiliser SecurityManager Une formation Fabien BRISSONNEAU
  134. 134. Une formation La classe SecurityManager Interagir avec le SecurityManager Les fichiers de configuration Plan
  135. 135. Une formation Définit la politique de sécurité Quelles actions sont safe Fournit des informations aux applications La classe SecurityManager
  136. 136. Une formation Récupérer le SecurityManager Tester la possibilité d’une permission Avec SecurityManager
  137. 137. La liste des fichiers Modifier les permissions Les fichiers de configuration
  138. 138. Une formation SecurityManager vérifie les permissions La configuration peut être modifiée Conclusion
  139. 139. Java, Mettre en œuvre la protection du bytecode Une formation Fabien BRISSONNEAU
  140. 140. Une formation Le bytecode décompilé L’obfuscation du code Plan
  141. 141. Une formation Il existe plusieurs décompilateurs Code résultant proche du source Avec infos de debug éventuellement Le bytecode décompilé
  142. 142. Une formation Définition de l’obfuscation Des outils pour obfusquer Les limites de l’obfuscation L’obfuscation du code
  143. 143. Une formation Le bytecode est facilement décompilé L’obfuscation masque le source Conclusion
  144. 144. Découvrir l’architecture de JAAS Une formation Fabien BRISSONNEAU
  145. 145. Une formation Java Authentication and Autorisation Gérer identifications et droits Définition de JAAS
  146. 146. Une formation Principal Une identité du demandeur Subject Le demandeur LoginModule Interface du AP LoginContext Méthode de login Callback Interface de la demande Principales classes
  147. 147. Mis en œuvre dans Jboss, BEA, … Schéma
  148. 148. Une formation JAAS est une solution pour sécuriser Partie de J2SE Utilisé par les composants JEE Conclusion
  149. 149. S’authentifier avec le PAM Une formation Fabien BRISSONNEAU
  150. 150. Une formation Pluggable Authentication Modules Intégrer des stratégies diverses Une API pour étoffer une phase Une librairie pour intégration Définition de PAM
  151. 151. Une formation Définit des services (applications) Un service contient des règles Une règle lance un module Fonctionnement
  152. 152. Une formation Choisir une application /etc/pam.d/x Pile plus ou moins complète Cas concret
  153. 153. Une formation Composant de l’ensemble gnu/linux Nombreux usages Cohérence de la sécurité Conclusion
  154. 154. Gérer les permissions Une formation Fabien BRISSONNEAU
  155. 155. Une formation Récupérer les sources Construire le binaire Exemple avec check_user
  156. 156. Une formation Le fichier / application n’existe pas Traitement par défaut Exemple sans permission
  157. 157. Une formation Création d’un fichier / application Définir Mise en oeuvre auth required pam_unix.so account required pam_unix.so
  158. 158. Conclusion Une formation Fabien BRISSONNEAU
  159. 159. Une formation Les généralités sur la sécurité La sécurité en code .Net La sécurité avec les microservices La sécurité avec API Gateway La sécurité avec PHP La sécurité avec Java Bilan

×