Détecter les ressources exposées avec l'exposition externe

External Exposure de Security Command Center est un Google Cloud service qui vous aide à gérer et à réduire votre surface d'attaque externe grâce à la détection automatisée et à la validation des risques.

Étant donné que les analyseurs automatisés peuvent cibler les ressources exposées à Internet en quelques minutes, External Exposure détecte de manière proactive les expositions accidentelles et les ressources fantômes avant que les pirates informatiques ne puissent les découvrir et les exploiter.

En analysant votre environnement d'un point de vue externe, le service tente de confirmer ce qui est réellement accessible depuis Internet et d'identifier les expositions réellement exploitables.

External Exposure analyse en continu les adresses IP externes, les noms d'hôte, les noms de domaine et les URL de votre Google Cloud environnement. Cette fonctionnalité utilise l'analyse réseau pour confirmer les ressources et les applications accessibles depuis l'Internet public.

Pour chaque exposition confirmée, External Exposure effectue les opérations suivantes :

  • Trace et affiche le Google Cloud chemin réseau pour les équilibreurs de charge externes, les règles Google Cloud Armor, les règles de pare-feu, Private Service Connect, Cloud Interconnect et les services de backend jusqu'à la ressource exposée.

    Cette ressource peut être une instance Compute Engine ou un pod Google Kubernetes Engine (GKE), y compris un service ou une application exposés.

    Cette intégration étroite avec le tissu réseau Google permet de fournir un contexte exploitable afin que vous puissiez appliquer immédiatement des mesures d'atténuation préventives, telles que le verrouillage d'une règle de pare-feu spécifique ou la configuration de Google Cloud Armor.

  • Effectue une empreinte pour tenter d'identifier l'application Web ou le logiciel serveur spécifique qui s'exécute sur chaque ressource exposée.

  • S'il peut identifier le service ou le logiciel exposé, il identifie toutes les failles connues qui l'affectent.

  • Utilise des détecteurs passifs et actifs avancés pour tester l'exploitabilité réelle en validant les failles, les erreurs de configuration et l'utilisation d'identifiants par défaut ou faibles.

Avant de commencer

Cette section explique comment préparer votre environnement à utiliser External Exposure.

Activer l'API Security Center Management

Si vous prévoyez d'utiliser les API Security Command Center, vous devez activer l'API Security Center Management pour votre projet de quota et, si des règles d'administration sont utilisées pour limiter l'utilisation des API, assurez-vous que l'API Security Center Management est autorisée. L'API Security Center Management permet de contrôler l'état d'activation des services Security Command Center tels que External Exposure.

  1. Dans un terminal, activez l'API Security Center Management pour votre projet de quota :

    gcloud services enable securitycentermanagement.googleapis.com \
        --project=QUOTA_PROJECT_ID
    

    Remplacez QUOTA_PROJECT_ID par l'ID du projet que vous utilisez pour gérer le quota.

  2. Si vous disposez de règles d'administration qui limitent l'utilisation des API, assurez-vous que l'API Security Center Management est autorisée. Pour en savoir plus, consultez Examiner les règles d'administration.

  3. Si vous souhaitez recevoir des insights sur le chemin d'exposition réseau dans vos résultats, assurez-vous d'activer External Exposure au niveau de l'organisation ou du dossier.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer External Exposure et afficher les données du tableau de bord, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre organisation, votre dossier ou votre projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Les commandes Google Cloud CLI suivantes peuvent être utilisées pour attribuer les rôles précédents à un utilisateur :

Attribuer des rôles à l'aide de gcloud CLI

  • Pour accorder le rôle Administrateur du centre de sécurité à un utilisateur, exécutez la commande suivante :

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
        --member=user:USER_EMAIL_ID \
        --role=roles/securitycenter.admin
    
  • Pour accorder le rôle Lecteur administrateur du centre de sécurité à un utilisateur, exécutez la commande suivante :

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
        --member=user:USER_EMAIL_ID \
        --role=roles/securitycenter.adminViewer
    
  • Pour accorder le rôle Lecteur External Exposure à un utilisateur pour l'accès aux métriques de la CLI ou de l'API, exécutez la commande suivante :

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=user:USER_EMAIL_ID \
        --role=roles/externalexposure.viewer
    

    Remplacez les éléments suivants :

    • ORGANIZATION_ID : ID numérique d'organisation
    • PROJECT_ID : ID du projet
    • USER_EMAIL_ID : adresse e-mail de l'utilisateur qui a besoin d'accéder

Activer et configurer le service

Pour activer et configurer External Exposure, effectuez les tâches décrites dans les sections suivantes.

Vous pouvez activer et configurer le service au niveau de l'organisation, du dossier ou du projet. Lorsque vous utilisez l'API, si vous souhaitez configurer des paramètres au niveau du dossier ou de l'organisation plutôt qu'au niveau du projet, remplacez projects/PROJECT_ID par folders/FOLDER_ID ou organizations/ORGANIZATION_ID dans toutes les URL de requête et les paramètres de données JSON.

Activer External Exposure

Activez External Exposure pour votre organisation, votre dossier ou votre projet.

Une fois le service activé, assurez-vous d'accorder à l'agent de service les autorisations requises, comme décrit dans Accorder des autorisations à l'agent de service.

Console

  1. Dans la Google Cloud console, accédez à la page Activation du service pour External Exposure.

    Accéder à l'activation du service

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans l'onglet Activation du service , dans la colonne External Exposure , sélectionnez l'état d'activation de l'organisation, du dossier ou du projet que vous souhaitez modifier, puis sélectionnez l'une des options suivantes :

    • Activer : active External Exposure.
    • Désactiver : désactive External Exposure.
    • Hériter : hérite des paramètres de la ressource parente, à moins qu'ils ne soient remplacés sur la ressource enfant.

gcloud

Activez l'API Security Center Management et External Exposure pour votre champ d'application cible.

  1. Dans un terminal, activez l'API pour votre projet de quota :

    gcloud services enable securitycentermanagement.googleapis.com \
        --project=QUOTA_PROJECT_ID
    
  2. Dans un terminal, activez External Exposure à l'aide de l'API Security Center Management :

    curl --request PATCH \
      "https://securitycentermanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure?updateMask=intended_enablement_state" \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --header "X-Goog-User-Project: QUOTA_PROJECT_ID" \
      --header "Accept: application/json" \
      --header "Content-Type: application/json" \
      --data '{
        "intendedEnablementState": "ENABLED",
        "name": "projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure"
      }' \
      --compressed
    

    Remplacez les éléments suivants :

    • QUOTA_PROJECT_ID : ID du projet que vous utilisez pour gérer le quota.
    • PROJECT_ID : ID du projet dans lequel vous souhaitez activer External Exposure.

Accorder des autorisations à l'agent de service

En fonction du niveau de ressource où vous activez le service, Google Cloud génère un agent de service :

  • Au niveau de l'organisation ou du dossier : un agent de service au niveau de l'organisation ou du dossier est créé.
  • Au niveau du projet : un agent de service au niveau du projet est créé.

Pour accorder des autorisations au niveau de l'organisation, exécutez la commande gcloud suivante dans un terminal :

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member="serviceAccount:service-org-ORGANIZATION_ID@gcp-sa-ee-hpsa.iam.gserviceaccount.com" \
    --role=roles/externalexposure.serviceAgent

Remplacez ORGANIZATION_ID par l'ID numérique de votre organisation.

Pour accorder des autorisations au niveau du dossier, exécutez la commande gcloud suivante dans un terminal :

gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
    --member="serviceAccount:service-folder-FOLDER_ID@gcp-sa-ee-hpsa.iam.gserviceaccount.com" \
    --role=roles/externalexposure.serviceAgent

Remplacez FOLDER_ID par l'ID numérique de votre dossier.

Accorder un accès entrant aux périmètres de service

Si vous utilisez VPC Service Controls, accordez à l'agent de service External Exposure un accès entrant à tous les périmètres de service qui protègent les projets que vous souhaitez analyser. Si vous n'accordez pas d'accès entrant, External Exposure ne peut pas effectuer d'analyses ni générer de résultats pour les projets protégés par des périmètres de service.

En fonction du niveau de ressource où le service est activé, l'identifiant du compte de service utilise l'un des formats d'adresse e-mail suivants :

  • Pour les organisations ou les dossiers :

    service-RESOURCE_KEYWORD-RESOURCE_ID@gcp-sa-ee-hpsa.iam.gserviceaccount.com
    
  • Pour les projets :

    service-project-PROJECT_NUMBER@gcp-sa-ee.iam.gserviceaccount.com
    

Remplacez les éléments suivants :

  • RESOURCE_KEYWORD : mot clé org ou folder
  • RESOURCE_ID : ID de l'organisation ou ID du dossier
  • PROJECT_NUMBER : numéro du projet

Si vous disposez d'un compte de service à la fois au niveau de l'organisation et au niveau du projet, appliquez les étapes suivantes aux deux comptes.

Pour accorder l'accès, ajoutez une règle d'entrée à chaque périmètre de service bloquant :

  1. Dans la Google Cloud console, accédez à la page VPC Service Controls :

    Accéder à VPC Service Controls

  2. Sélectionnez la règle d'accès bloquante et le périmètre de service.

  3. Cliquez sur Modifier , puis sur Règle d'entrée.

  4. Cliquez sur Ajouter une règle d'entrée et configurez le bloc De :

    1. Pour Identité, sélectionnez Identités et groupes sélectionnés.
    2. Saisissez l'adresse e-mail du compte de service External Exposure.
    3. Pour Source, sélectionnez Toutes les sources.
  5. Configurez le bloc À de la règle :

    1. Pour Projet, sélectionnez Tous les projets.
    2. Pour Opérations ou rôles IAM, sélectionnez Toutes les opérations.
  6. Cliquez sur Enregistrer.

Configurer des ports personnalisés

Configurez jusqu'à 32 ports personnalisés par projet à analyser en plus des ports standards listés dans Performances et limites :

Console

  1. Dans la Google Cloud console, accédez à la page Activation du service :

    Accéder à l'activation du service

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans la colonne External Exposure de la ligne que vous souhaitez modifier, cliquez sur Paramètres.

  4. Dans le champ Ports personnalisés, saisissez les numéros de port séparés par des virgules.

  5. Cliquez sur Enregistrer.

gcloud

Pour configurer des ports personnalisés pour l'analyse, incluez service_config dans updateMask et spécifiez les entiers de port dans le wrapper de tableau ports sous l'objet serviceConfig. L'exemple suivant configure les ports personnalisés 8081 et 8188 pour l'analyse :

curl --request PATCH \
  "https://securitycentermanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure?updateMask=service_config" \
  --header "Authorization: Bearer $(gcloud auth print-access-token)" \
  --header "X-Goog-User-Project: QUOTA_PROJECT_ID" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "serviceConfig": {
      "ports": [8081, 8188]
    },
    "name": "projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure"
  }' \
  --compressed

Remplacez les éléments suivants :

  • QUOTA_PROJECT_ID : ID du projet que vous utilisez pour gérer le quota.
  • PROJECT_ID : ID du projet dans lequel vous souhaitez configurer des ports personnalisés.

Configurer des modules d'analyse

Configurez des modules d'analyse spécifiques à activer ou à désactiver :

Console

  1. Dans la Google Cloud console, accédez à la page Activation du service :

    Accéder à l'activation du service

  2. Sélectionnez votre organisation ou votre projet.

  3. Dans la colonne External Exposure de la ligne que vous souhaitez modifier, cliquez sur Paramètres.

  4. Dans la section Modules d'analyse, cochez la case pour activer ou désactiver chaque module (par exemple, les interfaces exposées, les API, les identifiants faibles ou l'exécution de code à distance).

  5. Cliquez sur Enregistrer.

gcloud

Pour activer ou désactiver des modules spécifiques, incluez modules dans updateMask et spécifiez l'état d'activation de chaque module dans l'objet modules. L'exemple suivant active EXTERNALLY_EXPOSED_RCE_VULNERABILITY et désactive EXTERNALLY_EXPOSED_WEAK_CREDENTIALS :

curl --request PATCH \
  "https://securitycentermanagement.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure?updateMask=modules" \
  --header "Authorization: Bearer $(gcloud auth print-access-token)" \
  --header "X-Goog-User-Project: QUOTA_PROJECT_ID" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "modules": {
      "EXTERNALLY_EXPOSED_RCE_VULNERABILITY": {
        "intendedEnablementState": "ENABLED"
      },
      "EXTERNALLY_EXPOSED_WEAK_CREDENTIALS": {
        "intendedEnablementState": "DISABLED"
      }
    },
    "name": "projects/PROJECT_ID/locations/global/securityCenterServices/external_exposure"
  }' \
  --compressed

Remplacez les éléments suivants :

  • QUOTA_PROJECT_ID : ID du projet que vous utilisez pour gérer le quota.
  • PROJECT_ID : ID du projet dans lequel vous souhaitez configurer des modules.

Vous ne pouvez configurer les états d'activation que pour les modules suivants :

  • EXTERNALLY_EXPOSED_UI
  • EXTERNALLY_EXPOSED_API
  • EXTERNALLY_EXPOSED_WEAK_CREDENTIALS
  • EXTERNALLY_EXPOSED_RCE_VULNERABILITY
  • EXTERNALLY_EXPOSED_ARBITRARY_DATA_READ

Tous les autres modules External Exposure (y compris les vérifications de stockage de base de données, de charge de travail sans serveur et d'équilibreur de charge) sont activés par défaut et n'apparaissent pas sur la page de configuration des modules.

Une fois External Exposure activé, des analyses par lot continues s'exécutent automatiquement pour identifier les adresses IP externes exposées, sonder les services en cours d'exécution et valider les failles actives.

Examiner les résultats

Une fois External Exposure activé, vous pouvez afficher les résultats dans la Google Cloud console. Dans Security Command Center, accédez à la page Présentation des risques et affichez le tableau de bord External Exposure. Ce tableau de bord est disponible lorsque votre champ d'application est défini sur une organisation, un dossier ou un projet. Pour en savoir plus sur ce tableau de bord, consultez Évaluer les risques à l'aide des tableaux de bord de présentation des risques.

Pour récupérer les résultats External Exposure actifs à l'aide de la CLI, exécutez la commande suivante :

gcloud alpha scc findings list projects/PROJECT_ID \
    --location=global \
    --filter="state=\"ACTIVE\" AND finding_class=\"EXTERNAL_EXPOSURE\""

Remplacez PROJECT_ID par l'ID du projet dans lequel vous souhaitez afficher les résultats.

Comprendre les détails des résultats

Les résultats appartenant à la classe EXTERNAL_EXPOSURE identifient le type de risque et la manière dont la ressource est exposée.

Pour obtenir la liste des catégories de risque granulaires générées pour ces résultats (telles que EXTERNALLY_EXPOSED_VM_INSTANCE ou EXTERNALLY_EXPOSED_SERVERLESS_WORKLOAD), consultez Résultats External Exposure.

Tous les résultats de la classe EXTERNAL_EXPOSURE incluent les détails suivants :

  • Service exposé : application Web, logiciel serveur ou protocole spécifique identifié sur le port actif.
  • Insights sur le chemin réseau : connectivité de traçage du chemin réseau depuis l' Internet public via les équilibreurs de charge, les règles de transfert et les services de backend jusqu'à la ressource cible.
  • Point de terminaison exposé : ressource cible sous-jacente (par exemple, une instance Compute Engine ou un pod Google Kubernetes Engine (GKE)).

Si la version du service ou du logiciel exposé peut être identifiée, le résultat liste également toutes les failles CVE qui l'affectent.

Hiérarchiser les résultats avec les scores d'exposition aux attaques

Les résultats External Exposure s'intègrent aux simulations de chemin d'attaque. Pour en savoir plus, consultez Présentation des scores d'exposition aux attaques et des chemins d'attaque. Lorsqu'une exposition confirmée se connecte à un chemin de déplacement latéral potentiel (par exemple, un compte de service exposé qui peut accéder à une base de données BigQuery ou à un bucket Cloud Storage sensibles), le résultat reçoit un score d'exposition aux attaques. Vous pouvez utiliser ce score pour hiérarchiser la correction des expositions qui présentent le plus grand risque pour vos ressources à forte valeur.

Surveiller les métriques d'analyse

Pour vous aider à confirmer qu'External Exposure fonctionne correctement dans votre environnement, la console affiche des métriques d'analyse par lot continues :

  • Dernière analyse : code temporel du cycle d'analyse le plus récent, confirmant que les résultats reflètent une vue actuelle de vos ressources.
  • Prochaine analyse : heure de début programmée du cycle d'analyse suivant.
  • Projets réussis : nombre total de projets analysés avec succès lors du dernier cycle d’analyse.
  • Projets exclus : nombre total de projets ignorés, car les règles d'administration ou les contraintes VPC Service Controls empêchent l'analyseur d'accéder aux ressources. Lorsqu'un projet est ignoré, Security Command Center génère un ou plusieurs résultats de la classe SCC_ERROR.
  • Ressources exposées : nombre total de cibles de ressources uniques identifiées comme accessibles publiquement.
  • Ports publics exposés : nombre total de ports externes actifs distincts détectés sur vos ressources exposées.

Identifier le trafic de l'analyseur dans vos journaux

Lorsque External Exposure analyse activement vos ressources externes, vous pouvez observer des requêtes d'analyse entrantes dans les journaux de vos services, tels que les journaux de requêtes Cloud Run dans Cloud Logging.

Pour vérifier que les requêtes entrantes proviennent d'External Exposure plutôt que de tiers non autorisés, inspectez l'entrée de journal du champ userAgent sous httpRequest. Toutes les requêtes actives du service s'identifient avec l'agent utilisateur TsunamiSecurityScanner.

L'exemple suivant montre une entrée de journal de requêtes Cloud Logging générée lorsqu'External Exposure analyse un service Cloud Run exposé :

{
  "httpRequest": {
    "latency": "0.004745622s",
    "protocol": "HTTP/1.1",
    "remoteIp": "2600:1900:4180:5b2:0:1ae::",
    "requestMethod": "POST",
    "requestSize": "441",
    "requestUrl": "https://SERVICE_URL/mcp",
    "responseSize": "131",
    "serverIp": "2600:1900:4244:200::",
    "status": 405,
    "userAgent": "TsunamiSecurityScanner"
  },
  "insertId": "6a16af86000c7e0d0fdc1c58",
  "labels": {
    "goog-managed-by": "cloudfunctions",
    "goog-serve-source": "user-container"
  },
  "logName": "projects/PROJECT_ID/logs/run.googleapis.com%2Frequests",
  "receiveTimestamp": "2026-05-27T08:47:03.025492782Z",
  "resource": {
    "labels": {
      "configuration_name": "SERVICE_NAME",
      "location": "us-central1",
      "project_id": "PROJECT_ID",
      "revision_name": "REVISION_NAME",
      "service_name": "SERVICE_NAME"
    },
    "type": "cloud_run_revision"
  },
  "severity": "WARNING",
  "timestamp": "2026-05-27T08:47:02.811254Z"
}

Performances et limites

  • Ressources compatibles : instances Compute Engine, services Google Kubernetes Engine (GKE) et contrôleurs d'Ingress, bases de données, y compris Cloud SQL et AlloyDB for PostgreSQL, clusters Managed Service for Apache Spark, Cloud Run, Cloud Storage et Gemini Enterprise Agent Platform Workbench.
  • Intervalle d'actualisation : pour en savoir plus sur la fréquence d'analyse d' External Exposure, consultez Quand attendre des résultats dans Security Command Center.
  • Ports analysés : External Exposure analyse automatiquement les services exécutés sur une base de référence prédéfinie de ports courants, regroupés principalement par type de service ou protocole :
    • Administratif / Shell : 22 (SSH), 23 (Telnet), 3389 (RDP)
    • Web / HTTP(S): 80, 443, 8000, 8080, 8081, 8443, 8800, 9000, 9443
    • Bases de données : 1433, 1521, 3306, 5432, 9200, 11211, 27017, 6379
    • Kubernetes et passerelles de service : 6443, 10250, 10255, 15020, 15021
    • Autres outils et services de développement courants : 1099, 1880, 2323, 2375, 2376, 2379, 2746, 3000, 3100, 4040, 5000, 5173, 5678, 6006, 6274, 7001, 7002, 7077, 7860, 8001, 8042, 8083, 8088, 8090, 8111, 8123, 8153, 8154, 8188, 8265, 8500, 8501, 8787, 8888, 8890, 8983, 9001, 9010, 9090, 9091, 9092, 9100, 9870, 9876, 11434, 15672, 18080, 54321 et 61616.
  • Ports personnalisés : en plus des ports standards, vous pouvez configurer jusqu'à 32 ports personnalisés par projet pour l'analyse. Pour en savoir plus, consultez Configurer des ports personnalisés.
  • Insights sur le chemin réseau : les résultats signalent un chemin réseau pour une ressource exposée.
  • VM à équilibrage de charge : si plusieurs instances de VM sont connectées à un équilibreur de charge, les résultats ne sont signalés que pour l'une d'elles.
  • Hiérarchisation des résultats Cloud Run : étant donné que chaque déploiement Cloud Run reçoit une URL publique par défaut, les résultats sont évalués par rapport aux règles IAM et Identity-Aware Proxy (IAP). Si une charge de travail est protégée par IAM ou IAP (renvoyant une réponse HTTP 403 non autorisée), la gravité du résultat est rétrogradée à LOW pour réduire le bruit informationnel.
  • Insights sur le chemin d'exposition réseau : les résultats n'incluent pas d'insights sur le chemin d'exposition réseau lorsque External Exposure est activé au niveau du projet. Pour recevoir des insights sur le chemin d'exposition réseau, activez le service au niveau de l'organisation ou du dossier.