Questo documento descrive come configurare un gateway sicuro Chrome Enterprise Premium per proteggere l'accesso alle tue applicazioni web private.
Un gateway sicuro Chrome Enterprise Premium funge da proxy di inoltro, applicando un framework di accesso Zero Trust e fornendo un controllo granulare e sensibile al contesto su chi accede alle tue applicazioni web private.
Come funziona la protezione dell'accesso alle applicazioni web private
Creando un tunnel sicuro e applicando criteri di accesso sensibili al contesto, il secure gateway mantiene private le applicazioni private e le protegge dall'esposizione a internet pubblico. Una configurazione del browser lato client indirizza il traffico per queste applicazioni tramite l'endpoint proxy Secure Gateway. Il gateway sicuro applica quindi la policy di accesso pertinente e, se consentito, indirizza la richiesta all'applicazione di destinazione.
Il gateway sicuro può proteggere le applicazioni web private ospitate nei seguenti ambienti:
ProgettoGoogle Cloud : il gateway sicuro può indirizzare l'accesso alle applicazioni in esecuzione nella rete VPC Google Cloud .
NonGoogle Cloud (data center on-premise o altri cloud): devi prima stabilire una connessione tra la tua rete VPC privata suGoogle Cloud e la rete nonGoogle Cloud . Questa operazione viene in genere eseguita utilizzando Cloud VPN o Cloud Interconnect. Il gateway sicuro utilizza quindi la connessione per inviare il traffico alla tua rete VPC privata, che a sua volta lo indirizza all'ambiente nonGoogle Cloud .
Prima di iniziare
Prima di configurare il gateway sicuro, verifica di disporre di quanto segue:
- Una licenza Chrome Enterprise Premium
- Accesso alla Console di amministrazione Google con un account amministratore
- Un progetto Google Cloud con un account di fatturazione assegnato e le seguenti API abilitate: API BeyondCorp
Il seguente ruolo Identity and Access Management (IAM) concesso all'amministratore che configura gli elementi: A livello di progetto: Cloud BeyondCorp Admin (
beyondcorp.admin).Per le applicazioni private in un ambiente nonGoogle Cloud , una connessione Cloud VPN o Cloud Interconnect tra il tuo ambienteGoogle Cloud e l'ambiente nonGoogle Cloud in cui si trova la tua applicazione. Per saperne di più sulla configurazione delle connessioni di rete, consulta le seguenti risorse:
Configura l'ambiente shell
Per semplificare la procedura di configurazione e interagire con le API del gateway sicuro, definisci le seguenti variabili di ambiente nella shell di lavoro.
Parametri generali
API="beyondcorp.googleapis.com" API_VERSION=v1 PROJECT_ID=
PROJECT_IDSostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui viene creato il gateway sicuro.
Parametri del gateway sicuro
SECURITY_GATEWAY_ID=
SECURITY_GATEWAY_IDSECURITY_GATEWAY_DISPLAY_NAME="SECURITY_GATEWAY_DISPLAY_NAME"Sostituisci quanto segue:
SECURITY_GATEWAY_ID: l'ID del gateway sicuro che vuoi creare. L'ID può contenere fino a 63 caratteri e può includere lettere minuscole, numeri e trattini. Il primo carattere deve essere una lettera e l'ultimo può essere una lettera o un numero.SECURITY_GATEWAY_DISPLAY_NAME: il nome leggibile del gateway sicuro. Il nome può contenere fino a 63 caratteri stampabili.
Crea un gateway sicuro
Un gateway sicuro Chrome Enterprise Premium è un elemento costitutivo fondamentale per stabilire connessioni sicure alle tue applicazioni.
gcloud
gcloud beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \ --project=${PROJECT_ID} \ --location=global \ --display-name="${SECURITY_GATEWAY_DISPLAY_NAME}"
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "SECURITY_GATEWAY_DISPLAY_NAME" }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
Configura un'applicazione web privata
Prima di poter definire risorse applicative specifiche nel gateway sicuro, devi configurare le autorizzazioni e le impostazioni di rete necessarie per abilitare la connettività e il routing corretto.
Concedi le autorizzazioni al service account
Per inviare correttamente il traffico alla tua rete VPC, il gateway di sicurezza ha bisogno di determinate autorizzazioni IAM concesse al suo service account di delega. In questo modo, il gateway sicuro può raggiungere le tue applicazioni private, indipendentemente dal fatto che siano ospitate in un VPC o in un ambiente non-VPC connesso tramite Cloud VPN o Cloud Interconnect. Google Cloud Google Cloud
-
Ottieni i dettagli del gateway sicuro per identificare l'email del service account di delega. L'email si trova nel campo
delegatingServiceAccountdella risposta.gcloud
gcloud beyondcorp security-gateways describe ${SECURITY_GATEWAY_ID} \ --project=${PROJECT_ID} \ --location=global
REST
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}"
-
Imposta le variabili di ambiente per il account di servizio e il progetto VPC di destinazione.
DELEGATING_SERVICE_ACCOUNT="security-gateway@my-gateway-service-account.iam.gserviceaccount.com" # Replace with actual value
-
Concedi il ruolo IAM
roles/beyondcorp.upstreamAccessall'account di servizio di delega nel tuo progetto VPC privato. Sostituiscigcloud projects add-iam-policy-binding
PRIVATE_VPC_PROJECT_ID\ --role=roles/beyondcorp.upstreamAccess \ --member=serviceAccount:${DELEGATING_SERVICE_ACCOUNT}PRIVATE_VPC_PROJECT_IDcon l'ID progetto della rete VPC in cui è distribuita l'app web privata o in cui è configurata Cloud VPN/Interconnect.
Attendi circa due minuti affinché la policy Identity and Access Management venga applicata dopo aver concesso il ruolo.
Configura il routing di rete e le regole firewall
Per consentire al traffico proveniente dal gateway sicuro di raggiungere le tue applicazioni web private, configura le regole firewall, il routing di rete e le impostazioni DNS.
Regole firewall per le applicazioni in Google Cloud
Se la tua applicazione web privata è ospitata all'interno della tua rete VPC Google Cloud , ad esempio su una VM Compute Engine, un servizio Google Kubernetes Engine con un IP interno o dietro un bilanciamento del carico TCP/UDP interno, configura le regole firewall VPCGoogle Cloud . Ciò consente il traffico TCP in entrata dagli intervalli IP del gateway sicuro: 34.158.8.0/21 e 136.124.16.0/20.
Regole firewall per le applicazioni in ambienti nonGoogle Cloud
Se la tua applicazione web privata si trova in un data center on-premise o nella rete di un altro cloud provider ed è connessa al tuo Google CloudVPC utilizzando Cloud VPN o Cloud Interconnect, configura le regole firewall sul firewall on-premise o i controlli di sicurezza di rete equivalenti, come i gruppi di sicurezza e gli elenchi di controllo degli accessi alla rete, nell'altro ambiente cloud. Ciò consente il traffico TCP in entrata dagli intervalli IP del gateway sicuro.
Configurare il routing dagli ambienti nonGoogle Cloud a un gateway sicuro
Per facilitare la comunicazione bidirezionale per le applicazioni private ospitate
in ambienti nonGoogle Cloud , ad esempio on-premise o altri cloud,
la tua rete esterna deve creare un percorso di ritorno agli intervalli IP del gateway sicuro
seguenti: 34.158.8.0/21 e 136.124.16.0/20.
Verifica che la tua rete privata possa raggiungere gli intervalli IP del gateway sicuro tramite Cloud VPN o Cloud Interconnect:
Routing dinamico: se utilizzi il routing dinamico, ad esempio Border Gateway Protocol (BGP) con router Cloud, verifica che router Cloud in Google Cloud pubblicizzi esplicitamente gli intervalli IP del gateway sicuro sul tuo dispositivo BGP on-premise. Sebbene BGP scambi dinamicamente molte route, gli intervalli IP del gateway sicuro richiedono una pubblicità esplicita.
Routing statico: se utilizzi route statici, devi aggiungere manualmente route per ciascuno degli intervalli IP del gateway sicuro sulle apparecchiature di rete on-premise, come il router o il firewall. Queste route statiche devono specificare che il traffico destinato agli intervalli IP del gateway sicuro deve essere inviato tramite la connessione Cloud VPN o Cloud Interconnect.
Quando utilizzi il routing statico, Cloud VPN deve trovarsi in una delle seguenti regioni supportate:
africa-south1asia-east1asia-south1asia-south2asia-southeast1europe-central2europe-north1europe-southwest1europe-west1europe-west2europe-west3europe-west4europe-west8europe-west9northamerica-northeast1northamerica-northeast2northamerica-south1southamerica-east1southamerica-west1us-central1us-east1us-east4us-east5us-west1
Configurazione DNS per la risoluzione del nome host privato del gateway sicuro
Affinché il gateway sicuro risolva i nomi host delle applicazioni private, la tua rete VPCGoogle Cloud deve essere in grado di risolvere i nomi host utilizzando Cloud DNS. La configurazione specifica di Cloud DNS dipende dalla posizione in cui sono ospitati in modo autorevole i record DNS privati:
Applicazioni all'interno di Google Cloud che utilizzano zone private Cloud DNS: se le tue applicazioni private sono ospitate in Google Cloud e i relativi record DNS sono gestiti all'interno di zone private Cloud DNS associate alla tua rete VPC, verifica che le zone siano configurate e accessibili correttamente. Il gateway sicuro utilizza le funzionalità di risoluzione Cloud DNS esistenti del tuo VPC.
Applicazioni in ambienti nonGoogle Cloud o che utilizzano server DNS esterni: se le tue applicazioni private si trovano in ambienti nonGoogle Cloud(on-premise o altri cloud) o se i loro record DNS sono gestiti da server DNS esterni alle zone private Cloud DNS del tuo VPC, devi configurare Cloud DNS per inoltrare le query per questi domini privati. In genere, ciò comporta la creazione di zone di forwarding Cloud DNS all'interno del VPC. Queste zone indirizzeranno le query DNS per i domini privati specificati ai server DNS privati autorevoli, ad esempio on-premise o altri cloud.
Per istruzioni dettagliate sulla configurazione DNS, consulta Crea una zona di forwarding.
Crea una risorsa applicazione
Per fornire l'accesso a un'applicazione web privata, devi stabilire l'applicazione all'interno del framework del gateway sicuro creando una risorsa applicazione. Questa risorsa definisce in che modo il gateway sicuro identifica il traffico per la tua applicazione (in base al nome host) e dove indirizzarlo.
-
Imposta le variabili di ambiente richieste eseguendo questo comando:
Sostituisci quanto segue:APPLICATION_ID=
APPLICATION_IDAPP_DISPLAY_NAME="APP_DISPLAY_NAME" HOST_NAME=HOST_NAMEPRIVATE_NETWORK_RESOURCE_NAME=PRIVATE_NETWORK_RESOURCE_NAMEAPPLICATION_ID: un ID univoco per la risorsa dell'applicazione.APP_DISPLAY_NAME: Il nome leggibile da visualizzare.HOST_NAME: il nome host principale a cui accedono gli utenti (ad esempio,private.local).PRIVATE_NETWORK_RESOURCE_NAME: il nome completo della risorsa della rete VPC (ad esempio,projects/my-project/global/networks/my-network).
-
Crea la risorsa dell'applicazione.
gcloud
Esegui il comando seguente per creare la risorsa applicazione.
gcloud beyondcorp security-gateways applications create ${APPLICATION_ID} \ --project=${PROJECT_ID} \ --security-gateway=${SECURITY_GATEWAY_ID} \ --location=global \ --display-name="${APP_DISPLAY_NAME}" \ --endpoint-matchers="hostname=${HOST_NAME},ports=[443]" \ --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}"
Per specificare una regione di uscita (ad esempio, quando utilizzi route statiche), aggiungi il flag
--egress-regions:gcloud beyondcorp security-gateways applications create ${APPLICATION_ID} \ --project=${PROJECT_ID} \ --security-gateway=${SECURITY_GATEWAY_ID} \ --location=global \ --display-name="${APP_DISPLAY_NAME}" \ --endpoint-matchers="hostname=${HOST_NAME},ports=[443]" \ --upstreams=network=name="${PRIVATE_NETWORK_RESOURCE_NAME}",egressPolicy=regions=us-central1
Sostituisci
us-central1con la Google Cloud regione (ad esempioeurope-west1oasia-northeast1) che corrisponde alla configurazione del routing statico regionale. Se non hai requisiti di routing statico regionali specifici, puoi omettere le norme di uscita dalla configurazione.REST
Per creare una risorsa applicazione con l'API, completa i seguenti passaggi:
Crea un file denominato
application.json.{ "display_name": "
APP_DISPLAY_NAME", "endpoint_matchers": [ {"hostname": "HOST_NAME", "ports": [443]} ], "upstreams": [{ "network": { "name": "PRIVATE_NETWORK_RESOURCE_NAME" } }] }Per specificare una regione di uscita (ad esempio, quando utilizzi route statiche), aggiungi un
egress_policyalla configurazione upstream:{ "display_name": "
APP_DISPLAY_NAME", "endpoint_matchers": [ {"hostname": "HOST_NAME", "ports": [443]} ], "upstreams": [{ "network": { "name": "PRIVATE_NETWORK_RESOURCE_NAME" }, "egress_policy": { "regions": [ "us-central1" ] } }] }Sostituisci
us-central1con la Google Cloud regione (ad esempioeurope-west1oasia-northeast1) che corrisponde alla configurazione del routing statico regionale. Se non hai requisiti specifici di routing statico regionale, puoi omettere il criterio di uscita dalla configurazione.Chiama il metodo API
Create.curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -X POST \ -d @application.json \ "https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}/applications?application_id=${APPLICATION_ID}"
Configurare la modalità proxy di Google Chrome
Puoi instradare il traffico delle applicazioni attraverso Secure Gateway applicando un file PAC nelle impostazioni di Chrome nella Console di amministrazione Google. Per applicare il file PAC:
Crea o aggiorna un file PAC.
Crea la tua prima applicazione creando un file
pac_config.jsutilizzando il seguente file PAC di esempio.Aggiorna il file
pac_config.jsesistente e aggiungi i domini della nuova applicazione all'array di siti, come mostrato nel seguente file PAC di esempio.
function FindProxyForURL(url, host) { const PROXY = "HTTPS ingress.cloudproxy.app:443"; const sites = ["HOST_NAME"]; for (const site of sites) { if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) { return PROXY; } } return 'DIRECT'; }
Sostituisci HOST_NAME con il nome host della tua applicazione, ad esempio
myapp.example.com.Se utilizzi un file PAC esistente non specifico per un gateway sicuro, unisci i file PAC aggiungendo i domini della tua applicazione all'array di siti.
Carica il file in modo che sia scaricabile pubblicamente. Ad esempio, puoi caricare il file su Cloud Storage e renderlo scaricabile pubblicamente concedendo a tutti gli utenti il ruolo Storage Object User sul bucket.
Per verificare che il file caricato sia l'ultima versione, puoi modificarne il comportamento di memorizzazione nella cache impostando l'intestazione
Cache-Controlsuno-cache. Questa impostazione impedisce ai browser e ai server intermedi di memorizzare una copia del file, in modo che Chrome scarichi la versione più recente.Per saperne di più su
Cache-Controle sul suo impatto sulla memorizzazione nella cache del browser, consulta Intestazione Cache-Control.Copia l'URL pubblico del file caricato.
Aggiornare le impostazioni della modalità proxy
- Vai alla Console di amministrazione Google.
- Fai clic su Dispositivi > Chrome > Impostazioni.
- Seleziona l'unità organizzativa o il gruppo, quindi fai clic su Modalità proxy.
- In Modalità proxy, seleziona Utilizza sempre la configurazione automatica proxy specificata di seguito e inserisci l'URL del file PAC da Cloud Storage.
- Per salvare le impostazioni della modalità proxy, fai clic su Salva.
Configura una policy di accesso
Puoi applicare una policy di accesso per controllare l'accesso a livello di secure gateway, il che influisce su tutte le applicazioni associate, o a livello di singola applicazione per un controllo più granulare.
Aggiornare in sicurezza una policy di accesso
Il comando setIamPolicy sostituisce l'intera policy esistente con quella che
fornisci. Per evitare di rimuovere accidentalmente le autorizzazioni esistenti, ti consigliamo di utilizzare il seguente pattern "read-modify-write". Questo pattern aiuta
a evitare la rimozione accidentale delle autorizzazioni esistenti.
Lettura: innanzitutto, recupera la policy di accesso corrente.
Modifica: modifica il file di criteri localmente per aggiungere o modificare le autorizzazioni.
Scrittura: applica il file delle norme aggiornato.
Ottieni la norma corrente
Recupera le norme attuali prima di apportare modifiche.
Il campo etag nel criterio funge da identificatore di versione. Impedisce
aggiornamenti in conflitto se più amministratori apportano modifiche contemporaneamente.
Il seguente comando recupera la policy e la salva in un file denominato
policy.json.
gcloud
gcloud beta beyondcorp security-gateways applications get-iam-policy APPLICATION_ID \ --security-gateway=SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global > policy.json
Sostituisci quanto segue:
APPLICATION_ID: l'ID della risorsa applicazioneSECURITY_GATEWAY_ID: l'ID del gateway di sicurezzaPROJECT_ID: l'ID del progetto in cui è configurato il gateway di sicurezza
REST
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://${API}/${API_VERSION}/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:getIamPolicy" > policy.json
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui è configurato il gateway di sicurezzaSECURITY_GATEWAY_ID: l'ID del gateway di sicurezzaAPPLICATION_ID: l'ID della risorsa applicazione
Il comando crea un file policy.json che contiene il criterio
corrente.
Modifica il file di criteri
Apri il file policy.json in un editor di testo. Per concedere a un gruppo l'accesso per utilizzare il
gateway sicuro, aggiungi il gruppo all'elenco members per il
ruolo roles/beyondcorp.securityGatewayUser.
Il file policy.json è simile al seguente esempio:
{
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:existing-group@example.com"
]
}
],
"etag": "BwXN8_d-bOM="
}
Per aggiungere un altro gruppo, aggiungi una nuova voce all'array members. Inserisci una
virgola dopo la voce precedente.
L'esempio seguente aggiunge new-group@example.com:
{
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:existing-group@example.com",
"group:new-group@example.com"
]
}
],
"etag": "BwXN8_d-bOM="
}
Puoi anche aggiungere altri tipi di membri, come serviceAccount, user, group,
principal e principalSet, nei binding dei criteri. Per saperne di più, consulta la pagina
Entità IAM.
Applica le norme aggiornate
Dopo aver modificato e salvato il file policy.json, applicalo alla risorsa utilizzando il comando setIamPolicy. Questo comando utilizza etag dal file per
assicurarti di aggiornare la versione corretta.
gcloud
gcloud beta beyondcorp security-gateways applications set-iam-policy APPLICATION_ID policy.json \ --security-gateway=SECURITY_GATEWAY_ID \ --project=PROJECT_ID \ --location=global
Sostituisci quanto segue:
APPLICATION_ID: l'ID della risorsa applicazioneSECURITY_GATEWAY_ID: l'ID del gateway di sicurezzaPROJECT_ID: l'ID del progetto in cui è configurato il gateway di sicurezza
REST
jq '{policy: .}' policy.json | curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @- \ "https://${API}/${API_VERSION}/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:setIamPolicy"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui è configurato il gateway di sicurezzaSECURITY_GATEWAY_ID: l'ID del gateway di sicurezzaAPPLICATION_ID: l'ID della risorsa applicazione
Aggiungere una policy di accesso condizionale
Puoi anche impostare policy di accesso con condizioni. Le condizioni specificano requisiti, ad esempio l'indirizzo IP di un utente proveniente da una posizione specifica.
La seguente policy di esempio concede l'accesso solo se l'indirizzo IP di origine si trova all'interno di un livello di accesso specificato:
{
"version": 3,
"bindings": [
{
"role": "roles/beyondcorp.securityGatewayUser",
"members": [
"group:group@example.com"
],
"condition": {
"expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
"title": "Source IP must be in US"
}
}
],
"etag": "BwXN8_d-bOM="
}
Per applicare queste norme, segui i passaggi descritti in precedenza.
Installa l'estensione Chrome Enterprise Premium
L'estensione Chrome Enterprise Premium è parte integrante di un gateway sicuro e aiuta con l'autenticazione. Installa l'estensione per tutti gli utenti del gateway sicuro. Per informazioni sul deployment dell'estensione, vedi Visualizzare e configurare app ed estensioni. Per installare l'estensione Chrome Enterprise Premium:
- Vai alla Console di amministrazione Google.
- Fai clic su Browser Chrome > App ed estensioni.
- Fai clic sulla scheda Utenti e browser.
- Per aggiungere l'estensione Chrome, fai clic sul pulsante +.
Cerca la seguente estensione e richiedine l'installazione per tutti gli utenti dell'unità organizzativa o del gruppo:
ekajlcmdfcigmdbphhifahdfjbkciflj
Fai clic sull'estensione installata e nel campo Criterio per le estensioni inserisci il seguente valore JSON:
{ "securityGateway": { "Value": { "authentication": {}, "context": { "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" } } } }
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui è configurato il gateway di sicurezzaSECURITY_GATEWAY_ID: l'ID del gateway di sicurezza
Per salvare la configurazione, fai clic su Salva.
Esperienza utente finale
Al termine della configurazione, agli utenti finali che accedono all'applicazione SaaS protetta viene concesso o negato l'accesso in base al criterio di accesso applicato all'applicazione.
Accedere all'applicazione in Chrome
L'estensione Chrome Enterprise Premium è necessaria per indirizzare il traffico attraverso il gateway sicuro. L'estensione gestisce l'autenticazione tra l'utente e il gateway sicuro. L'estensione viene installata automaticamente tramite il criterio del dominio.
Quando gli utenti accedono all'applicazione SaaS che hai configurato, il loro traffico passa attraverso il gateway sicuro, che verifica se soddisfano i criteri di accesso. Se gli utenti superano i controlli dei criteri di accesso, viene concesso loro l'accesso all'applicazione.
Quando l'accesso del browser all'applicazione viene rifiutato dal criterio di autorizzazione,
gli utenti ricevono un messaggio Access denied.