Présentation
Security Command Center fournit des notifications en temps réel sur ses résultats dans la consoleGoogle Cloud . Ce guide explique comment utiliser les services Google Cloud et les API tierces pour étendre ces fonctionnalités et recevoir des notifications en temps quasi réel dans Slack. Après l'avoir terminé, vous recevez des alertes concernant les nouveaux résultats des services tiers configurés sans vous connecter à la console Google Cloud . Vous pouvez ainsi trier plus rapidement les failles et les menaces. Découvrez les différents types de failles et menaces dans Security Command Center.
Topologie
Dans ce guide, vous créez la configuration illustrée dans le schéma suivant.
Objectifs
Dans ce guide, vous allez exécuter les opérations suivantes :
- Configurer un sujet Pub/Sub
- Configurez Slack.
- Écrire du code dans Cloud Run Functions
- Configurer Pub/Sub et Cloud Run Functions pour envoyer des notifications à Slack chaque fois qu'un résultat de gravité élevée ou critique est écrit dans Security Command Center.
- Résoudre les problèmes de notification
Coûts
Ce tutoriel fait appel à des composants payants de Google Cloud, y compris :
- Pub/Sub
- Cloud Run Functions
- Cloud Build
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du Simulateur de coût.
Avant de commencer
Pour suivre ce guide, vous devez disposer des rôles Identity and Access Management (IAM) suivants :
- Administrateur de l'organisation (
roles/resourcemanager.organizationAdmin) - Administrateur du centre de sécurité (
roles/securitycenter.admin) - Administrateur de sécurité (
roles/iam.securityAdmin) - Un rôle disposant de l'autorisation
serviceusage.services.use, tel que Propriétaire (roles/owner), Éditeur (roles/editor) ou un rôle personnalisé - Créateur de comptes de service (
roles/iam.serviceAccountCreator) - Éditeur Pub/Sub (
roles/pubsub.editor) - Administrateur de compte de facturation (
roles/billing.admin)
Les rôles IAM pour Security Command Center peuvent être accordés au niveau de l'organisation, du dossier ou du projet. Votre capacité à afficher, modifier, créer ou mettre à jour les résultats, les éléments et les sources de sécurité dépend du niveau pour lequel vous disposez d'un accès. Pour en savoir plus sur les rôles Security Command Center, consultez la page Contrôle des accès.
Configurer un projet
Pour créer ou sélectionner un projet, procédez comme suit.
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init
Durée estimée : la configuration et le test des notifications d'un seul service prend environ une heure.
Configurer un sujet Pub/Sub
Pub/Sub est un service de messagerie en temps réel qui permet l'envoi et la réception de messages entre applications indépendantes. En savoir plus sur Pub/Sub.
Dans cette section, vous allez configurer Security Command Center pour publier les résultats dans un sujet Pub/Sub.
Pour configurer un sujet Pub/Sub et vous y abonner, procédez comme suit :
Spécifiez votre projet Google Cloud dans une variable d'environnement.
export PROJECT_ID=PROJECT_IDRemplacez PROJECT_ID par l'ID du projet.
Spécifiez votre organisation Google Cloud dans une variable d'environnement.
export ORG_ID=ORG_IDRemplacez ORG_ID par votre ID d'organisation.
Définissez l'ID du projet pour les commandes
gcloud.gcloud config set project PROJECT_IDCréez le sujet Pub/Sub dans lequel les notifications sont publiées.
gcloud pubsub topics create scc-critical-and-high-severity-findings-topicSpécifiez le sujet dans une variable d'environnement.
export TOPIC=projects/$PROJECT_ID/topics/scc-critical-and-high-severity-findings-topicCréez l'abonnement qui indique aux fonctions Cloud Run d'envoyer un message de chat lorsque des messages sont publiés sur le sujet.
gcloud pubsub subscriptions create scc-critical-and-high-severity-findings-sub \ --topic scc-critical-and-high-severity-findings-topicConfigurer Security Command Center pour publier des notifications sur le sujet. Tous les filtres compatibles avec l'API ListFindings peuvent être utilisés.
Le filtre suivant publie des notifications pour les résultats actifs de gravité élevée et critique dans l'emplacement
global. En savoir plus sur le filtrage des résultatsgcloud scc notifications create scc-critical-high-severity \ --pubsub-topic=$TOPIC \ --organization=$ORG_ID \ --location=global \ --filter '(severity="HIGH" OR severity="CRITICAL") AND state="ACTIVE"'
Vous créez ou configurez ensuite votre application de chat pour recevoir des notifications de Pub/Sub.
Configurer une application de messagerie
Cette section explique comment utiliser Pub/Sub et les fonctions Cloud Run ou Cloud Run Functions (1re génération) pour activer les notifications en temps quasi réel pour Slack.
Pour envoyer des notifications à un canal Slack, procédez comme suit : * Créez une application Slack disposant de droits suffisants pour publier des messages sur un canal Slack public. * Créez et déployez une fonction Cloud Run qui publie des messages de chat sur Slack lorsque des notifications proviennent de Pub/Sub.
### Créer une application Slack
Dans cette section, vous allez créer une application Slack pour recevoir des notifications.
- Accédez à la liste des applications de l'API Slack. La page s'ouvre dans un autre onglet.
Se connecter ou créer un compte.
Sélectionnez Créer une application.
Définissez le nom de l'application sur SCC Finding Notifier.
Sélectionnez l'espace de travail Slack de développement dans lequel vous souhaitez que le bot Slack publie des messages, puis cliquez sur Créer une application.
Dans le panneau de navigation, sélectionnez OAuth et autorisations.
Accédez à la section Champs d'application. Les champs d'application appartiennent à deux catégories :
- Champs d'application des jetons de bot
- Champs d'application des jetons d'utilisateur
Dans cet exercice, vous n'avez pas besoin d'ajouter un champ d'application de jeton d'utilisateur. Sous "Champs d'application des jetons de bot", cliquez sur Ajouter un champ d'application OAuth et saisissez les informations suivantes :
chat:writechat:write.public
En haut de la page OAuth et autorisations, cliquez sur Installer l'application dans l'espace de travail.
Dans la boîte de dialogue de confirmation, cliquez sur Autoriser.
Copiez le jeton d'accès OAuth de l'utilisateur bot pour l'utiliser dans Cloud Functions.
Vous allez ensuite déployer une fonction Cloud Run pour envoyer des notifications à un groupe Slack.
Créer la fonction Cloud Run Slack
Dans cette section, vous allez déployer une fonction permettant d'envoyer des notifications à votre compte Slack. L'exemple de code de cette section est écrit en Python, mais vous pouvez utiliser n'importe quel langage compatible avec les fonctions Cloud Run.
Dans la console Google Cloud , accédez à la page Services de Cloud Run Functions.
Sélectionnez l'ID du projet contenant le sujet Pub/Sub.
Cliquez sur Écrire une fonction, puis remplissez les champs :
- Dans le champ Nom du service, saisissez
slack-chat-high-and-critical-findings. - Pour Région, sélectionnez la région dans laquelle vous souhaitez stocker le service.
- Dans le champ Environnement d'exécution, sélectionnez la version de Python à utiliser pour exécuter votre fonction.
- Dans le champ Nom du service, saisissez
Cliquez sur Ajouter un déclencheur, puis sélectionnez Déclencheur Pub/Sub.
Saisissez les détails du sujet Pub/Sub que vous avez créé dans la section Configurer un sujet Pub/Sub, puis cliquez sur Enregistrer le déclencheur.
Cliquez sur Créer. Les détails du service s'affichent.
Dans le volet Source de l'onglet Source, cliquez sur requirements.txt.
Dans l'éditeur de code, ajoutez
requestsetfunctions-framework==3.*:requests functions-framework==3.*Dans le volet Source, cliquez sur main.py.
Dans l'éditeur de code, remplacez le code par ce qui suit :
import base64 import json import requests import functions_framework TOKEN = "BOT_ACCESS_TOKEN" @functions_framework.cloud_event def send_slack_chat_notification(cloud_event): pubsub_message = base64.b64decode(cloud_event.data["message"]["data"]).decode('utf-8').strip() message_json = json.loads(pubsub_message) finding = message_json['finding'] requests.post("https://slack.com/api/chat.postMessage", data={ "token": TOKEN, "channel": "#SLACK_CHANNEL_NAME", "text": f"A high severity finding {finding['category']} was detected." })Remplacez les éléments suivants :
BOT_ACCESS_TOKEN: jeton d'accès OAuth de l'utilisateur bot que vous avez créé avec l'application Slack.SLACK_CHANNEL_NAME: canal Slack sur lequel vous souhaitez envoyer les notifications.
Dans le champ Point d'entrée de la fonction, saisissez le nom de la fonction dans l'exemple de code :
send_slack_chat_notification.Cliquez sur Enregistrer et redéployer. Si une coche verte s'affiche à côté du nom de la fonction, cela signifie qu'elle a bien été déployée. Ce processus peut prendre quelques minutes.
Si les étapes précédentes se sont déroulées sans erreur, la configuration est terminée et vous commencez à recevoir des notifications. À noter :
- Vous recevez un message de chat distinct pour chaque résultat critique ou grave. La fréquence ou le nombre de notifications dépend des ressources de votre organisation.
- Les notifications sont publiées et envoyées en temps quasi réel. Cependant, l'immédiateté des messages n'est pas garantie. Plusieurs facteurs peuvent entraîner des retards, comme des problèmes liés à Slack.
Pour modifier le workflow des notifications, procédez comme suit :
- Modifiez les destinataires en mettant à jour votre fonction Cloud Run.
- Modifiez les résultats qui déclenchent des notifications en mettant à jour le filtre associé au sujet Pub/Sub.
Notifications de test
Pour vérifier si les notifications sont correctement configurées, suivez ces instructions pour faire passer les résultats de gravité élevée de l'état actif à l'état inactif.
- Accédez à la page "Résultats" de Security Command Center.
Accéder à la page Résultats - Sélectionnez votre organisation, si vous y êtes invité.
- Dans le panneau Filtres rapides, faites défiler la page jusqu'à la section Gravité, puis sélectionnez Élevée ou Critique. Le panneau Résultats de la requête de résultat est mis à jour pour n'afficher que les résultats de la gravité sélectionnée.
- Dans le panneau Résultats de requête sur les résultats, sélectionnez un résultat en cochant la case à côté de son nom.
- Dans le menu Modifier l'état actif de la barre d'actions Résultats de la requête, sélectionnez Inactif. Si la requête de résultats actuelle n'affiche que les résultats actifs, le résultat est supprimé des résultats de la requête.
- Dans le panneau Filtres rapides, faites défiler la page jusqu'à la section État, puis modifiez les sélections pour que seule l'option Inactif soit sélectionnée. Le panneau Résultats de la requête de résultat est mis à jour pour n'afficher que les résultats inactifs.
- Dans le panneau Résultats de la requête, sélectionnez le résultat que vous avez marqué comme inactif.
- Dans le menu Modifier l'état actif de la barre d'actions Résultats de la requête, sélectionnez Actif.
- Consultez vos messages Slack. Un message semblable à celui des images suivantes s'affiche :

Dépannage
Si les messages de chat ne sont pas envoyés ou reçus, suivez ces étapes pour identifier et résoudre les problèmes potentiels.
1. Check [Stackdriver
logs](https://console.cloud.google.com/projectselector2/logs/viewer) for
your Cloud Run function to determine whether the function is being
invoked. If it is not being invoked, ensure that notifications are set up
correctly.
1. If the Cloud Run function is being invoked, then it might be
crashing. Check for errors in Cloud Run functions using
[Google Cloud console Error Reporting]
(https://console.developers.google.com/errors).
Nettoyer
Pour éviter que les ressources utilisées dans ce tutoriel ne soient facturées sur votre compte Google Cloud , supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
- Dans la console Google Cloud , accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer des ressources individuelles
Supprimez votre configuration de notification :
gcloud scc notifications delete scc-critical-high-severity \ --organization=ORG_ID \ --location=globalRemplacez ORG_ID par votre ID d'organisation.
Pour conserver votre configuration et suspendre temporairement les notifications, mettez en commentaire les appels
sendoupostdans votre fonction Cloud Run.Supprimez votre fonction Cloud Run :
- Accédez à Cloud Run Functions.
Accéder à Cloud Run Functions - Cochez la case située à côté de l'objet à supprimer.
- Cliquez sur Supprimer ().
- Accédez à Cloud Run Functions.
Supprimez le compte de service :
- Accédez à la page Comptes de service.
Accédez à la page Comptes de service - Sélectionnez un projet.
- Sélectionnez le compte de service que vous souhaitez supprimer, puis cliquez sur Supprimer .
- Accédez à la page Comptes de service.
Étapes suivantes
- En savoir plus sur les erreurs de notification
- Découvrez comment filtrer les notifications.
- Découvrez comment corriger les résultats de Web Security Scanner et de Security Health Analytics.