BLOG | NGINX

Architecture de sécurité Zero Trust pour les applications Kubernetes avec NGINX

NGINX-Partie-de-F5-horiz-black-type-RGB
Vignette d'Ilya Krutov
Ilia Kroutov
Publié le 26 septembre 2022

La sophistication et le nombre des attaques de cybersécurité augmentent de manière exponentielle, créant un risque d’exposition important pour vos applications déployées dans des environnements Kubernetes sur site, hybrides et multicloud. Les modèles de sécurité traditionnels sont basés sur le périmètre, supposant que les utilisateurs sont dignes de confiance (et que la communication entre eux est sécurisée) s’ils se trouvent dans les limites sécurisées de l’environnement. Dans les environnements distribués d’aujourd’hui, le concept de zone de sécurité à l’intérieur du périmètre n’existe plus – les communications provenant de « l’intérieur » de l’environnement peuvent être tout aussi dangereuses que les menaces externes.

Dans ce blog, nous explorons les avantages de l’adoption d’un modèle Zero Trust pour sécuriser votre infrastructure Kubernetes et comment NGINX peut vous aider à améliorer votre posture de sécurité.

Qu'est-ce que Zero Trust ?

Zero Trust est un modèle de sécurité basé sur l’identité plutôt que sur la localisation. Il suppose que toute demande d’accès aux applications, aux données et aux appareils peut être une attaque, que le demandeur semble être situé sur site, à distance ou dans le cloud.

Pour mettre en œuvre les trois principes fondamentaux de Zero Trust (ne jamais faire confiance, toujours vérifier, surveiller en permanence), chaque utilisateur, service, application et appareil est tenu en permanence de présenter une preuve d’authentification et d’autorisation. Les privilèges limités dans le temps sont accordés sur la base de politiques d’accès dynamiques et sur la base du moindre privilège.

Toutes les communications sont cryptées et acheminées via un point de décision/application des politiques (PDP/PEP) qui authentifie toutes les parties et leur accorde des privilèges basés sur des politiques d'accès dynamiques. En outre, des capacités d’audit, de surveillance, de reporting et d’automatisation sont en place pour analyser, évaluer et atténuer les risques de sécurité.

diagramme de confiance zéro

Comment Zero Trust améliore votre sécurité

Zero Trust améliore votre posture de sécurité de plusieurs manières :

  • Bloque automatiquement les activités non autorisées
  • Applique des contrôles d'accès pour réduire la surface d'attaque exposée
  • Détecte les anomalies comportementales et les indicateurs de compromission
  • Définit des politiques de moindre privilège en temps réel qui limitent le temps d'accès
  • Authentifie et valide en permanence l'identité pour bloquer les attaques en cours

Zero Trust est particulièrement essentiel pour les applications cloud natives modernes exécutées dans un environnement Kubernetes. Faiblement couplés et portables, les applications et services distribués sont conteneurisés et exécutés dans des environnements hybrides multicloud où la sécurité basée sur la localisation n'est pas une option. La sécurité dépend nécessairement de la validation continue des identités et des privilèges, du chiffrement de bout en bout et de la surveillance.

Comment atteindre la sécurité Zero Trust

Pour respecter les principes Zero Trust, votre environnement Kubernetes doit fournir des fonctionnalités de sécurité critiques telles que l'authentification, l'autorisation, le contrôle d'accès, les politiques, le chiffrement, la surveillance et l'audit pour les utilisateurs, les applications et les services.

Une façon possible d’y parvenir est d’intégrer la sécurité dans l’application elle-même. Cependant, cela signifie que vos développeurs doivent mettre en œuvre plusieurs procédures de sécurité : pour établir et vérifier la confiance, gérer les identités et les certificats des utilisateurs, crypter et décrypter toutes les communications, etc. Ils doivent également comprendre et intégrer des technologies tierces telles que TLS et l’authentification unique (SSO). Tout cela ajoute non seulement de la complexité à votre déploiement Kubernetes déjà complexe. Cela distrait les développeurs de ce sur quoi ils doivent (et veulent !) se concentrer : l’optimisation des fonctionnalités commerciales de l’application.

Ne paniquez pas – il existe une meilleure solution : déchargez la sécurité et les autres exigences non fonctionnelles sur votre infrastructure Kubernetes ! Les outils de connectivité pour les clusters Kubernetes, tels que les contrôleurs Ingress et les maillages de services, peuvent fournir PDP et PEP pour toutes les communications entre vos applications et services, qu'elles proviennent des utilisateurs ou d'autres applications ou services. Cela signifie que vous pouvez vous concentrer sur l'expertise et les fonctionnalités de votre cœur de métier, tout en livrant des applications plus rapidement et plus facilement.

Comment F5 NGINX peut vous aider

Comme l'illustre le diagramme suivant, la solution NGINX pour une connectivité Kubernetes sécurisée inclut tous les composants et outils indépendants de l'infrastructure dont vous avez besoin pour protéger avec succès vos utilisateurs, vos applications distribuées, vos microservices et vos API à grande échelle et de bout en bout dans n'importe quel environnement (sur site, hybride et multicloud). Alimentée par le plan de données le plus populaire au monde, la solution combine :

  • NGINX Ingress Controller comme contrôleur d’entrée pour Kubernetes et un PDP/PEP qui s’intègre aux fournisseurs d’identité et SSO tiers. Basé sur NGINX Plus , NGINX Ingress Controller gère la connectivité avancée, la surveillance et la visibilité, l'authentification et le SSO, et agit comme une passerelle API.
  • NGINX Service Mesh en tant que service mesh léger, clé en main et convivial pour les développeurs sécurise la connectivité des services au sein du cluster Kubernetes. Le side-car de niveau entreprise qui agit en tant que PDP/PEP colocalisé avec chaque service Kubernetes est basé sur NGINX Plus.
  • NGINX App Protect pour une protection holistique des applications et API modernes, basée sur les technologies de sécurité leaders du marché de F5. Il utilise une approche modulaire pour une flexibilité dans les scénarios de déploiement et une utilisation optimale des ressources :
    • NGINX App Protect WAF – Un WAF puissant et léger qui protège contre le Top 10 de l'OWASP et assure la conformité PCI DDS
    • NGINX App Protect DoS – Détection et atténuation des attaques DoS comportementales avec une protection cohérente et adaptative sur les clouds et les architectures

diagramme de confiance zéro 2

La solution NGINX vous permet de :

  • Intégrez des contrôles de sécurité solides dans des environnements distribués sans ralentir la vitesse de publication ni nuire aux performances
  • Bloquez automatiquement les attaques en cours grâce à une authentification constante, une validation d'identité et une détection d'anomalies comportementales
  • Mettre en œuvre des politiques de moindre privilège en temps réel, un contrôle d'accès précis, un chiffrement de bout en bout et une gouvernance au sein de plusieurs équipes
  • Distribuez des applications en toute sécurité, du code au client, grâce à un WAF intégré et robuste et à une défense DoS au niveau des applications
  • Évaluez et améliorez en continu la posture de sécurité de votre environnement Kubernetes avec des mesures granulaires en temps réel et historiques
  • Simplifiez le déploiement et la gestion des communications sécurisées entre utilisateurs et services et entre services grâce à la consolidation technologique

Mettre en œuvre une sécurité Zero Trust complète avec NGINX

À mesure que les organisations évoluent, il devient essentiel de décharger les exigences qui ne sont pas spécifiques aux fonctionnalités d’une application (telles que les fonctionnalités de sécurité Zero Trust) de la couche applicative. Nous avons expliqué ci-dessus comment cela libère les développeurs de la charge de créer, de maintenir et de répliquer la logique de sécurité dans leurs applications ; au lieu de cela, ils peuvent facilement exploiter les technologies de sécurité au niveau de la plateforme. NGINX offre une application centralisée des politiques de sécurité pour Kubernetes à la périphérie du cluster avec NGINX Ingress Controller et au sein du cluster avec NGINX Service Mesh. Vous pouvez ajouter une protection avancée des applications contre les cyberattaques sophistiquées avec NGINX App Protect WAF et DoS déployés en périphérie ou au sein du cluster, en fonction des exigences de sécurité de vos applications.

Explorons en profondeur comment la solution NGINX inclut les fonctionnalités dont vous avez besoin pour mettre en œuvre une sécurité Zero Trust complète pour vos déploiements Kubernetes.

Authentification et autorisation

L’un des principes clés de la sécurité Zero Trust est que chaque appareil, utilisateur, service et demande est authentifié et autorisé. L’authentification est le processus de vérification de l’identité – en d’autres termes, il s’agit de garantir que chaque partie participant à une communication est bien celle qu’elle prétend être. L'autorisation est le processus de vérification qu'une partie a droit à l'accès qu'elle demande à une ressource ou à une fonction.

Pour répondre à ce principe, la solution NGINX propose plusieurs options de mise en œuvre de l’authentification et de l’autorisation, notamment l’authentification HTTP de base , les jetons Web JSON (JWT) et OpenID Connect via des intégrations avec des fournisseurs d’identité tels qu’Okta et Azure Active Directory (AD). La solution NGINX délivre également des identités sécurisées aux services (tout comme les utilisateurs d'applications reçoivent une identification sous forme de certificats), ce qui leur permet d'être authentifiés et autorisés à effectuer des actions sur le cluster Kubernetes. Outre la gestion des identités de charge de travail, la solution NGINX automatise la gestion des certificats grâce à des intégrations intégrées avec l'infrastructure à clés publiques (PKI) et les autorités de certification.

Étant donné que NGINX Ingress Controller examine déjà toutes les demandes entrant dans le cluster et les achemine vers les services appropriés, il s’agit de l’emplacement le plus efficace pour l’authentification et l’autorisation centralisées des utilisateurs, ainsi que pour l’authentification des services dans certains scénarios.

Pour plus de détails, lisez Implémentation de l'authentification OpenID Connect pour Kubernetes avec Okta et NGINX Ingress Controller sur notre blog.

Cryptage et intégrité des données

Un autre principe Zero Trust est que toutes les communications doivent être sécurisées – leur confidentialité et leur intégrité doivent être maintenues – quel que soit l’endroit où se trouvent les participants. Les données ne doivent pas être lues par des parties non autorisées ni modifiées pendant la transmission. Pour satisfaire ce principe, la solution NGINX utilise le cryptage SSL/TLS pour les communications utilisateur-service et l’authentification et le cryptage TLS mutuels (mTLS) pour les communications service-service .

Si l'architecture de votre application n'implique pas de communication de service à service au sein du cluster Kubernetes, NGINX Ingress Controller peut être suffisant pour répondre à vos besoins d'intégrité des données. Il existe deux options de base :

 

  • Avec TLS Passthrough , NGINX Ingress Controller achemine les connexions chiffrées SSL/TLS vers le service directement, sans les déchiffrer ni nécessiter l’accès aux certificats ou clés SSL/TLS.
  • Avec la terminaison SSL/TLS , NGINX Ingress Controller agit comme un proxy inverse, mettant fin à la connexion TLS avec le demandeur, puis utilisant mTLS ou SSL/TLS côté service pour crypter une nouvelle connexion à vos services Kubernetes (serveurs back-end et en amont).

Si votre architecture implique une communication de service à service au sein du cluster, pour l'intégrité des données, vous avez besoin à la fois de NGINX Ingress Controller et de NGINX Service Mesh. NGINX Service Mesh garantit que seuls des services spécifiques sont autorisés à communiquer entre eux et utilise mTLS pour les authentifier et crypter les communications entre eux. Vous pouvez implémenter mTLS de manière « zéro contact » avec NGINX Service Mesh, ce qui signifie que les développeurs n'ont pas besoin de moderniser leurs applications avec des certificats ni même de savoir qu'une authentification mutuelle a lieu.

Pour en savoir plus sur la sécurisation des communications dans un cluster Kubernetes, lisez L'architecture mTLS dans NGINX Service Mesh sur notre blog.

Contrôle d'accès et politique d'accès

Le contrôle d’accès est un autre élément essentiel du modèle Zero Trust. Kubernetes utilise le contrôle d’accès basé sur les rôles (RBAC) pour réguler les ressources et les opérations disponibles pour les différents utilisateurs. Il détermine comment les utilisateurs, ou les groupes d’utilisateurs, peuvent interagir avec n’importe quel objet ou espace de noms Kubernetes dans le cluster.

La solution de connectivité NGINX Kubernetes est compatible RBAC pour un alignement facile avec les politiques de sécurité de votre organisation. Avec RBAC en place, les utilisateurs bénéficient d'un accès sécurisé aux fonctionnalités dont ils ont besoin pour faire leur travail sans avoir à déposer un ticket informatique et à attendre qu'il soit traité. Sans RBAC, les utilisateurs peuvent obtenir des autorisations dont ils n’ont pas besoin ou auxquelles ils n’ont pas droit, ce qui peut entraîner des vulnérabilités si les autorisations sont mal utilisées.

Lorsque vous configurez RBAC avec NGINX Ingress Controller, vous pouvez contrôler l’accès de nombreuses personnes et équipes en alignant les autorisations sur les différents rôles dans l’environnement de développement et de distribution d’applications de votre organisation. Son outil de gestion des accès précis permet le libre-service et la gouvernance au sein de plusieurs équipes.

Pour savoir comment exploiter RBAC avec NGINX Ingress Controller, regardez notre webinaire sur DevNetwork, Déploiements Kubernetes avancés avec NGINX Ingress Controller . À partir de 13h50, nos experts expliquent comment tirer parti du RBAC et de l'allocation des ressources pour la sécurité, le libre-service et le multi-hébergement.

Observabilité

L’audit, la surveillance, la journalisation, le traçage et la création de rapports sont des éléments clés dans un environnement Zero Trust. Plus vous collectez d’informations sur l’état de votre infrastructure d’application Kubernetes et plus vous pouvez les corréler, les analyser et les évaluer efficacement, plus vous pouvez renforcer votre posture de sécurité.

Vous utilisez probablement déjà des outils de surveillance dans votre déploiement Kubernetes et n’en avez pas besoin d’un autre. Pour vous donner une image complète de ce qui se passe à l'intérieur de vos clusters, nous avons instrumenté l' API NGINX Plus pour une exportation facile des métriques vers n'importe quel outil tiers qui accepte JSON et fournit des intégrations prédéfinies avec des outils populaires comme OpenTelemetry , Grafana et Prometheus . Vous obtenez des informations ciblées sur la connectivité des applications avec des traces approfondies afin de comprendre comment les demandes sont traitées de bout en bout : NGINX Ingress Controller fournit un aperçu de la connectivité entre votre cluster et les clients externes, tandis que NGINX Service Mesh couvre la connectivité entre les applications et services conteneurisés basés sur des microservices au sein du cluster.

Protection WAF et DoS

Avec NGINX App Protect, vous pouvez renforcer davantage la sécurité de vos applications distribuées en les protégeant contre les menaces telles que les attaques par déni de service (DoS) OWASP Top 10 et Layer 7. NGINX App Protect, un composant intégral de la solution de connectivité sécurisée de bout en bout NGINX, offre une sécurité agile et centrée sur les applications contre les menaces les plus avancées, bien au-delà des signatures de base. Il s'appuie sur l'expertise de pointe et fiable de F5 en matière de sécurité et ne compromet pas la vitesse de publication ni les performances. Il peut facilement transmettre la télémétrie de sécurité à des solutions d’analyse et de visibilité tierces, et il réduit les faux positifs grâce à des signatures de haute confiance et à une analyse comportementale automatisée.

La conception modulaire de NGINX App Protect signifie que vous pouvez déployer une ou les deux protections WAF et DoS sur la même instance ou sur des instances différentes, selon vos besoins. Par exemple, vous pouvez décider de les déployer avec NGINX Ingress Controller à la périphérie de votre cluster, ce qui est idéal pour fournir une protection fine et cohérente sur l’ensemble d’un cluster unique. Si, au contraire, vous avez besoin de stratégies spécifiques à l’application pour plusieurs applications dans un cluster, vous pouvez déployer une protection WAF et/ou DoS au niveau du service ou du pod.

Pour plus d'informations sur le déploiement de WAF et de la protection DoS, lisez Shifting Security Tools Left for Safer Apps sur notre blog.

Démarrez avec la solution de sécurité NGINX Zero Trust pour Kubernetes

Que vous soyez au début de votre parcours Kubernetes ou un utilisateur avancé qui exécute Kubernetes en production depuis un certain temps, NGINX propose un ensemble complet d'outils et de blocs de construction pour répondre à vos besoins et améliorer votre posture de sécurité.

Commencez par demander votre essai gratuit de 30 jours de NGINX Ingress Controller avec NGINX App Protect WAF et DoS, et téléchargez le NGINX Service Mesh toujours gratuit.


« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."