Security Command Center External Exposure è un servizio che ti aiuta a gestire e ridurre la superficie di attacco esterna tramite l'individuazione automatica e la convalida dei rischi. Google Cloud
Poiché gli scanner automatici possono prendere di mira gli asset esposti a internet in pochi minuti, External Exposure rileva in modo proattivo le esposizioni accidentali e le risorse ombra prima che gli autori degli attacchi possano scoprirle e sfruttarle.
Analizzando il tuo ambiente da un punto di vista esterno, il servizio tenta di confermare ciò che è realmente raggiungibile da internet e identifica quali esposizioni sono effettivamente sfruttabili.
External Exposure esegue la scansione continua di indirizzi IP, nomi host, nomi di dominio e URL esterni nell'ambiente Google Cloud. Questa funzionalità utilizza la scansione della rete per verificare quali risorse e applicazioni sono raggiungibili da internet pubblico.
Per ogni esposizione confermata, l'esposizione esterna esegue le seguenti operazioni:
Traccia e visualizza il Google Cloud percorso di rete per i bilanciatori del carico esterni, le policy Google Cloud Armor, le regole firewall, Private Service Connect, Cloud Interconnect e i servizi di backend fino alla risorsa esposta.
Questa risorsa può essere un'istanza Compute Engine o un pod Google Kubernetes Engine (GKE), inclusi un servizio o un'applicazione esposti.
Questa integrazione profonda con l'infrastruttura di rete Google contribuisce a fornire un contesto pratico in modo da poter applicare immediatamente misure di mitigazione preventive, ad esempio bloccare una regola firewall specifica o configurare Google Cloud Armor.
Esegue l'impronta per tentare di identificare l'applicazione web specifica o il software del server in esecuzione su ogni asset esposto.
Se riesce a identificare il servizio o il software esposto, identifica eventuali vulnerabilità note che lo interessano.
Utilizza rilevatori passivi e attivi avanzati per verificare la possibilità di sfruttamento nel mondo reale con la convalida di vulnerabilità, configurazioni errate e utilizzo di credenziali predefinite o deboli.
Prima di iniziare
Questa sezione descrive come preparare l'ambiente per utilizzare l'esposizione esterna.
Abilita l'API Security Center Management
Se prevedi di utilizzare le API Security Command Center, devi abilitare l'API Security Center Management per il tuo progetto di quota e, se sono in uso policy dell'organizzazione che limitano l'utilizzo delle API, assicurati che l'API Security Center Management sia consentita. L'API Security Center Management viene utilizzata per controllare lo stato di attivazione dei servizi Security Command Center come Esposizione esterna.
In un terminale, abilita l'API Security Center Management per il tuo progetto di quota:
gcloud services enable securitycentermanagement.googleapis.com \ --project=QUOTA_PROJECT_IDSostituisci QUOTA_PROJECT_ID con l'ID del progetto che utilizzi per gestire la quota.
Se hai policy dell'organizzazione che limitano l'utilizzo delle API, assicurati che l'API Security Center Management sia consentita. Per saperne di più, consulta Esaminare le policy dell'organizzazione.
Se vuoi ricevere informazioni sul percorso di esposizione alla rete nei risultati, assicurati di attivare l'esposizione esterna a livello di organizzazione o cartella.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare l'esposizione esterna e visualizzare i dati della dashboard, chiedi all'amministratore di concederti i seguenti ruoli IAM nella tua organizzazione, cartella o progetto:
-
Configura le impostazioni di esposizione esterna in Security Command Center e visualizza i dati della dashboard:
Amministratore del Centro sicurezza (
roles/securitycenter.admin) -
Concedi ruoli agli agenti di servizio, ad esempio il ruolo
externalexposure.serviceAgent: Amministratore della sicurezza (roles/iam.securityAdmin) -
Crea e gestisci service account:
Amministratore service account (
roles/iam.serviceAccountAdmin) -
Visualizza solo i dati della dashboard:
Visualizzatore amministratore Centro sicurezza (
roles/securitycenter.adminViewer) -
Visualizza la dashboard Esposizione esterna e le metriche di scansione nella console, nella CLI o nell'API:
Visualizzatore esposizione esterna (
roles/externalexposure.viewer)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
I seguenti comandi Google Cloud CLI possono essere utilizzati per assegnare i ruoli precedenti a un utente:
Assegna ruoli utilizzando gcloud CLI
Per concedere il ruolo Amministratore di Security Center a un utente, esegui questo comando:
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=user:USER_EMAIL_ID \ --role=roles/securitycenter.adminPer concedere il ruolo Visualizzatore amministratore di Security Center a un utente, esegui questo comando:
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=user:USER_EMAIL_ID \ --role=roles/securitycenter.adminViewerPer concedere il ruolo Visualizzatore esposizione esterna a un utente per l'accesso alle metriche dell'interfaccia a riga di comando o dell'API, esegui questo comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USER_EMAIL_ID \ --role=roles/externalexposure.viewerSostituisci quanto segue:
- ORGANIZATION_ID: l'ID numerico dell'organizzazione
- PROJECT_ID: l'ID progetto
- USER_EMAIL_ID: l'indirizzo email dell'utente che richiede l'accesso
Attivare e configurare il servizio
Per attivare e configurare l'esposizione esterna, completa le attività nelle sezioni seguenti.
Puoi abilitare e configurare il servizio a livello di organizzazione, cartella o progetto. Quando utilizzi l'API, se vuoi configurare le impostazioni a livello di cartella o organizzazione anziché a livello di progetto, sostituisci projects/PROJECT_ID con folders/FOLDER_ID o organizations/ORGANIZATION_ID in tutti gli URL delle richieste e nei parametri dei dati JSON.
Attivare External Exposure
Attiva l'esposizione esterna per la tua organizzazione, la tua cartella o il tuo progetto.
Dopo aver attivato il servizio, assicurati di concedere al service agent le autorizzazioni richieste come descritto in Concedere le autorizzazioni del service agent.
Console
Nella console Google Cloud , vai alla pagina Abilitazione servizi per Esposizione esterna.
Seleziona la tua organizzazione o il tuo progetto.
Nella scheda Attivazione del servizio, nella colonna Esposizione esterna, seleziona lo stato di attivazione dell'organizzazione, della cartella o del progetto che vuoi modificare, quindi seleziona una delle seguenti opzioni:
- Attiva: attiva l'esposizione esterna.
- Disabilita: disattiva l'esposizione esterna.
- Eredita: eredita le impostazioni dalla risorsa padre, a meno che non venga eseguito l'override nella risorsa figlio.
gcloud
Abilita l'API Security Center Management e attiva l'esposizione esterna per l'ambito di destinazione.
In un terminale, abilita l'API per il tuo progetto di quota:
gcloud services enable securitycentermanagement.googleapis.com \ --project=QUOTA_PROJECT_IDIn un terminale, abilita l'esposizione esterna utilizzando 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" }' \ --compressedSostituisci quanto segue:
- QUOTA_PROJECT_ID: l'ID del progetto che utilizzi per gestire la quota.
- PROJECT_ID: l'ID del progetto in cui vuoi attivare l'esposizione esterna.
Concedi le autorizzazioni service agent
A seconda del livello di risorsa in cui abiliti il servizio, Google Cloud viene generato un service agent:
- A livello di organizzazione o cartella: viene creato un service agent a livello di organizzazione o cartella.
- A livello di progetto: viene creato un service agent a livello di progetto.
Per concedere le autorizzazioni a livello di organizzazione, esegui questo comando gcloud in un terminale:
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
Sostituisci ORGANIZATION_ID con l'ID numerico della tua organizzazione.
Per concedere le autorizzazioni a livello di cartella, in un terminale esegui il seguente
comando gcloud:
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
Sostituisci FOLDER_ID con l'ID numerico della cartella.
Concedi l'accesso in entrata ai perimetri di servizio
Se utilizzi Controlli di servizio VPC, concedi all'agente di servizio External Exposure l'accesso in entrata a tutti i perimetri di servizio che proteggono i progetti che vuoi analizzare. Se non concedi l'accesso in entrata, External Exposure non può eseguire scansioni o generare risultati per i progetti protetti dai perimetri di servizio.
A seconda del livello di risorsa in cui è abilitato il servizio, l'identificatore del service account utilizza uno dei seguenti formati di indirizzo email:
Per organizzazioni o cartelle:
service-RESOURCE_KEYWORD-RESOURCE_ID@gcp-sa-ee-hpsa.iam.gserviceaccount.comPer i progetti:
service-project-PROJECT_NUMBER@gcp-sa-ee.iam.gserviceaccount.com
Sostituisci quanto segue:
RESOURCE_KEYWORD: la parola chiaveorgofolderRESOURCE_ID: l'ID organizzazione o l'ID cartellaPROJECT_NUMBER: il numero del progetto
Se hai account di servizio sia a livello di organizzazione che di progetto, applica i seguenti passaggi a entrambi.
Per concedere l'accesso, aggiungi una regola in entrata a ogni perimetro di servizio di blocco:
Nella console Google Cloud , vai alla pagina Controlli di servizio VPC:
Seleziona il criterio di accesso di blocco e il perimetro di servizio.
Fai clic su Modifica e poi su Criterio in entrata.
Fai clic su Aggiungi regola in entrata e configura il blocco Da:
- Per Identità, seleziona Identità e gruppi selezionati.
- Inserisci l'indirizzo email del service account del servizio Esposizione esterna.
- Per Origine, seleziona Tutte le origini.
Configura il Destinatario della regola da bloccare:
- Per Progetto, seleziona Tutti i progetti.
- Per Operazioni o ruoli IAM, seleziona Tutte le operazioni.
Fai clic su Salva.
Configura porte personalizzate
Configura fino a 32 porte personalizzate per progetto da analizzare, oltre alle porte standard elencate in Prestazioni e limitazioni:
Console
Nella console Google Cloud , vai alla pagina Abilitazione dei servizi:
Seleziona la tua organizzazione o il tuo progetto.
Nella colonna Esposizione esterna della riga che vuoi modificare, fai clic su Impostazioni.
Nel campo Porte personalizzate, inserisci i numeri di porta separati da virgole.
Fai clic su Salva.
gcloud
Per configurare le porte personalizzate per la scansione, includi service_config in updateMask e specifica i numeri interi della porta nel wrapper dell'array ports nell'oggetto serviceConfig. Il seguente esempio configura le porte personalizzate 8081 e 8188 per la scansione:
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
Sostituisci quanto segue:
- QUOTA_PROJECT_ID: l'ID del progetto che utilizzi per gestire la quota.
- PROJECT_ID: l'ID del progetto in cui vuoi configurare le porte personalizzate.
Configurare i moduli di scansione
Configura moduli di scansione specifici da attivare o disattivare:
Console
Nella console Google Cloud , vai alla pagina Abilitazione dei servizi:
Seleziona la tua organizzazione o il tuo progetto.
Nella colonna Esposizione esterna della riga che vuoi modificare, fai clic su Impostazioni.
Nella sezione Moduli di scansione, seleziona la casella di controllo per attivare o disattivare ogni modulo (ad esempio interfacce esposte, API, credenziali deboli o RCE).
Fai clic su Salva.
gcloud
Per attivare o disattivare moduli specifici, includi modules in
updateMask e specifica lo stato di attivazione per ogni modulo nell'oggetto
modules. L'esempio seguente attiva
EXTERNALLY_EXPOSED_RCE_VULNERABILITY e disattiva
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
Sostituisci quanto segue:
- QUOTA_PROJECT_ID: l'ID del progetto che utilizzi per gestire la quota.
- PROJECT_ID: l'ID del progetto in cui vuoi configurare i moduli.
Puoi configurare gli stati di attivazione solo per i seguenti moduli:
EXTERNALLY_EXPOSED_UIEXTERNALLY_EXPOSED_APIEXTERNALLY_EXPOSED_WEAK_CREDENTIALSEXTERNALLY_EXPOSED_RCE_VULNERABILITYEXTERNALLY_EXPOSED_ARBITRARY_DATA_READ
Tutti gli altri moduli di esposizione esterna (inclusi i controlli di database, workload serverless e archiviazione del bilanciatore del carico) sono abilitati per impostazione predefinita e non vengono visualizzati nella pagina di configurazione dei moduli.
Una volta attivata l'esposizione esterna, vengono eseguite scansioni batch continue automaticamente per identificare gli indirizzi IP esterni esposti, i servizi in esecuzione e convalidare le vulnerabilità attive.
Esaminare i risultati
Dopo aver attivato External Exposure, puoi visualizzare i risultati nella consoleGoogle Cloud . In Security Command Center, vai alla pagina Panoramica dei rischi e visualizza la dashboard Esposizione esterna. Questa dashboard è disponibile quando l'ambito è impostato su un'organizzazione, una cartella o un progetto. Per saperne di più su questa dashboard, vedi Valutare il rischio utilizzando le dashboard di panoramica del rischio.
Per recuperare i risultati di esposizione esterna attivi utilizzando la CLI, esegui il seguente comando:
gcloud alpha scc findings list projects/PROJECT_ID \
--location=global \
--filter="state=\"ACTIVE\" AND finding_class=\"EXTERNAL_EXPOSURE\""
Sostituisci PROJECT_ID con l'ID del progetto in cui vuoi visualizzare i risultati.
Comprendere i dettagli dei risultati
I risultati appartenenti alla classe EXTERNAL_EXPOSURE identificano il tipo di rischio
e il modo in cui la risorsa è esposta.
Per un elenco delle categorie di rischio granulari generate per questi risultati
(ad esempio EXTERNALLY_EXPOSED_VM_INSTANCE o
EXTERNALLY_EXPOSED_SERVERLESS_WORKLOAD), consulta Risultati dell'esposizione
esterna.
Tutti i risultati della classe EXTERNAL_EXPOSURE includono i seguenti dettagli:
- Servizio esposto: l'applicazione web, il software server o il protocollo specifici identificati sulla porta attiva.
- Insight sul percorso di rete: la connettività di tracciamento del percorso di rete da internet pubblico tramite bilanciatori del carico, regole di forwarding e servizi di backend fino all'asset di destinazione.
- Endpoint esposto: la risorsa di destinazione sottostante (ad esempio un'istanza di Compute Engine o un pod Google Kubernetes Engine (GKE)).
Se è possibile identificare il servizio o la versione del software esposti, il risultato elenca anche eventuali vulnerabilità CVE che lo interessano.
Dai la priorità ai risultati con i punteggi di esposizione agli attacchi
I risultati dell'esposizione esterna si integrano con le simulazioni del percorso di attacco. Per saperne di più, consulta Panoramica dei punteggi di esposizione agli attacchi e dei percorsi di attacco. Quando un'esposizione confermata si connette a un potenziale percorso di movimento laterale (ad esempio, un service account esposto che può raggiungere un database BigQuery sensibile o un bucket Cloud Storage), il risultato riceve un punteggio di esposizione all'attacco. Puoi utilizzare questo punteggio per dare la priorità alla correzione delle esposizioni che rappresentano il rischio maggiore per le tue risorse di alto valore.
Monitorare le metriche di scansione
Per aiutarti a verificare che External Exposure funzioni correttamente nel tuo ambiente, la console mostra metriche di scansione batch continue:
- Ultima scansione: il timestamp del ciclo di scansione completato più di recente, che conferma che i risultati riflettono una visualizzazione attuale delle tue risorse.
- Prossima scansione: l'ora di inizio pianificata del ciclo di scansione successivo.
- Progetti riusciti: il conteggio totale dei progetti analizzati correttamente durante l'ultimo ciclo di analisi.
- Progetti esclusi: il conteggio totale dei progetti ignorati perché i vincoli delle policy dell'organizzazione o dei Controlli di servizio VPC impediscono allo scanner di accedere alle risorse. Quando un progetto viene ignorato,
Security Command Center genera uno o più risultati della classe
SCC_ERROR. - Risorse esposte: il conteggio totale delle risorse di destinazione uniche identificate come raggiungibili pubblicamente.
- Porte pubbliche esposte: il conteggio totale delle porte esterne attive distinte rilevate nelle risorse esposte.
Identificare il traffico dello scanner nei log
Quando External Exposure esegue la scansione attiva delle risorse esposte all'esterno, potresti notare richieste di scansione in entrata nei log del servizio, ad esempio i log delle richieste di Cloud Run in Cloud Logging.
Per verificare che le richieste in entrata provengano da External Exposure anziché da terze parti non autorizzate, esamina la voce di log per il campo userAgent in httpRequest. Tutte le richieste attive del
servizio si identificano con lo user agent TsunamiSecurityScanner.
Il seguente esempio mostra una voce di log delle richieste di Cloud Logging generata quando External Exposure esegue la scansione di un servizio Cloud Run esposto:
{
"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"
}
Prestazioni e limitazioni
- Risorse supportate:istanze Compute Engine, servizi Google Kubernetes Engine (GKE) e controller Ingress, database tra cui Cloud SQL e AlloyDB per PostgreSQL, cluster Managed Service for Apache Spark, Cloud Run, Cloud Storage e Gemini Enterprise Agent Platform Workbench.
- Intervallo di aggiornamento:per informazioni sulla frequenza di scansione di Esposizione esterna, vedi Quando aspettarsi i risultati in Security Command Center.
- Porte analizzate:External Exposure esegue automaticamente la scansione dei servizi in esecuzione su una baseline predefinita di porte comuni, raggruppate principalmente per tipo di servizio o protocollo:
- Amministrativo / shell: 22 (SSH), 23 (Telnet), 3389 (RDP)
- Web / HTTP(S): 80, 443, 8000, 8080, 8081, 8443, 8800, 9000, 9443
- Database: 1433, 1521, 3306, 5432, 9200, 11211, 27017, 6379
- Kubernetes e gateway di servizio: 6443, 10250, 10255, 15020, 15021
- Altri servizi e strumenti per sviluppatori comuni: 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 e 61616.
- Porte personalizzate: oltre alle porte standard, puoi configurare fino a 32 porte personalizzate per progetto per la scansione. Per saperne di più, consulta Configura le porte personalizzate.
- Insight sul percorso di rete: il report sui risultati indica un percorso di rete per una risorsa esposta.
- VM con bilanciamento del carico: se più istanze VM sono connesse a un bilanciatore del carico, i risultati vengono segnalati solo per una delle istanze VM.
- Prioritizzazione dei risultati di Cloud Run: poiché ogni
deployment Cloud Run riceve un URL pubblico per impostazione predefinita,
i risultati vengono valutati in base alle policy IAM e Identity-Aware Proxy
(IAP). Se un workload è protetto da IAM o IAP
(restituisce una risposta HTTP 403 non autorizzata), la gravità del problema
viene declassata a
LOWper ridurre il rumore informativo. - Insight sul percorso di esposizione alla rete: i risultati non includono gli insight sul percorso di esposizione alla rete quando l'esposizione esterna è attivata a livello di progetto. Per ricevere approfondimenti sul percorso di esposizione alla rete, attiva il servizio a livello di organizzazione o cartella.