Créer des intégrations personnalisées
Ce document explique les workflows permettant de créer des intégrations personnalisées pour Google SecOps. La bonne pratique actuelle consiste à développer des intégrations localement à l'aide de l'IDE de votre choix et à les gérer via GitHub à l'aide de workflows GitOps modernes. Pour les environnements anciens ou les prototypes rapides, vous pouvez également créer des intégrations directement dans l'IDE SOAR intégré.
IDE local et workflow GitHub (recommandé)
Le workflow recommandé consiste à développer des intégrations localement et à les gérer via GitHub. Cette approche s'aligne sur les pratiques GitOps modernes, ce qui permet d'améliorer le contrôle des versions, la collaboration et la gestion automatisée des dépendances.
Présentation du workflow conceptuel
Pour développer des intégrations personnalisées en local, nous vous recommandons de suivre ce cycle de vie GitOps. Pour connaître la syntaxe exacte et à jour de ces commandes, consultez la documentation officielle de la CLI MP sur GitHub.
- Dupliquer et cloner : clonez le dépôt
content-hubofficiel sur votre ordinateur de développement local. - Installer les outils : installez l'outil de CLI
mpet le gestionnaire de packages Pythonuv. - S'authentifier : connectez-vous à votre environnement Google SecOps via la CLI MP à l'aide de l'URL de votre instance et de vos clés API.
- Développer en local : utilisez l'IDE de votre choix (comme VS Code ou PyCharm) pour écrire votre code d'intégration, en profitant des outils de débogage et de test locaux.
- Gérer les dépendances : utilisez
uvpour déclarer et gérer les dépendances (commeTIPCommon) dans votre fichierpyproject.tomllocal. - Synchroniser : utilisez les commandes
mp pulletmp pushpour synchroniser votre code local avec votre instance Google SecOps à des fins de test et de déploiement.
Alternative : Créer une intégration personnalisée dans l'IDE intégré
Si vous gérez des intégrations anciennes, que vous testez rapidement un script ou que vous travaillez dans un environnement où le développement local est limité, vous pouvez utiliser l'IDE intégré.
Cas d'utilisation : créer une intégration Armis personnalisée
Pour créer l'intégration personnalisée dans l'IDE, procédez comme suit :
- Dans le menu principal, accédez à Réponse > IDE.
- Cliquez sur Créer un élément, puis sélectionnez Intégration.
- Saisissez un nom, puis cliquez sur Créer.
L'intégration est désormais listée avec l'option settings Paramètres, ce qui indique qu'il s'agit d'une intégration personnalisée.
Cliquez sur Paramètres pour afficher les paramètres d'intégration, où vous pouvez définir l'icône, la description, les dépendances Python et les paramètres d'intégration.
Créer un gestionnaire personnalisé
Les gestionnaires sont des wrappers pour les API d'outils tiers. Bien qu'ils ne soient pas obligatoires, nous les recommandons pour les intégrations qui interagissent avec des outils externes. Les gestionnaires ne doivent pas importer depuis le SDK. Après les avoir créés, importez-les dans des connecteurs, des actions et des jobs.
Pour créer un gestionnaire personnalisé, procédez comme suit :
- Dans l'IDE, cliquez sur Create New Item (Créer un élément) et sélectionnez Manager (Gestionnaire).
- Sélectionnez l'intégration Armis, puis saisissez le nom d'un gestionnaire.
- Modifiez et exécutez le script suivant :
import requests
class ArmisManager:
def init(self, api_root, api_token):
self.api_root = api_root
self.api_token = api_token
self.session = requests.session()
self.session.headers = {"Accept": "application/json"}
def auth(self):
endpoint = "{}/api/vi/access_token/*"
params = {"secret_key" : self.api_token}
response = self.session.post(endpoint.format(self.api_root), params=params)
self.validate_response(response)
access_token = response.json()["data"]["access_token"]
self.session.headers.update({"Authorization": access_token})
return True
def get_device_by_ip(self, device_ip):
endpoint = "{}/api/vi/devices/"
params = {"ip": device_ip}
response = self.session.get(endpoint.format(self.api_root), params=params)
self.validate_response(response)
return response.json()["data"]["data"]
@staticmethod
def validate_response(res, error_msg="An error occurred"):
"""Validate a response
:param res: (requests. Response) The response to validate
:param error_msg: (str) The error message to display
"""
try:
res.raise_for_status()
except requests.HTTPError as error:
raise Exception("(error_msg): (error) (text)".format(
error_msg=error_msg,
error=error,
text=error.response.content
))
Paramètres, configuration de Google SecOps Content Hub et action Ping
Les paramètres définis dans les paramètres d'intégration s'affichent dans la configuration de Google SecOps Content Hub. Les paramètres sont les suivants :
- Racine de l'API : URL de base du service auquel vous vous connectez.
- Code secret de l'API : clé confidentielle utilisée pour authentifier votre application auprès du service.
- Case à cocher Valider SSL : si cette option est activée, elle vérifie que le certificat SSL de la connexion au serveur Armis est valide.
- Case à cocher Exécuter à distance : paramètre qui détermine si le code ou la tâche seront exécutés sur un serveur distant plutôt que localement. Lorsque cette option est activée, le système envoie les instructions et les données nécessaires à un serveur dédié pour traitement.
Pour mettre à jour les paramètres, procédez comme suit :
- Saisissez les bons identifiants.
- Cliquez sur Enregistrer > Tester.
Si l'action Ping est manquante, le bouton Tester échoue et affiche un X rouge.
Implémenter une action Ping
La logique de l'action Ping agit comme une authentification réussie.
Pour implémenter une action Ping, procédez comme suit :
- Dans l'IDE, créez une action dans l'intégration Armis nommée
Ping. - Utilisez la méthode
ArmisManagerauthpour vérifier l'authentification.
Activer l'intégration
Pour activer l'intégration, procédez comme suit :
- Dans Réponse > IDE, activez l'option Activer/Désactiver.
- Cliquez sur Enregistrer. Un bouton vert confirme que l'opération a réussi. Les identifiants du Content Hub sont transmis à ArmisManager. Si
authse termine sans erreur, le bouton Tester affiche une coche verte.
Utilisez la méthode extract_configuration_param pour importer des paramètres à partir de la configuration de l'intégration. Vous pouvez également utiliser extract_action_param pour définir des paramètres dans l'action elle-même. Toutefois, l'action Ping doit toujours utiliser des paramètres de configuration, car ils sont testés par Content Hub.
Afficher les intégrations personnalisées
Accédez au Content Hub et recherchez l'intégration personnalisée que vous avez créée. Si vous n'avez pas créé d'image lors de la configuration initiale, l'image personnalisée par défaut lui sera attribuée. Notez que les mises à jour de Content Hub ne remplacent ni ne suppriment les intégrations personnalisées.
Exporter et importer dans l'IDE
Effectuez l'une des opérations suivantes :
- Pour importer des intégrations, procédez comme suit :
- Importez un fichier ZIP avec la structure de dossiers appropriée. L'intégration apparaît dans l'IDE et Content Hub.
- Cliquez sur Importer. L'intégration apparaît à la fois dans l'IDE et dans le Content Hub.
- Le système génère un fichier ZIP contenant la définition, les scripts et la configuration. Le dossier Managers n'est pas inclus automatiquement.
- Pour exporter des intégrations, procédez comme suit :
- Cliquez sur Exporter pour télécharger le package.
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.