DevOps - Défis et points à considérer en matière de sécurité

L'introduction de la méthodologie d'infrastructure-code a contraint les organisations à s'adapter rapidement et à mettre en oeuvre de nouveaux processus d'exploitation, de développement et de maintenance des applications dans différents environnements, sur place et multinuages, par exemple. Une augmentation des processus et de la vitesse peut entraîner des failles de sécurité. Par conséquent, les processus ont été affinés au fil du temps pour mettre en œuvre des cycles de déploiement et de lancement de produit plus efficaces et sécurisés. Les nouveaux processus de sécurité intégrant la méthodologie d'infrastructure-code sont appelés DevSecOps.

Utilisez le service DevOps pour Oracle Cloud Infrastructure (OCI) pour atteindre vos objectifs en matière de DevOps.

Le service DevOps pour OCI est une plate-forme complète d'intégration et de déploiement en continu (CI/CD) qui simplifie et automatise le cycle de développement de logiciels. Le service DevOps permet la collaboration au cours de phases de développement, de création, de test et de déploiement de logiciels. Il offre une visibilité tout au long du cycle de développement et permet d'obtenir un historique des validations de source au cours des phases de création, de test et de déploiement.

Lors du processus de définition DevSecOps, vous devez analyser les composants du pipeline CI/CD dans votre processus de déploiement afin de renforcer les mesures de sécurité. Vous devez également penser à améliorer le code source et à protéger les référentiels de code.

Fonctionnement et utilité de DevSecOps

Les objectifs de la méthodologie DevOps ont toujours été d'augmenter l'efficacité et d'accélérer la production du déploiement. DevSecOps vise les mêmes objectifs, auxquels s'ajoute la sécurisation de tous les composants utilisés dans divers processus de déploiement.

DevSecOps est une responsabilité partagée entre toutes les parties prenantes, y compris le fournisseur de services infonuagiques, les ingénieurs DevOps, les ingénieurs de test, les responsables d'applications et les analystes de sécurité. Vous devez trouver le bon équilibre pour maintenir la vitesse et l'agilité pendant le cycle de vie du logiciel, tout en assurant le niveau de sécurité de bout en bout approprié.

Le modèle de maturité DevSecOps fournit des mesures de sécurité appliquées lors de l'utilisation des stratégies DevOps et indique quelle priorité leur affecter pour améliorer la sécurité. Par exemple, utilisez ce modèle pour déterminer comment tester chaque composant, par exemple les bibliothèques d'applications et les bibliothèques du système d'exploitation dans les images Docker, pour détecter les vulnérabilités connues.

Application de DevSecOps dans OCI

Les informations suivantes décrivent le flux de travail DevSecOps type qui tire parti des fonctions d'OCI.

  1. Un développeur crée du code dans un référentiel (par exemple, dans le service DevOps avec des politiques/autorisations et des référentiels de code de tierce partie tels que GitHub et GitLab). Pour l'intégration avec des référentiels de code de tierce partie tels que GitHub et GitLab, créez un jeton d'accès personnel dans GitHub ou GitLab et stockez ce jeton dans une chambre forte OCI.

  2. Les modifications sont validées dans l'outil d'intégration et de déploiement en continu (CI/CD) pour compilation.

  3. L'outil CI/CD peut effectuer l'une des opérations suivantes :

    • Appeler un outil de tierce partie tel que Sonatype, SonarQube ou OverOps pour analyser le code statique et dynamique afin d'identifier les défauts de sécurité ou les bogues dans la qualité du code.
    • Pousser la nouvelle image de conteneur dans un référentiel Oracle Cloud Infrastructure Registry avec la fonction de balayage activée. Ensuite, l'outil CI/CD obtient les résultats du balayage de l'image à l'aide de l'API REST du service de balayage de vulnérabilités. En fonction des résultats du balayage de l'image, l'outil CI/CD peut déterminer si l'image peut passer à l'étape suivante du cycle de vie.
  4. Si l'analyse du code ou le balayage de l'image réussit, des tests automatisés sont effectués, portant notamment sur la sécurité, l'intégration d'API et l'interface utilisateur.

  5. Lorsque l'application et le code réussissent ces tests, la meilleure pratique au sein du pipeline de déploiement consiste à ajouter une approbation de phase de contrôle. Une phase d'approbation met en pause le déploiement pendant une période spécifiée, au cours de laquelle un approbateur est avisé des déploiements et fournit manuellement l'approbation.

  6. Une fois le pipeline de déploiement approuvé, l'application et le code sont déployés sur les plates-formes OCI de votre environnement de production, notamment : instances de calcul (sur machine virtuelle et sans système d'exploitation), grappes Container Engine for Kubernetes (Kubernetes géré) et service des fonctions pour OCI (fonctions sans serveur).

  7. L'environnement dans lequel l'application est déployée doit être surveillé en permanence pour identifier les problèmes de sécurité. De plus, effectuez la surveillance classique des mesures et des journaux de service à l'aide des services OCI tels que Surveillance de la performance des applications, Journalisation et Surveillance. Configurez les systèmes de surveillance pour réagir rapidement face aux menaces de sécurité à l'aide des fonctions OCI natives, telles que le service Avis. Vous pouvez également intégrer les journaux à des systèmes de création de tickets (par exemple, ServiceNow) ou à des systèmes SIEM de tierce partie.

Pipeline de déploiement DevSecOps dans OCI.

Meilleures pratiques DevSecOps

Nous recommandons les meilleures pratiques DevSecOps ci-dessous.

  1. Appliquer les politiques et la gouvernance.

    Un processus DevSecOps efficace respecte et met en oeuvre une gouvernance robuste axée sur des fonctions de sécurité, telles que lagestion des identités et des accès et la gestion des accès privilégiés. Le processus doit également définir des rôles pour le modèle DevSecOps, fournir une formation appropriée et surveiller l'apparition de nouvelles techniques de sécurité.

  2. Automatiser les processus et outils de sécurité DevOps.

    Utilisez l'automatisation dans votre processus DevOps pour réduire les risques liés aux erreurs humaines et aux incidents de sécurité. L'utilisation d'outils plus efficaces et de l'automatisation produit des processus de sécurité DevOps plus rapides et des applications plus résilientes. OCI fournit des outils de sécurité pour l'analyse de code, la gestion de la configuration, l'application de correctifs et la gestion des vulnérabilités avec les services Gestion du système d'exploitation et Balayage de vulnérabilités. Le service Chambre forte permet la gestion des données d'identification et des clés secrètes avec privilèges.

  3. Effectuer une détection complète.

    Validez, surveillez et ajoutez constamment tous les appareils, outils et comptes nécessaire au respect de votre politique de sécurité. Ce processus permet d'aligner vos ressources OCI afin d'adopter un modèle de sécurité basé sur le principe de confiance zéro.

  4. Gérer les vulnérabilités.

    Tous les types de vulnérabilité doivent être pris en compte, catalogués, validés et corrigés avant la mise en production du déploiement des applications. Nous vous recommandons d'intégrer la directive DevSecOps de l'OWASP à vos tests de sécurité DevSecOps.

  5. Accès sécurisé à l'aide de la gestion des clés secrètes du service DevOps.

    Lorsque vous mettez en oeuvre les processus DevOps, mettez l'accent sur la gestion de la sécurité et du cycle de vie des données d'identification et des comptes d'identité dans votre code. Le service de chambre forte peut vous aider à gérer les clés secrètes.

  6. Contrôler, surveiller et vérifier les accès à l'aide de la gestion des accès avec privilèges.

    L'adoption de services OCI tels que GIA, Politiques GIA DevOps , Journalisation et Surveillance peut vous aider à gérer l'accès avec privilèges.

  7. Segmenter les réseaux.

    Lorsque vous définissez des processus DevOps, vous devez segmenter vos réseaux pour réduire les surfaces d'attaque tout en isolant différents environnements de travail (par exemple, isoler les environnements de production et de test de développement).

Pour plus d'informations, voir Zone d'atterrissage en libre-service conforme à la norme CIS Foundations Benchmark pour Oracle Cloud.

Informations complémentaires

Pour plus d'informations, voir les ressources suivantes :