Niveaux de service Standard (ancienne version), Standard, Premium et Enterprise (obsolète)
Le niveau de service Security Command Center Enterprise sera arrêté le 21 mai 2027.
Si votre organisation utilise le niveau de service Enterprise, elle passera automatiquement au niveau de service Premium le 21 mai 2027 ou après.
Contactez votre responsable de compte ou un spécialiste des ventesGoogle Cloud si vous avez des questions.
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.
Workflow de notifications en temps quasi réel pour Security Command Center (cliquez pour agrandir)
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 the
resourcemanager.projects.create permission. Learn how to grant
roles .
Note : If you don't plan to keep the
resources that you create in this procedure, create a project instead of
selecting an existing project. After you finish these steps, you can
delete the project, removing all resources associated with the project.
Go to project selector
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 serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles .
Enable the API
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 the
resourcemanager.projects.create permission. Learn how to grant
roles .
Note : If you don't plan to keep the
resources that you create in this procedure, create a project instead of
selecting an existing project. After you finish these steps, you can
delete the project, removing all resources associated with the project.
Go to project selector
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 serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles .
Enable the API
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
Important : Si vous avez déjà configuré Security Command Center pour publier des résultats dans Pub/Sub, vous pouvez passer à l'étape Configurer une application de messagerie . Sinon, suivez les instructions de cette section pour 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.
Remarque : Cet ID de projet est utilisé tout au long de ce document.
export PROJECT_ID = PROJECT_ID
Remplacez PROJECT_ID par l'ID du projet.
Spécifiez votre organisation Google Cloud dans une variable d'environnement.
export ORG_ID = ORG_ID
Remplacez ORG_ID par votre ID d'organisation.
Définissez l'ID du projet pour les commandes gcloud.
gcloud config set project PROJECT_ID
Créez le sujet Pub/Sub dans lequel les notifications sont publiées.
gcloud pubsub topics create scc-critical-and-high-severity-findings-topic
Spécifiez le sujet dans une variable d'environnement.
export TOPIC = projects/$PROJECT_ID /topics/scc-critical-and-high-severity-findings-topic
Cré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-topic
Remarque : Par défaut, les abonnements Pub/Sub expirent au bout de 31 jours d'inactivité, définie comme l'absence de connexion active, de demandes d'extraction ou de requêtes push ayant réussi. Pour conserver les abonnements plus longtemps, définissez l'option --expiration-period sur une valeur supérieure ou sur la valeur spéciale never, qui indique que l'abonnement n'expire jamais. Pour en savoir plus, consultez la page Utiliser les propriétés d'abonnement .
Configurer 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 le lieu global. En savoir plus sur le filtrage des résultats
gcloud scc notifications create scc-critical-high-severity \
--pubsub-topic= $TOPIC \
--organization= $ORG_ID \
--location= global \
--filter '(severity="HIGH" OR severity="CRITICAL") AND state="ACTIVE"'
Remarque : Si vous utilisez VPC Service Controls, vous devrez peut-être accorder l'accès aux ressources de projet protégées avant de créer un objet NotificationConfig pour recevoir des notifications. Pour en savoir plus, consultez Accorder l'accès à un périmètre dans VPC Service Controls .
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.
Remarque : L'exemple Slack montre comment envoyer des notifications avec des informations de base (la catégorie de résultat). Vous pouvez personnaliser cet exemple pour inclure autant d'informations que vous le souhaitez.
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:write
chat: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.
Remarque : Cet exemple de code nécessite de coder en dur les identifiants de l'utilisateur ou de l'application. Pour renforcer la sécurité et protéger les identifiants, envisagez d'utiliser Secret Manager avec Cloud Run Functions. Pour savoir comment procéder, consultez la section Utiliser des secrets dans la documentation Cloud Run Functions.
Dans la console Google Cloud , accédez à la page Services de Cloud Run Functions.
Accéder aux services
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.
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 requests et functions-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 quasi-temps 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 de l'activité 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 , accédez à la section État et modifiez les sélections pour que seule l'option Inactif soit sélectionnée. Le panneau Résultats de la requête 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-ci 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.
Vérifiez les journaux Stackdriver de votre fonction Cloud Run afin de déterminer si la fonction est appelée. Si elle n'est pas appelée, assurez-vous que les notifications sont correctement configurées.
Si la fonction Cloud Run est appelée, elle risque de planter.
Recherchez les erreurs dans Cloud Run Functions à l'aide de l'outil Google Cloud Error Reporting de la console .
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
Attention : La suppression d'un projet aura les effets suivants :
Tout le contenu du projet est supprimé. Si vous avez utilisé un projet existant pour les tâches décrites dans ce document et que vous le supprimez, vous supprimerez également tout autre travail effectué dans le projet.
Les ID de projets personnalisés sont perdus.
Lorsque vous avez créé ce projet, vous avez peut-être créé un ID de projet personnalisé que vous souhaitez utiliser à l'avenir. Pour conserver les URL qui utilisent l'ID de projet, telle qu'une URL appspot.com, supprimez les ressources sélectionnées dans le projet au lieu de supprimer l'ensemble du projet.
Si vous envisagez d'explorer plusieurs architectures, tutoriels et guides de démarrage rapide, réutiliser des projets peut vous aider à ne pas dépasser les limites de quotas des projets.
Dans la console Google Cloud , accédez à la page Gérer les ressources .
Accéder à 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= global
Remplacez ORG_ID par votre ID d'organisation.
Pour conserver votre configuration et suspendre temporairement les notifications, mettez en commentaire les appels send ou post dans 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 (delete ).
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 delete .
Étapes suivantes