Déploiement de clusters Analyse statique AppScan 360°

Analyse statique AppScan 360° peut être déployé dans n'importe quel environnement Kubernetes. Les graphiques Helm relatifs au déploiement de AppScan 360° SAST sont accessibles depuis HCL Harbor ou depuis le fichier d'archive (tar.gz) téléchargé depuis le portail licence et de téléchargement HCL. Chaque groupement contient un script (sast-service.sh) qui permet de simplifier les étapes de déploiement.

Déploiement de Analyse statique AppScan 360° à l'aide de graphiques Helm de HCL Harbor

Après avoir téléchargé le graphique Helm depuis Harbor :
  1. Assurez-vous que vous êtes connecté au bon cluster Kubernetes.

    Vérifiez que vous disposez du fichier de configuration de cluster approprié dans le dossier .kube.

  2. Obtenez le nom d'hôte du serveur ASCP.

    Par exemple, ascp.example.com

  3. Récupérez les fichiers de jeton d'authentification, de certificat et de clé privée du serveur ASCP sur la machine actuelle.
    • Le jeton d'authentification peut être spécifié pour le déploiement d'AppScan 360° SAST à l'aide de l'option --auth-token. Par exemple, --auth-token AgentsApiKey.txt.
    • Le certificat d'autorité de certification peut être spécifié pour le déploiement d'AppScan 360° SAST à l'aide de l'option --cert. Par exemple, --cert AppScan360_RootCA.crt.
    • La clé privée peut être spécifiée pour le déploiement d'AppScan 360° SAST à l'aide de l'option --cert-key. Par exemple, --cert-key AppScan360_RootCA.key.
  4. Obtenez le jeton d'authentification de l'utilisateur à partir de HCL Harbor > Profil utilisateur > Secret CLI et enregistrez-le dans un fichier.

    Par exemple, registry-token.txt.

  5. Créez un fichier pour stocker le mot de passe RabbitMQ.
    Par exemple, rabbitmq-pwd.txt. Ce mot de passe est configuré dans RabbitMQ lorsqu'il est installé.
    Remarque : Une fois configuré, ce mot de passe ne peut pas être modifié.
  6. Identifiez le fournisseur de stockage à utiliser.

    Azure prend en charge azurefile, mais si d'autres fournisseurs de stockage doivent être utilisés, assurez-vous qu'ils prennent en charge ReadWriteMany.

  7. Exécutez le script AppScan 360° SAST avec des options pour déployer le cluster localement. Exemple :
    > ./sast-service.sh --install 
                      --ingress-host <sast-ingress-fqdn> \
                      --server <ascp-fqdn> \
                      --cert AppScan360_RootCA.crt \
                      --cert-key AppScan360_RootCA.key \
                      --auth-token AgentsApiKey.txt \
                      --rabbitmq-password rabbitmq-pwd.txt \
                      --registry-user <harbor-username> \
                      --registry-token registry-token.txt \
                      --storage-class azurefile \
                      --ingress-class nginx
    Remarque :
    • Fournissez des droits d'exécution sur les fichiers de scripts. Par exemple, chmod -R +x sast-service.sh scripts/*.
    • Utilisez l'option -f pour spécifier le chemin d'accès à un fichier YAML avec des valeurs personnalisées, comme décrit dans la section Paramètres de configuration du déploiement. Par exemple, -f values.yaml.
  8. Vérifiez la réussite du déploiement :
    > kubectl get pods -n <NAMESPACE>
    <NAMESPACE> correspond à l'espace de noms sur lequel AppScan 360° SAST est installé. La valeur par défaut est hcl-appscan-sast.
  9. Vérifiez que tous les pods associés à AppScan 360° SAST sont opérationnels, comme suit :
    Nom du pod Prêt Statut Redémarrage Age
    analyzer-<pod-id> 1/1 En cours d'exécution X X
    ascp-adapter-<pod-id> 1/1 En cours d'exécution X X
    gateway-<pod-id> 1/1 En cours d'exécution X X
    preparer-<pod-id> 1/1 En cours d'exécution X X
    sast-service-rabbitmq-0 1/1 En cours d'exécution X X
    scan-manager-<pod-id> 1/1 En cours d'exécution X X
    workflow-manager--<pod-id> 1/1 En cours d'exécution X X
  10. Assurez-vous qu'AppScan 360° SAST est accessible à partir d'un navigateur à l'aide de l'adresse URL https://<sast-ingress-fqdn>.

    (Par exemple, https://sast.example.com)

Déploiement d'Analyse statique AppScan 360° à partir d'un fichier d'archive

Après avoir téléchargé et extrait le fichier tar.gz :
  1. Pour charger les images de conteneur dans ACR ou tout autre registre de votre choix, fournissez les informations d'identification du registre au script de déploiement à l'aide des options de paramètre suivantes :
    Remarque : Les images de conteneur AppScan 360° SAST doivent être chargées dans un registre distant compatible OCI.
    • --registry <registry> : Registre pour le transfert des images de conteneur. Exemple : appscanregistry.azurecr.io, docker.io.
    • --registry-user <registry-username> : Nom d'utilisateur du registre pour l'authentification.
    • --registry-token <registry-token-file> : Fichier contenant le jeton d'authentification de l'utilisateur du registre. Par exemple : --registry-token ./registry-token.txt
    • --load-images : Cette option indique que les images de conteneur doivent être chargées à partir du système de fichiers dans le registre. Les images de conteneur peuvent se trouver dans le chemin sast-service-base/images/*.image.
  2. Assurez-vous que vous êtes connecté au bon cluster Kubernetes.

    Vérifiez que vous disposez du fichier de configuration de cluster approprié dans le dossier .kube.

  3. Obtenez le nom d'hôte du serveur ASCP.

    Par exemple, ascp.example.com

  4. Récupérez les fichiers de jeton d'authentification, de certificat et de clé privée du serveur ASCP sur la machine actuelle.
    • Le jeton d'authentification peut être spécifié pour le déploiement d'AppScan 360° SAST à l'aide de l'option --auth-token. Par exemple, --auth-token AgentsApiKey.txt.
    • Le certificat d'autorité de certification peut être spécifié pour le déploiement d'AppScan 360° SAST à l'aide de l'option --cert. Par exemple, --cert AppScan360_RootCA.crt.
    • La clé privée peut être spécifiée pour le déploiement d'AppScan 360° SAST à l'aide de l'option --cert-key. Par exemple, --cert-key AppScan360_RootCA.key.
  5. Créez un fichier pour stocker le mot de passe RabbitMQ.
    Par exemple, rabbitmq-pwd.txt. Ce mot de passe est configuré dans RabbitMQ lorsqu'il est installé.
    Remarque : Une fois configuré, ce mot de passe ne peut pas être modifié.
  6. Identifiez le fournisseur de stockage à utiliser.

    Azure prend en charge azurefile, mais si d'autres fournisseurs de stockage doivent être utilisés, assurez-vous qu'ils prennent en charge ReadWriteMany.

  7. Exécutez le script AppScan 360° SAST avec des options pour déployer le cluster localement. Exemple :
    > ./sast-service.sh --install 
                        --ingress-host <sast-ingress-fqdn> \
                        --server <ascp-fqdn>
                        --cert AppScan360_RootCA.crt \
                        --cert-key AppScan360_RootCA.key \
                        --auth-token AgentsApiKey.txt \
                        --rabbitmq-password rabbitmq-pwd.txt \
                        --registry <registry-name> \
                        --registry-user <registry-username> \
                        --registry-token <registry-token-file> \
                        --storage-class azurefile \
                        --ingress-class nginx \
                        --load-images
    Remarque : Utilisez l'option -f pour spécifier le chemin d'accès à un fichier YAML avec des valeurs personnalisées, comme décrit dans la section Paramètres de configuration du déploiement. Par exemple, -f values.yaml.
  8. Vérifiez la réussite du déploiement :
    > kubectl get pods -n <NAMESPACE>
    <NAMESPACE> correspond à l'espace de noms sur lequel AppScan 360° SAST est installé. hcl-appscan-sast par défaut.
  9. Vérifiez que tous les pods associés à AppScan 360° SAST sont opérationnels, comme suit :
    Nom du pod Prêt Statut Redémarrage Age
    analyzer-<pod-id> 1/1 En cours d'exécution X X
    ascp-adapter-<pod-id> 1/1 En cours d'exécution X X
    gateway-<pod-id> 1/1 En cours d'exécution X X
    preparer-<pod-id> 1/1 En cours d'exécution X X
    sast-service-rabbitmq-0 1/1 En cours d'exécution X X
    scan-manager-<pod-id> 1/1 En cours d'exécution X X
    workflow-manager--<pod-id> 1/1 En cours d'exécution X X
  10. Assurez-vous qu'AppScan 360° SAST est accessible à partir d'un navigateur à l'aide de l'adresse URL https://<sast-ingress-fqdn>.

    (Par exemple, https://sast.example.com).

Intégration avec ASCP

L'URL d'entrée de Analyse statique AppScan 360° doit être configurée dans ASCP pour une intégration réussie entre les composants AppScan 360°. L'URL peut être configurée lors de l'installation ou de la reconfiguration du serveur ASCP, ou en tant qu'étape après l'installation.

Configuration de l'ingress AppScan 360° SAST

Pour configurer l'ingress fourni afin d'utiliser https, utilisez une annotation nginx.ingress.kubernetes.io/backend-protocol pour indiquer comment NGINX doit communiquer avec le service back-end :

  • Paramètre
    global.ingress.additionalAnnotations
  • Description

    Liste des annotations à configurer dans l'ingress Analyse statique AppScan 360°.

  • Exemple
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS

Reconfiguration d'Analyse statique AppScan 360°

Après le déploiement initial d'Analyse statique AppScan 360°, les utilisations suivantes du script de déploiement reconfigurent les clusters Kubernetes à l'aide des dernières options de déploiement spécifiées. Il n'est pas nécessaire de supprimer les clusters.

Pour vérifier que le script de déploiement reconfigure une installation existante, recherchez le message suivant dans les messages de sortie du script :
Namespace 'hcl-appscan-sast' already exists. The SAST deployment will be upgraded.
Remarque : Dans certaines situations, l'espace de noms peut persister dans un état de fin alors qu'aucun déploiement n'est disponible sur le cluster. Dans ce scénario, la reconfiguration échoue. Supprimez manuellement l'espace de noms et réessayez d'effectuer le déploiement.

Options de commande de déploiement

Paramètre Description Valeur par défaut Obligatoire
-h|-help Affiche les commandes disponibles et l'utilisation appropriée.
-i|--install Déployez AppScan 360° SAST. Cet indicateur n'attend aucune valeur d'option. N/A Oui
-s|--server hostname Fournit le nom d'hôte du serveur ASCP (FQDN). Le serveur ASCP est configuré dans le cadre de l'installation de la plateforme AppScan 360° et permet à l'utilisateur de lancer un examen Analyse statique AppScan 360°. Oui
-cc|--cert cert-file-path Pour configurer TLS et HTTPS, fournissez un chemin d'accès complet à un fichier de certificat signé. Oui
-ck|--cert-key key-file-path Indiquez le chemin d'accès correspondant à la clé privée pour le certificat spécifié. Oui
-at|--auth-token token Autorisation de connexion ASCP avec les services SAST. Il facilite également les communications et les échanges entre les services de plateforme ASCP et ASCP. Oui
-p |--rabbitmq-passwords pwd-file-path Spécifie le chemin d'accès au fichier du mot de passe de l'utilisateur RabbitMQ. Remarque : Une fois configuré, le mot de passe RabbitMQ ne peut pas être modifié. Oui
-sc|--storage-class name permet aux utilisateurs de configurer le fournisseur de stockage à utiliser pour toutes les exigences de stockage AppScan 360° SAST. Exemples : local-path, azurefile et longhorn. Oui
-r |--registry registry Nom du registre pour charger les images.
Remarque : Pour les déploiements cloud qui utilisent un fichier d'archive contenant des images SAST, un registre accessible par le registre cloud K8S doit être fourni pour garantir que l'extraction d'images est possible pendant le déploiement.
  • Lorsque -x est spécifié pour le chargement d'images.
  • Lorsqu'un déploiement d'archive est utilisé pour le déploiement.
-ru|--registry-user username Nom d'utilisateur du registre fourni. Oui, sauf lors du déploiement pendant l’utilisation d’un fichier archive dans un cluster Kubernetes local (K3S, par exemple).
-rt, --registry-token token-file-path Chemin d'accès à un fichier contenant le jeton d'authentification de l'utilisateur pour le registre spécifié.
Remarque : Pour des raisons de sécurité, le jeton ne peut être fourni qu'à l'aide d'un fichier.
Oui, sauf lors du déploiement pendant l’utilisation d’un fichier archive dans un cluster Kubernetes local (K3S, par exemple).
-ro|-repo|--repository repository Chemin d'accès au référentiel permettant de localiser les images et les graphiques Helm. appscan360-sast/sast-service Non
-v, --version Version d'AppScan 360° SAST à télécharger. Par défaut, la version du script utilisée pour le déploiement actuel est utilisée. Non
-t, --tag image-tag Version d'AppScan 360° SAST à installer. Lorsqu'elle n'est pas spécifiée, la dernière version du référentiel ou de l'archive est utilisée. Dernière version disponible. Non
-n|--namespace L'espace de noms où AppScan 360° SAST est déployé. hcl-appscan-sast Non
-f|--config-file yaml-file-path Configurez ou personnalisez le déploiement du conteneur avec un fichier yaml spécifiant les détails de la configuration. Voir Paramètres de configuration du déploiement pour plus d'informations sur la configuration du fichier yaml. N/A Non
-ih|--ingress-host hostname

Un nom de domaine complet (FQDN) pour l'accès à l'ingress AppScan 360° SAST après le déploiement.

Si le nom de domaine complet fourni ne peut pas être résolu dans le DNS, assurez-vous que le fichier ‘/etc/hosts’ est mis à jour pour mapper le nom de domaine complet à l'adresse IP correspondante.

sast.example.com Non
-ic|--ingress-class name Le contrôleur d'ingress est utilisé pour exposer l'AppScan 360° SAST par le biais du service de passerelle. Si cela n'est pas spécifié, aucun contrôleur d'entrée n'est configuré. Non
-x, --load-images Lors du téléchargement d'une archive à partir de FNO, ce paramètre indique que les images de conteneur doivent être chargées à partir du système de fichiers et transférées vers le registre de conteneur spécifié. Cette option doit être utilisée pour les déploiements en mode étanche uniquement.
-verbose Génère des messages complets relatifs au déploiement dans la console. Non

Exemples

Déploiement Cloud (Azure) à l'aide de graphiques Helm de HCL Harbor :
> az login ...
> ./sast-service.sh --install \
                    --ingress-host test.sast.example.com \
                    --server test.ascp.example.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry-user hcl-harbor-user \
                    --registry-token ./registry-token.txt \
                    --ingress-class nginx \
                    --storage-class azurefile
Déploiement Cloud (Azure) à l'aide d'un fichier d'archive :
> az login ...
> ./sast-service.sh --install \
                    --ingress-host test.sast.example.com \
                    --server test.ascp.example.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry appscanregistry.azurecr.io \
                    --registry-user azure-user \
                    --registry-token ./registry-token.txt \
                    --ingress-class nginx \
                    --storage-class azurefile \
                    --load-images
Déploiement Kubernetes local à l'aide de graphiques Helm de HCL Harbor :
> ./sast-service.sh --install \
                    --ingress-host test.sast.example.com \
                    --server test.ascp.example.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry-user hcl-harbor-user \
                    --registry-token ./registry-token.txt \
                    --ingress-class nginx \
                    --storage-class local-path
Déploiement Kubernetes local à l'aide d'un fichier d'archive :
> ./sast-service.sh --install \
                    --ingress-host test.sast.example.com \
                    --server test.ascp.example.com \
                    --cert ./AppScan360_RootCA.crt \
                    --cert-key ./AppScan360_RootCA.key \
                    --auth-token ./AgentsApiKey.txt \
                    --rabbitmq-password ./rabbitmq-pwd.txt \
                    --registry docker.io \
                    --ingress-class nginx \
                    --storage-class local-path \
                    --load-images

Accéder à AppScan 360° SAST après le déploiement

Après un déploiement réussi, les API REST AppScan 360° SAST sont accessibles à l'aide de l'interface utilisateur Swagger :
> https://<appscan sast url>/swagger-ui/index.html
AppScan 360° SAST utilise l'authentification basée sur les jetons spécifiée lors du déploiement à l'aide de l'option —auth-token. Vous pouvez extraire le jeton à l'aide de la commande suivante :
> kubectl get secrets -n hcl-appscan-sast sast-service-secret -o jsonpath="{.data.SAST_AUTH_TOKEN}" | base64 -d