Déploiement d'un agent IAST pour les microservices sur Kubernetes

AppScan prend en charge l'installation automatique de l'agent IAST sur un cluster Kubernetes. À l'aide d'un MutatingAdmissionWebhook, l'agent IAST est automatiquement installé sur n'importe quel pod de démarrage. Vous pouvez installer ou supprimer l'agent à l'aide de scripts Helm ou Webhook.

Pourquoi et quand exécuter cette tâche

Remarque : L'agent Kubernetes n'est pas disponible pour le téléchargement FIPS d'AppScan 360°.
Illustration des étapes d'installation d'un agent IAST sur Kubernetes, avec prise en charge des applications Java, .NET et Node.js.

Image montrant l'installation sur Kubernetes

Instructions générales

Procédure

  1. Télécharger l'agent :

    Téléchargez l'agent IAST Kubernetes AppScan 360°, comme décrit ici, et extrayez le contenu du fichier ZIP.

  2. Installer l'agent IAST dans le cluster :

    L'agent peut être installé dans un ou plusieurs espaces de noms. Un MutatingAdmissionWebhook est déployé et injecte automatiquement l'agent IAST dans chaque pod créé dans les espaces de noms sélectionnés. Si aucun espace de noms n'est indiqué, l'espace de noms par défaut est utilisé.

    Installez l'agent à l'aide de l'une des méthodes suivantes :

  3. Redémarrer les pods existants :

    Après l'installation, redémarrez tous les pods en cours d'exécution dans les espaces de noms cibles pour vous assurer que l'agent IAST est injecté.

  4. Affichage des noms de pods dans les problèmes :

    Les noms de pods pour les problèmes signalés sont disponibles sous Informations supplémentaires dans l'onglet Détails du problème.

  5. Facultatif : Les fonctions facultatives suivantes sont disponibles :
    1. Configuration d'agent personnalisé : Utilisez cette option pour exclure des pods spécifiques.
    2. Utilisation d'un registre privé.
    3. Déployez plusieurs agents dans différents espaces de noms à l'aide de la méthode d'installation basée sur Helm ou basée sur des scripts.
    4. Analyseur IAST : Permet d'obtenir une vue graphique complète des services tout en contribuant à réduire le nombre de faux positifs. Actuellement pris en charge pour Node.js et .NET uniquement.

      Graphique des services affichant un problème d'injection de commandes dans les pods Kubernetes.

Installation basée sur Helm

Pourquoi et quand exécuter cette tâche

Pour installer ou désinstaller l'agent IAST dans votre cluster Kubernetes en utilisant le graphique Helm, suivez ces étapes.

Procédure

  1. Installer l'agent IAST :
    1. Installez dans l'espace de noms par défaut :

      helm install secagent helm-secagent --wait

    2. Installez dans un ou plusieurs espaces de noms :
      helm install secagent helm-secagent --wait --set 
      config.namespaceConfig.namespaces={my-namespace1,my-namespace2}
    3. Installez plusieurs agents dans le même cluster (espaces de noms différents) :
      1. Installez le premier agent dans les espaces de noms requis en suivant les étapes précédentes.
      2. Pour installer un autre agent, téléchargez un autre package d'agent et installez-le à l'aide de la même commande.
        helm upgrade secagent helm-secagent --wait --set 
        config.namespaceConfig.namespaces={my-namespace3,my-namespace4}
    4. Facultatif : Installez avec l'Analyseur activé :
      helm install secagent helm-secagent --wait \
       --set config.namespaceConfig.namespaces={my-namespace} \
       --set analyzer.enabled=true 
  2. Désinstallez l'agent IAST : Exécutez la commande suivante :
    helm uninstall secagent

    Cette opération supprime la version Helm nommée secagent. Redémarrez ensuite tous les pods en cours d'exécution pour finaliser la suppression.

    Pour une configuration avancée et une documentation complète, voir helm-secagent/README.md.

Installation basée sur des scripts

Pourquoi et quand exécuter cette tâche

Pour installer ou désinstaller l'agent IAST dans votre cluster Kubernetes à l'aide des scripts, procédez comme suit.

Procédure

  1. Installer l'agent IAST :
    1. Installez dans l'espace de noms par défaut :
      ./install-secagent-webhook.sh
    2. Installez dans un ou plusieurs espaces de noms :
      ./install-secagent-webhook.sh -n my-namespace1 -n my-namespace2
    3. Installez plusieurs agents dans le même cluster (espaces de noms différents) :
      1. Installez le premier agent dans les espaces de noms requis en suivant les étapes précédentes.
      2. Pour installer un autre agent, téléchargez un autre package d'agent et installez-le à l'aide de la même commande.
        ./install-secagent-webhook.sh -n my-namespace3 -n my-namespace4
    4. Facultatif : Installez avec l'Analyseur activé :
      ./install-secagent-webhook.sh -n my-namespace --with-analyzer
  2. Désinstallez l'agent IAST : Exécutez la commande suivante :
    ./uninstall-secagent-webhook.sh

    Une fois l'exécution du script terminée, redémarrez tous les pods en cours d'exécution pour terminer la suppression.

Exclusion d'un pod de l'installation IAST

Procédure

  1. Excluez un pod spécifique dans un espace de noms inclus.

    Ajoutez le libellé skip-iast-webhook="true" à la configuration YAML du pod.

    Un pod créé avec ce libellé est ignoré par IAST Mutating Webhook.
  2. Pour inclure à nouveau le pod, supprimez le libellé ou définissez-le sur false, puis redémarrez le pod.
  3. Exclusion de pods via une configuration utilisateur :
    Si le fichier YAML Kubernetes n'est pas accessible pour modification, vous pouvez exclure des pods de l'instrumentation IAST à l'aide d'un fichier de configuration utilisateur.
    Un exemple de fichier user-config.json est disponible dans le dossierexamples du package téléchargé.
    Exemple
    {  
    "name": "demo-app-frontend",  
    "namespace": "default",  
    "ignore": true,  
    "agents": ["java"] 
    }
    Description des champs
    • name (obligatoire) : Nom du pod.
    • namespace (obligatoire) : Espace de noms dans lequel le pod est exécuté.
    • ignore (facultatif) : Lorsque ce champ est défini sur TRUE, IAST ignore l'instrumentation pour ce pod.
    • agents (facultatif) : Spécifie quel(s) agent(s) IAST doit tenter d'installer. Si ce champ n'est pas renseigné, IAST essaiera tous les types d'agent pris en charge. Les valeurs sont les suivantes : [java, net-core, nodejs]

Utilisation d'un registre privé

Pourquoi et quand exécuter cette tâche

Les images IAST sont stockées dans un registre Azure public. Pour exécuter IAST dans un environnement isolé, vous devez charger les images dans un registre privé.

Procédure

  1. Extrayez les images du registre IAST public :
    docker pull iastappscan.azurecr.io/webhook-certificate:latest
    docker pull iastappscan.azurecr.io/webhook-server:latest
    docker pull iastappscan.azurecr.io/secagent-sidecar:latest
  2. Déployez les images vers votre registre privé.
    Example:
    docker tag iastappscan.azurecr.io/secagent-sidecar:latest 
    my.registry.com/secagent-sidecar:latest
    Docker push my.registry.com/secagent-sidecar:latest
  3. Exécutez le script avec le paramètre suivant :
    ./install-secagent-webhook.sh -n my-namespace --registry=my.registry.com 
    Vous pouvez également utiliser le graphique Helm :
     helm install secagent helm-secagent --wait \
    --set config.namespaceConfig.namespaces={test-ns1,test-ns2,test-ns3} \
    --set registry=my.registry.com 
  4. Si le registre privé nécessite une authentification, procédez comme suit :
    1. Créez un fichier secret JSON :

      Fichier secret JSON

    2. Exécutez le script ou le graphique Helm comme suit :
      Script:
      ./install-secagent-webhook.sh -n my-namespace --registry=my.registry.com  
      --registry-config-file=/path/to/registry-credentials.json
      Helm chart:
       helm install secagent helm-secagent --wait \
      --set config.namespaceConfig.namespaces={test-ns1,test-ns2,test-ns3} \
        --set registry=my.registry.com \
      --set-file registryConfigFile

Installation dans des environnements restreints

Pourquoi et quand exécuter cette tâche

Le script d'installation crée un espace de nomssecagent dans lequel MutatingAdmissionWebhook est déployé.
Dans certains environnements restreints, la création automatique d'espaces de noms n'est pas autorisée. Par exemple :
  • Plateformes Kubernetes gérées, telles que les clusters d'entreprise ou gérés dans le cloud, où seuls les administrateurs peuvent créer des espaces de noms.
  • Environnements avec des stratégies RBAC strictes qui empêchent les comptes de service ou les scripts de créer des espaces de noms.
  • Clusters avec espaces de noms pré-provisionnés qui doivent être utilisés tels quels.

Procédure

  1. Créez et configurez manuellement l'espace de noms à l'avance.
  2. Installez l'agent dans les espaces de noms requis en suivant les étapes précédentes. Si un espace de noms nommé secagent existe déjà, le script d'installation le détecte et l'utilise sans tenter de le recréer.
  3. Pour désinstaller, notez que le script de désinstallation supprime l'espace de nomssecagent et toutes les ressources associées par défaut. Pour désinstaller le webhook sans supprimer l'espace de noms ni la configuration RBAC associée, utilisez la commande suivante :
    ./uninstall-secagent-webhook.sh --keep-namespace