Questa pagina descrive come configurare e utilizzare il connettore di app Chrome Enterprise Premium per proteggere le applicazioni non Google Cloud.
Panoramica
Puoi utilizzare il connettore di app Chrome Enterprise Premium per fornire dati sull'identità e accesso sensibile al contesto alle applicazioni HTTPS in esecuzione su Google Cloud. ambienti cloud-native. Il connettore di app Chrome Enterprise Premium è una piattaforma sicura interfaccia tra il piano di applicazione forzata di Chrome Enterprise Premium e le applicazioni in esecuzione in altri cloud e ambienti on-premise.
Un vantaggio dell'utilizzo del connettore di app Chrome Enterprise Premium è che non è necessario aprire i firewall o configurare connessioni Cloud VPN site-to-site.
Architettura
Di seguito è riportato un diagramma di architettura di alto livello che mostra i componenti principali del connettore di app Chrome Enterprise Premium.
I componenti del connettore di app Chrome Enterprise Premium sono regolati utilizzando tre API principali risorse: connettori di app, connessioni app e gateway di app.
- Connettori di app
- Una risorsa connettore definisce un agente remoto univoco del connettore di app. Connettore di app il deployment degli agenti remoti avviene in ambienti aziendali remoti, come in altri cloud e on-premise. Gli agenti remoti avviano e mantengono il tunnel sessioni a Google Cloud, ricevono traffico Google Cloud e inoltrare il traffico agli endpoint delle applicazioni remote nello stesso ambiente.
- Connessioni app
- Una risorsa di connessione definisce una connessione logica da Google Cloud a uno specifico endpoint dell'applicazione identificato utilizzando IP address:Port o FQDN:Port. Una risorsa di connessione orchestra un insieme di gateway dei connettori di app gestiti allocati per un un dato endpoint dell'applicazione. I gateway vengono gestiti in Google Cloud e chiudono le sessioni dei tunnel dagli agenti remoti quando non sono più necessari.
- Gateway app
Un gateway per app è un'offerta di servizi gestiti da Google. Telecomando del connettore di app gli agenti si connettono a uno o più gateway che consentono connessioni app e app per inoltrare il traffico dagli utenti finali agli agenti remoti. Traffico per l'app di connessioni ospitate sullo stesso gateway dell'app viene instradato tramite una un'infrastruttura virtuale.
Quando colleghi un'applicazione utilizzando il connettore per app, i gateway per app vengono creati e gestiti implicitamente per te. Puoi anche creare app aggiuntive se vuoi organizzare le risorse delle connessioni app in gruppi. Per app offrono la flessibilità di raggruppare o isolare le connessioni delle app consentire l'isolamento delle app.
Ogni gateway di app può supportare un massimo di 1 Gbps di velocità effettiva totale per fino a 200.000 connessioni simultanee. Ti consigliamo di creare modelli per applicazioni critiche che richiedono prestazioni elevate. Puoi allocare un massimo di 10 app per gateway.
Per supportare fino a 200.000 connessioni simultanee e fino a 1 Gbps in totale effettiva, consigliamo di utilizzare una VM dedicata di 8 core e 8 GB per eseguire l'agente remoto del connettore di app. Ad esempio, puoi dedicare 2 agenti remoti del connettore di app in un cluster HA con 8 core e 8 GB di memoria ciascuno per supportare un'applicazione web ad alte prestazioni (app1.examplecompany.com) con un gateway per app dedicato (app_gateway1). Crea un altro cluster di 2 VM ciascuna con 8 core e 8 GB di memoria per supportare una combinazione di 10 app con utilizzo ridotto con un altro gateway per app dedicato (app_gateway2).
Le risorse connettore di app, connessione di app e gateway di app sono regionali. Puoi utilizzarli solo in un contesto regionale. Ad esempio, non puoi assegnare connettore di app nella regione A a una connessione dell'app o un gateway di app creato nella regione B.
Prima di iniziare
Puoi utilizzare il connettore di app Chrome Enterprise Premium solo con HTTPS diverse applicazioni. Inoltre, i bilanciatori del carico HTTPS non utilizzano il nome server Estensione di indicazioni (SNI) per le connessioni al backend. Per maggiori dettagli, consulta Crittografia dal bilanciatore del carico ai backend.
Per utilizzare il connettore di app Chrome Enterprise Premium, devi disporre di quanto segue:
- Una licenza Chrome Enterprise Premium.
- Google Cloud CLI versione 392 o successive.
Ogni agente del connettore di app Chrome Enterprise Premium richiede una VM Linux che Docker in esecuzione. Consigliamo le seguenti distribuzioni Linux:
- Debian 10.7 (buster)
- Red Hat Enterprise Linux Server 7.8 (Maipo) x86_64
- Ubuntu 16.04 o versioni successive
Per l'hardware delle VM Linux, consigliamo almeno 2 CPU con 2 GB di RAM.
Puoi configurare e abilitare il connettore di app utilizzando gcloud e l'API oppure la console Google Cloud. Per utilizzare gcloud e le API, completa i seguenti passaggi. Per utilizzare la console Google Cloud, vai a Configurare il connettore di app utilizzando la console Google Cloud.
Configurazione del progetto Google Cloud
Per configurare un progetto Google Cloud da utilizzare con il connettore per app Chrome Enterprise Premium, devi abilitare l'API Chrome Enterprise Premium. Abilita l'API tramite completando i seguenti passaggi:
Interfaccia a riga di comando gcloud
Prima di completare i passaggi seguenti, assicurati di aver installato l'SDK gcloud CLI.
Imposta la variabile di ambiente richiesta eseguendo il seguente comando:
PROJECT_ID=my-project
Sostituisci my-project con l'ID progetto Google Cloud.
Abilita l'API eseguendo questo comando:
gcloud config set project $PROJECT_ID gcloud services enable beyondcorp.googleapis.com
API
Ottieni un token di accesso e imposta le variabili di ambiente e gli alias richiesti eseguendo i seguenti comandi:
PROJECT_NUMBER=my-project-number ACCESS_TOKEN=my-access-token
Sostituisci my-project con l'ID del progetto Google Cloud.
Configura un alias pratico per utilizzare il token di accesso:
alias gcurl="curl -H 'Authorization: Bearer ${ACCESS_TOKEN}' -H 'Content-Type: application/json'"
Abilita l'API eseguendo questo comando:
gcurl https://serviceusage.googleapis.com/v1/projects/${PROJECT_NUMBER}/services/beyondcorp.googleapis.com:enable -d "{}"
Installazione di un agente remoto del connettore di app
Devi eseguire il deployment di una VM agente remoto del connettore di app per ogni ambiente di rete che ospita un'applicazione che vuoi proteggere con Chrome Enterprise Premium. Devi avere una VM dedicata o qualsiasi server Bare Metal con Docker installato per ogni agente remoto che crei.
Per creare un agente remoto:
- Crea un'istanza VM nell'ambiente dell'applicazione.
- Assicurati che il firewall di rete della VM dell'agente remoto consenta tutto il traffico in uscita avviato sulla porta 443 per l'intervallo IP IAP-TCP 35.235.240.0/20. Consulta Verificare la configurazione del firewall per gli altri domini a cui il firewall della VM dell'agente remoto deve consentire il traffico in uscita.
Installa l'agente remoto:
- Verifica che il DNS sia configurato correttamente e che tu possa accedere all'applicazione utilizzando curl.
- Installa Docker Engine.
- (Facoltativo) Se utilizzi un proxy, verifica che il demone Docker sia configurato correttamente.
- (Facoltativo) Se utilizzi un proxy, verifica che le variabili di ambiente proxy HTTP e HTTPS siano impostate e utilizzi
lo schema
http://
. - Esegui il seguente comando sulla VM dell'agente remoto per installarlo:
curl https://raw.githubusercontent.com/GoogleCloudPlatform/beyondcorp-applink/main/bash-scripts/install-beyondcorp-runtime -o ./install-beyondcorp-runtime && chmod +x ./install-beyondcorp-runtime && ./install-beyondcorp-runtime
- Per aggiungere l'alias
bce-connctl
alla shell, esegui questo comando:source ~/.bce_alias
Imposta le variabili di ambiente richieste eseguendo questi comandi:
Sostituisci quanto segue:PROJECT_ID=my-project REGION=us-central1 CONNECTOR_NAME=my-connector
- my-project: l'ID del progetto Google Cloud.
- us-central1: la regione in cui eseguire il deployment della connessione e dei gateway.
- my-connector: il nome del connettore.
Registra il connettore utilizzando uno dei seguenti tipi di credenziali:
Service account
Registra il connettore eseguendo questo comando nell'interfaccia a riga di comando
bce-connctl
:bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
Segui le istruzioni sullo schermo per copiare e incollare la registrazione nei tuoi progetti Google Cloud tramite Cloud Shell o gcloud CLI e completare la registrazione del connettore. Per eseguire script di registrazione, devi disporre delle autorizzazioni
Owner
per il progetto.Al termine dello script di registrazione, il runtime sincronizza automaticamente la configurazione del connettore.
Identità federata
- Segui la guida alla federazione delle identità di carico di lavoro per concedere all'identità esterna l'accesso a Google Cloud utilizzando la simulazione dell'identità dell'account di servizio.
- Scarica la configurazione della libreria client
e posiziona il file nella VM dell'agente remoto in
/var/beyondcorp/credentials/credentials.json
.- Se utilizzi un'istanza AWS EC2 come VM dell'agente remoto, esegui una delle seguenti operazioni:
- Rendi IMDSv2 facoltativo nell'istanza EC2.
- Aggiungi la seguente riga all'oggetto
credential_source
nel file di configurazione della libreria client:"imdsv2_session_token_url": "http://169.254.169.254/latest/api/token"
- Se utilizzi un'istanza AWS EC2 come VM dell'agente remoto, esegui una delle seguenti operazioni:
- Sulla VM dell'agente remoto, esegui i comandi seguenti nell'interfaccia a riga di comando
bce-connctl
:bce-connctl config set project $PROJECT_ID bce-connctl config set region $REGION bce-connctl config set connector $CONNECTOR_NAME
- Esegui questo comando per riavviare l'agente e fare in modo che acquisisca le credenziali:
sudo systemctl restart beyondcorp
- Nell'endpoint di Cloud Shell o della gcloud CLI, imposta la variabile di ambiente richiesta eseguendo questo comando:
Sostituisci quanto segue:SERVICE_ACCOUNT=my-service-account
- my-service-account: l'account di servizio Google Cloud associato all'identità esterna.
Concedi il ruolo
BeyondCorp Connection Agent
all'account di servizio Google Cloud eseguendo il seguente comando:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role="roles/beyondcorp.connectionAgent"
Esegui il seguente comando per creare la risorsa del connettore di app Google Cloud.
gcloud alpha beyondcorp app connectors create $CONNECTOR_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --display-name=$CONNECTOR_NAME
Una volta creata la risorsa del connettore di app, il runtime dell'agente remoto sincronizza automaticamente la configurazione del connettore.
Verifica l'installazione dell'agente remoto:
- Esegui il seguente comando per assicurarti che il servizio sia in esecuzione:
sudo systemctl status beyondcorp
- L'agente remoto è composto da tre container Docker:
bce-control-runtime
,bce-logagent
ebce-connector
. Verifica che tutti e tre i container siano in esecuzione eseguendo il seguente comando:docker ps --filter name=bce
- (Facoltativo) Puoi controllare i file log dei container Docker eseguendo il seguente comando:
Sostituisci CONTAINER_NAME con il nome del contenitore Docker.docker logs -f CONTAINER_NAME
- Esegui il seguente comando per assicurarti che il servizio sia in esecuzione:
Connessione di un'applicazione remota a un VPC
Interfaccia a riga di comando gcloud
Prima di completare i passaggi seguenti, assicurati di aver installato l'SDK gcloud CLI e di aver eseguito l'accesso con un account con il ruolo beyondcorp.admin
.
Imposta le variabili di ambiente richieste eseguendo questi comandi:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection PROJECT_ID=my-project REGION=us-central1 APP_ENDPOINT=APP_HOST:APP_PORT
Sostituisci quanto segue:
- my-connector: il nome del connettore, definito in un passaggio precedente.
- my-connection: un nome univoco per la connessione.
- my-project: l'ID progetto Google Cloud.
- us-central1: la regione in cui implementare la connessione e i gateway.
- APP_HOST: l'indirizzo IP on-premise o un nome di dominio completo che ospita l'applicazione.
- APP_PORT: il numero di porta da connettere alla tua applicazione.
Per creare una connessione tra l'applicazione e la VPC, esegui il seguente comando:
gcloud alpha beyondcorp app connections create $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --application-endpoint=$APP_ENDPOINT \ --type=tcp \ --connectors=$CONNECTOR_NAME \ --display-name=$CONNECTION_NAME
Tieni presente che questo passaggio potrebbe richiedere diversi minuti.
Dopo aver creato la connessione, esegui questi comandi per recuperare gli URI del gateway:
GATEWAY_URI="$(gcloud alpha beyondcorp app connections describe $CONNECTION_NAME --project=$PROJECT_ID --location=$REGION --format='get(gateway.uri)')" GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/bce-ps7}"
GATEWAY_URI_L7
viene utilizzato per creare una regola di inoltro. Il connettore per app di Chrome Enterprise Premium utilizza Private Service Connect per collegare il progetto consumer alle risorse gestite nei progetti gestiti da Google.
API
Imposta le variabili di ambiente richieste eseguendo questi comandi:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection PROJECT_ID=my-project REGION=us-central1 APP_HOST=my-app-host APP_PORT=my-app-port
Sostituisci quanto segue:
- my-connector: il nome del connettore, definito in un passaggio precedente.
- my-connection: un nome univoco per la connessione.
- my-project: l'ID progetto Google Cloud.
- us-central1: la regione in cui eseguire il deployment della connessione e dei gateway.
- my-app-host: l'indirizzo IP on-premise o un FQDN che che ospita la tua applicazione.
- my-app-port: il numero di porta da connettere alla tua applicazione.
Per creare una connessione tra l'applicazione e la VPC, esegui il seguente comando:
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \ -d "{ \ 'application_endpoint': \ { \ 'host': '${APP_HOST}', \ 'port': '${APP_PORT}' \ }, \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \ }"
Tieni presente che questo passaggio potrebbe richiedere diversi minuti.
Dopo aver creato la connessione, esegui questi comandi per recuperare gli URI del gateway:
GATEWAY_URI=$(gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_NUMBER}/locations/${REGION}/appConnections/${CONNECTION_NAME} | jq -r '.gateway.uri') GATEWAY_URI_L7="${GATEWAY_URI/bce-psc/'bce-ps7'}"
GATEWAY_URI_L7
viene utilizzato per creare una regola di forwarding. Il connettore per app di Chrome Enterprise Premium utilizza Private Service Connect per collegare il progetto consumer alle risorse gestite nei progetti gestiti da Google.
Configurare un bilanciatore del carico delle applicazioni esterno
Puoi connettere solo le applicazioni HTTPS a un bilanciatore del carico delle applicazioni esterno. Le applicazioni HTTP non sono supportate.
Interfaccia a riga di comando gcloud
Prima di completare i passaggi seguenti, assicurati di aver installato l'SDK gcloud CLI e di aver eseguito l'accesso con un account con il ruolo beyondcorp.admin
.
Imposta le variabili di ambiente richieste eseguendo i seguenti comandi:
Sostituisci quanto segue:LB_PREFIX=web-app PROJECT_ID=my-project REGION=us-central1 DOMAIN_NAME=app.example.com
- web-app: il prefisso aggiunto ai nomi di tutte le risorse del bilanciatore del carico.
- my-project: l'ID progetto Google Cloud.
- us-central1: la regione in cui verrà eseguito il deployment della connessione e dei gateway.
- app.example.com: il nome di dominio della tua applicazione.
Crea un gruppo di endpoint di rete (NEG) utilizzando il seguente comando:
gcloud beta compute network-endpoint-groups create $LB_PREFIX-neg \ --region=$REGION \ --network-endpoint-type=private-service-connect \ --psc-target-service=$GATEWAY_URI_L7
Flag facoltativi:
- Imposta il flag
--network
per specificare il nome della rete per gli endpoint di rete nel NEG. Se non specificato, viene utilizzata la rete del progetto predefinita. - Imposta il flag
--subnet
per specificare il nome della subnet per gli endpoint di rete nel NEG. Se non specificato, l'endpoint di rete può appartenere a qualsiasi subnet in la regione in cui è stato creato il gruppo di endpoint di rete.
- Imposta il flag
Crea un servizio di backend basato su NEG e connettilo a un collegamento del servizio Private Service Connect eseguendo questi comandi:
gcloud beta compute backend-services create $LB_PREFIX-backend-service \ --global \ --protocol=HTTPS \ --load-balancing-scheme=EXTERNAL_MANAGED gcloud beta compute backend-services add-backend $LB_PREFIX-backend-service \ --global \ --network-endpoint-group=$LB_PREFIX-neg \ --network-endpoint-group-region=$REGION
Crea un certificato gestito da Google per il tuo dominio eseguendo i seguenti comandi:
gcloud compute addresses create $LB_PREFIX-static-ip \ --ip-version=IPV4 \ --global gcloud compute ssl-certificates create $LB_PREFIX-ssl-cert \ --domains=$DOMAIN_NAME \ --global LB_IP="$(gcloud compute addresses describe $LB_PREFIX-static-ip --global --format='value(address)')"
Crea un bilanciatore del carico delle applicazioni esterno in base al backend del passaggio precedente eseguendo i seguenti comandi:
gcloud compute url-maps create $LB_PREFIX-map-https \ --default-service=$LB_PREFIX-backend-service gcloud compute target-https-proxies create $LB_PREFIX-https-lb-proxy \ --url-map=$LB_PREFIX-map-https \ --ssl-certificates=$LB_PREFIX-ssl-cert gcloud beta compute forwarding-rules create "$LB_PREFIX-https-lb-forwarding-rule" \ --global \ --target-https-proxy=$LB_PREFIX-https-lb-proxy \ --address=$LB_IP \ --ports=443 \ --load-balancing-scheme=EXTERNAL_MANAGED
Una volta creato il bilanciatore del carico delle applicazioni esterno, l'applicazione sarà accessibile tramite internet tramite questo indirizzo IP.
Dopo aver creato il bilanciatore del carico delle applicazioni esterno, devi associare il relativo indirizzo IP con il nome di dominio, in modo che Google Cloud possa eseguire il provisioning certificato. Segui le istruzioni del tuo provider DNS per associare l'indirizzo IP al nome DNS. Esegui questo comando per verificare il provisioning stato:
- Mostra l'indirizzo IP da configurare nel provider DNS:
echo "Load Balancer ip address - $LB_IP"
- Dopo aver impostato il DNS, controlla se il nome di dominio viene risolto o meno
all'indirizzo IP eseguendo questo comando:
dig $DOMAIN_NAME
- Per ottenere lo stato del provisioning, esegui il seguente comando:
gcloud compute ssl-certificates describe $LB_PREFIX-ssl-cert \ --global \ --format="get(name,managed.status, managed.domainStatus)"
Dopo aver eseguito il provisioning del certificato SSL, dovresti essere in grado di accedere all'applicazione utilizzando il nome DNS.
- Mostra l'indirizzo IP da configurare nel provider DNS:
API
Imposta le variabili di ambiente richieste eseguendo questi comandi:
Sostituisci quanto segue:LB_PREFIX=web-app PROJECT_ID=my-project REGION=us-central1 DOMAIN_NAME=app.example.com
- web-app: il prefisso aggiunto ai nomi di tutte le risorse del bilanciatore del carico.
- my-project: l'ID progetto Google Cloud.
- us-central1: la regione in cui verrà eseguito il deployment della connessione e dei gateway.
- app.example.com: il nome di dominio della tua applicazione.
Crea un gruppo di endpoint di rete (NEG) utilizzando il seguente comando:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups \ -d "{ \ 'name': '${LB_PREFIX}-neg', \ 'network_endpoint_type': 'private-service-connect', \ 'psc_target_service': '${GATEWAY_URI_L7}' \ }"
Campi facoltativi:
- Imposta il campo
network
per specificare l'URL della rete per gli endpoint di rete nel NEG. Se non specificata, la rete di progetto predefinita è in uso. - Imposta il campo
subnetwork
per specificare l'URL della sottorete per gli endpoint di rete nel NEG. Se non specificato, l'endpoint di rete può appartenere a qualsiasi nella regione in cui viene creato il gruppo di endpoint di rete.
- Imposta il campo
Crea un servizio di backend basato su NEG e collegalo a un collegamento di servizio Private Service Connect eseguendo i seguenti comandi:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices \ -d "{ \ 'name': '${LB_PREFIX}-backend-service', \ 'service_protocol': 'HTTPS', \ 'port_name': 'https', \ 'load_balancing_scheme': 'EXTERNAL_MANAGED' \ }" gcurl -X PATCH https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service \ -d "{ \ 'backends': \ [{ \ 'group': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/regions/${REGION}/networkEndpointGroups/${LB_PREFIX}-neg' \ }] \ }"
Crea un certificato gestito da Google per il tuo dominio eseguendo i seguenti comandi:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses \ -d "{ \ 'name': '${LB_PREFIX}-static-ip', \ 'ip_version': 'IPV4' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates \ -d "{ \ 'name': '${LB_PREFIX}-ssl-cert', \ 'managed': \ { \ 'domains': '${DOMAIN_NAME}' \ }, \ 'type': 'MANAGED' \ }" LB_IP=$(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/addresses/${LB_PREFIX}-static-ip | jq -r '.address')
Crea un bilanciatore del carico delle applicazioni esterno in base al backend del passaggio precedente eseguendo i seguenti comandi:
gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps \ -d "{ \ 'name': '${LB_PREFIX}-map-https', \ 'default_service': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/backendServices/${LB_PREFIX}-backend-service' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies \ -d "{ \ 'name': '${LB_PREFIX}-https-lb-proxy', \ 'url_map': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/urlMaps/${LB_PREFIX}-map-https', \ 'ssl_certificate': 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert' \ }" gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/forwardingRules \ -d "{ \ 'name': '${LB_PREFIX}-https-lb-forwarding-rule', \ target: 'https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/targetHttpsProxies/${LB_PREFIX}-https-lb-proxy', \ 'ip_address': '${LB_IP}', \ 'port_range': '443-443', \ 'load_balancing_scheme': 'EXTERNAL_MANAGED' \ }"
Una volta creato il bilanciatore del carico delle applicazioni esterno, l'applicazione sarà accessibile tramite internet tramite questo indirizzo IP.
Dopo aver creato il bilanciatore del carico delle applicazioni esterno, devi associare il relativo indirizzo IP con il nome di dominio, in modo che Google Cloud possa eseguire il provisioning certificato. Segui le istruzioni del tuo provider DNS per associare l'indirizzo IP al nome DNS. Esegui questo comando per verificare il provisioning stato:
- Mostra l'indirizzo IP da configurare nel provider DNS:
echo "Load Balancer ip address - $LB_IP"
- Dopo aver impostato il DNS, controlla se il nome di dominio viene risolto o meno
all'indirizzo IP eseguendo questo comando:
dig $DOMAIN_NAME
- Per ottenere lo stato del provisioning, esegui il seguente comando:
echo $(gcurl https://www.googleapis.com/compute/v1/projects/${PROJECT_NUMBER}/global/sslCertificates/${LB_PREFIX}-ssl-cert \ | jq -r '.name + " " + .managed.status + " " + (.managed.domainStatus | keys[]) + "=" + .managed.domainStatus[]')
Dopo aver eseguito il provisioning del certificato SSL, dovresti essere in grado di accedere all'applicazione utilizzando il nome DNS.
- Mostra l'indirizzo IP da configurare nel provider DNS:
Attivazione di Identity-Aware Proxy
Segui la documentazione di Identity-Aware Proxy (IAP) per la configurazione di Identity-Aware Proxy. Dopo aver configurato IAP, abilita IAP per il servizio di backend completando i seguenti passaggi:
Vai alla pagina IAP:
IAPIn RISORSE HTTPS, individua
$LB_PREFIX-backend-service
. Per abilitare IAP per questa risorsa, fai clic sul pulsante di attivazione/disattivazione nella colonna IAP. Nella finestra Attiva IAP visualizzata, seleziona la casella di controllo per confermare i requisiti di configurazione di questa risorsa e fai clic su ATTIVA per confermare che vuoi che la risorsa venga protetta da IAP.Per consentire agli utenti di accedere alla tua applicazione, devi concedere loro il ruolo Utente applicazione web con protezione IAP per il progetto completando i seguenti passaggi:
- Seleziona la casella di controllo
$LB_PREFIX-backend-service
. - Nel riquadro Informazioni, seleziona AGGIUNGI PRINCIPALE e inserisci gli indirizzi email dei gruppi o delle persone che dovrebbero avere accesso alla tua applicazione.
- Nell'elenco a discesa Seleziona un ruolo, seleziona Cloud IAP > Utente applicazione web con protezione IAP, quindi fai clic su Salva.
- Seleziona la casella di controllo
Ora l'applicazione on-premise dovrebbe essere pubblicata su internet e protetta da Chrome Enterprise Premium.
Configura il connettore dell'app utilizzando la console Google Cloud
Completa le procedure in questa sezione per eseguire il deployment del connettore di app Chrome Enterprise Premium utilizzando la console Google Cloud.
Inserisci i dettagli della tua richiesta
Aggiungi i dettagli della tua applicazione completando i seguenti passaggi:
Nella console Google Cloud, vai alla pagina IAP.
Vai a IAPFai clic sul pulsante COLLEGA NUOVA APPLICAZIONE e seleziona Connetti tramite App Connector.
In Nome dell'applicazione, inserisci il nome dell'applicazione che vuoi proteggere.
In URL applicazione rivolta all'esterno, inserisci un URL accessibile pubblicamente per consentire ai tuoi utenti di accedere all'applicazione.
Fai clic su Avanti.
Configura la connessione a Google Cloud
Completa i passaggi riportati di seguito per stabilire la connettività tra Google Cloud e il tuo ambiente non Google Cloud.
Fai clic sul pulsante CREA CONNETTORE APP e inserisci le seguenti informazioni:
- Nome del connettore di app: il nome del connettore di app.
- Regione: la regione in cui eseguire il deployment dei gateway di connessione e del connettore.
Fai clic sul pulsante CREA.
Segui le istruzioni nel riquadro Provisioning di una macchina virtuale per eseguire il deployment dell'agente remoto sulla tua VM.
Fai clic sul pulsante TESTA STATO CONNESSIONE per testare la connessione.
Configura il connettore che hai creato nel passaggio precedente inserendo il metodo seguenti informazioni in Dove può trovare la tua applicazione Google Cloud?:
- Nome host interno: l'indirizzo IP on-premise o il nome di dominio completo che ospita l'applicazione.
- Porta: il numero di porta da collegare all'applicazione.
(Facoltativo) Concedi l'accesso alla tua applicazione
In Nuove entità, inserisci una o più delle seguenti entità:
- Email di un account Google: user@gmail.com
- Gruppo Google: admins@googlegroups.com
- Account di servizio: server@example.gserviceaccount.com
- Dominio Google Workspace: example.com
- anybody: inserisci
allUsers
per concedere l'accesso a tutti gli utenti - Tutti gli Account Google:
allAuthenticatedUsers
per concedere l'accesso a tutti gli utenti che hanno eseguito l'accesso a un Account Google
Seleziona uno o più livelli di accesso e poi fai clic su AVANTI.
Pubblica l'applicazione
Per pubblicare l'applicazione, fai clic sul pulsante PUBBLICA L'APPLICAZIONE IN MODO SICURO.
Dopo aver pubblicato l'applicazione e aver ricevuto la conferma di pubblicazione sicura dell'applicazione, devi creare un record DNS per indirizzare l'URL dell'applicazione rivolto all'esterno all'indirizzo IP del proxy. Completa i seguenti passaggi:
- Dalla sezione PASSAGGIO 2 - Aggiorna informazioni DNS, copia l'indirizzo IP dal campo Indirizzo IP. Utilizza l'indirizzo per creare un record DNS seguendo le istruzioni del tuo provider DNS su come associare l'indirizzo IP al nome DNS.
Dopo aver creato il record DNS, testalo facendo clic sul pulsante TEST. Dovresti ricevere una conferma Test DNS superato.
Fai clic su FINE.
Attivare IAP
Vai alla pagina IAP.
Vai a IAPDall'elenco delle risorse, individua l'applicazione, quindi seleziona il pulsante nella colonna IAP.
Nella finestra di dialogo Attiva IAP visualizzata, seleziona la casella di controllo Ho letto i requisiti di configurazione e configurato il mio servizio di backend in base alla documentazione, quindi fai clic su ATTIVA.
L'applicazione on-premise ora dovrebbe essere pubblicata su internet e protetta da Chrome Enterprise Premium.
(Facoltativo) Crea un gateway dell'app
I gateway delle app vengono creati e gestiti in modo implicito quando connetti un'applicazione utilizzando il connettore di app. Puoi anche creare i tuoi gateway per app per organizzare le risorse di connessione delle app in gruppi. Il traffico per le connessioni di app ospitate in gateway per app diversi viene instradato tramite un'infrastruttura virtuale separata.
Per creare e specificare un gateway dell'app, completa i passaggi riportati di seguito.
Interfaccia a riga di comando gcloud
Imposta le variabili di ambiente richieste eseguendo questo comando:
CONNECTOR_NAME=CONNECTOR_NAME CONNECTION_NAME=CONNECTION_NAME GATEWAY_NAME=GATEWAY_NAME PROJECT_ID=PROJECT_ID REGION=REGION APP_ENDPOINT=APP_HOST:APP_PORT
Sostituisci quanto segue:
- CONNECTOR_NAME: il nome del connettore, definito in un passaggio precedente.
- CONNECTION_NAME: un nome univoco per la connessione.
- GATEWAY_NAME: il nome del gateway per le app.
- PROJECT_ID: l'ID del progetto Google Cloud.
- REGION: la regione in cui eseguire il deployment del gateway dell'app, ad esempio
us-central1
. - APP_HOST: l'indirizzo IP on-premise o un FQDN che ospita la tua applicazione.
- APP_PORT: il numero di porta per la connessione all'applicazione.
Crea un gateway per app eseguendo il seguente comando:
gcloud beta beyondcorp app gateways create $GATEWAY_NAME \ --project=$PROJECT_ID --location=$REGION --display-name=$GATEWAY_NAME
Specifica un gateway per app in una chiamata di creazione della connessione eseguendo il seguente comando:
gcloud beta beyondcorp app connections create $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --application-endpoint=$APP_ENDPOINT \ --type=tcp \ --connectors=$CONNECTOR_NAME \ --display-name=$CONNECTION_NAME \ --app-gateway=$GATEWAY_NAME
API
Imposta le variabili di ambiente richieste eseguendo il seguente comando:
CONNECTOR_NAME=CONNECTOR_NAME CONNECTION_NAME=CONNECTION_NAME GATEWAY_NAME=GATEWAY_NAME PROJECT_ID=PROJECT_ID REGION=REGION APP_ENDPOINT=APP_HOST:APP_PORT
Sostituisci quanto segue:
- CONNECTOR_NAME: il nome del connettore, definito in un passaggio precedente.
- CONNECTION_NAME: un nome univoco per la connessione.
- GATEWAY_NAME: il nome del gateway per le app.
- PROJECT_ID: l'ID del progetto Google Cloud.
- REGION: la regione in cui eseguire il deployment del gateway dell'app, ad esempio
us-central1
. - APP_HOST: l'indirizzo IP on-premise o un FQDN che ospita la tua applicazione.
- APP_PORT: il numero di porta per la connessione all'applicazione.
Crea un gateway per app eseguendo il seguente comando:
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appGateways?app_gateway_id=${GATEWAY_NAME} \ -d "{ \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \ }"
Specifica un gateway dell'app in una chiamata di creazione di connessione eseguendo questo comando: :
gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections?app_connection_id=${CONNECTION_NAME} \ -d "{ \ 'application_endpoint': \ { \ 'host': '${APP_HOST}', \ 'port': '${APP_PORT}' \ }, \ 'gateway': { 'app_gateway' : 'projects/${PROJECT_ID}/locations/${REGION}/appGateways/${GATEWAY_NAME}'}, \ 'connectors':['projects/${PROJECT_ID}/locations/${REGION}/appConnectors/${CONNECTOR_NAME}'], \ 'type': 'TCP_PROXY', \ 'display_name': '${CONNECTION_NAME}' \
Passaggi successivi
- Consulta Controlli di servizio VPC per informazioni sulla protezione di un VPC.
- Imposta regole di contesto più avanzate applicando i livelli di accesso.
- Visualizza le richieste di accesso abilitando gli audit log di Cloud.
Risoluzione dei problemi
Impossibile trovare le risorse create in precedenza
Quando utilizzi la versione 392.0.0 o successive dell'interfaccia a riga di comando gcloud, utilizza le nuove risorse predefinite del connettore di app AppConnector
e AppConnection
. Ad esempio, gcloud alpha beyondcorp app connectors
e gcloud alpha beyondcorp app connections
fanno entrambi riferimento alle nuove risorse.
Per accedere alle risorse legacy create con una versione di gcloud CLI precedente alla versione 392.0.0, utilizza la parola chiave legacy
. Ad esempio, gcloud alpha beyondcorp app legacy connectors
e gcloud alpha beyondcorp app legacy connections
fanno entrambi riferimento alle risorse legacy.
Per il momento le configurazioni che utilizzano risorse precedenti continuano a funzionare, ma verranno ritirate in futuro.
Azioni consigliate
- Segui le procedure in questa guida per configurare nuove risorse.
- Se la configurazione utilizza risorse legacy, utilizza la parola chiave
legacy
per individuare queste risorse e rimuoverle. Ricrea le risorse seguendo le procedure descritte in questo documento. - Se hai una configurazione incompleta che utilizza risorse legacy, utilizza la parola chiave
legacy
per individuarle e rimuoverle. Ricrea le risorse seguendo le procedure in questo documento.
Errori TLS/SSL
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Il browser mostra l'errore ERR_SSL_VERSION_OR_CIPHER_MISMATCH
o errori TLS/SSL simili e non reindirizza alla pagina di accesso.
Azioni consigliate
Verifica lo stato dei certificati nella pagina dei dettagli del bilanciatore del carico Google Cloud.
NOTA: il provisioning di un certificato gestito da Google potrebbe richiedere fino a 60 minuti.
TLS error
Il browser mostra l'errore upstream connect error or disconnect/reset before headers. retried and the latest reset reason: connection failure, transport failure reason: TLS error
o errori TLS/SSL simili dopo il reindirizzamento alla pagina di accesso.
Azioni consigliate
- Verifica che l'endpoint dell'applicazione utilizzato nella connessione sia HTTPS.
Verifica che l'endpoint dell'app sia accessibile dalla VM dell'agente remoto utilizzando curl:
curl https://$APP_ENDPOINT
Potresti dover utilizzare il flag
-k
se il certificato dell'applicazione è autofirmato.
Verifica la configurazione del firewall
Assicurati che i firewall tra l'agente remoto e internet consentano le connessioni in uscita verso i seguenti domini:
Tipo di connessione | Dominio | Port (Porta) |
TCP | raw.githubusercontent.com | 443 |
TCP | gcr.io | 443 |
TCP | *.googleapis.com | 443 |
TCP | tunnel.cloudproxy.app | 443 |
TCP | *.tunnel.cloudproxy.app | 443 |
TCP | accounts.google.com | 443 |
TCP | oauth2.googleapis.com | 443 |
Modificare i connettori associati a una connessione
gcloud
Imposta le variabili di ambiente richieste eseguendo il seguente comando:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection REGION=us-central1 PROJECT_ID=my-project
Sostituisci quanto segue:
- my-connector: il nome del connettore. Può anche essere un elenco separato da virgole come
connector1,connector2
. - my-connection: il nome della connessione da aggiornare.
- us-central1: la regione in cui viene eseguita il deployment della connessione.
- my-project: l'ID del progetto Google Cloud.
- my-connector: il nome del connettore. Può anche essere un elenco separato da virgole come
Per modificare i connettori associati a una connessione, esegui questo comando:
gcloud alpha beyondcorp app connections update $CONNECTION_NAME \ --project=$PROJECT_ID \ --location=$REGION \ --connectors=$CONNECTOR_NAME
API
Imposta le variabili di ambiente richieste eseguendo il seguente comando:
CONNECTOR_NAME=my-connector CONNECTION_NAME=my-connection REGION=us-central1 PROJECT_ID=my-project
Sostituisci quanto segue:
- my-connector: il nome del connettore.
- my-connection: il nome della connessione da aggiornare.
- us-central1: la regione in cui viene eseguita il deployment della connessione.
- my-project: l'ID del progetto Google Cloud.
Per modificare i connettori associati a una connessione, esegui questo comando:
gcurl -X PATCH \ https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}?update_mask=connectors \ -d "{ \ 'connectors': ['projects/${PROJECT_ID}/locations/${REGION}/appConnectors/${CONNECTOR_NAME}'], \ }"
Puoi verificare l'aggiornamento eseguendo questo comando e controllando il campo
connectors
dell'output:gcurl https://beyondcorp.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/appConnections/${CONNECTION_NAME}
Proxy
Il supporto per i proxy è stato introdotto all'inizio del 2024 e richiede modifiche alle di sistema di BeyondCorp. Se hai installato l'agente remoto in precedenza e vuoi utilizzare un proxy, reinstalla l'agente remoto.
Verifica che il daemon Docker sia configurato correttamente per funzionare con i proxy.
Verifica che le variabili di ambiente proxy HTTP e HTTPS siano impostate e che entrambe utilizzino lo schema
http://
. Lo schemahttps://
e altri schemi non sono supportati.Verifica che le variabili di ambiente proxy vengano esportate nei processi secondari eseguendo il comando
env
.Sono supportati solo
HTTP_PROXY
,HTTPS_PROXY
,NO_PROXY
e i rispettivi valori minuscoli.Se devi aggiornare le impostazioni del proxy dopo l'installazione, aggiorna le variabili di ambiente in
/var/beyondcorp/env/PROXY
se utilizzi l'utentebeyondcorp
predefinito. Se utilizzi un utente personalizzato, aggiorna/home/$USER/.docker/config.json
in base alle istruzioni per la configurazione del client Docker. Per applicare le modifiche al proxy, riavvia l'agente remoto utilizzando il seguente comando:sudo systemctl restart beyondcorp
Strumenti di diagnostica
run-post-install-checks
run-post-install-checks
è uno script installato in /var/beyondcorp/scripts/
che verifica se l'agente remoto è installato, registrato e funzionante correttamente. Dopo aver creato correttamente un app connection
e averlo assegnato a un agente remoto (connettore), vai alla VM dell'agente remoto ed esegui run-post-install-checks
con il seguente comando:
sudo /var/beyondcorp/scripts/run-post-install-checks
Lo script stampa un messaggio di operazione riuscita se tutto è in ordine.
run-diagnostics
run-diagnostics
è uno script installato in /var/beyondcorp/scripts/
che diagnostica i problemi comuni sulla VM dell'agente remoto e stampa un report che puoi condividere con il team di assistenza di Chrome Enterprise Premium. Per eseguire questo script di diagnostica, esegui il comando seguente:
sudo /var/beyondcorp/scripts/run-diagnostics
Il report di diagnostica viene scritto nella console e su ./diagnostics-report.txt
Interfaccia a riga di comando dell'agente remoto
bce-connctl
è l'interfaccia a riga di comando (CLI) dell'amministratore degli agenti remoti per interagire localmente con l'agente remoto. Questa CLI supporta vari comandi, ad esempio per registrare l'agente remoto, controllare lo stato e impostare i valori di configurazione.
Comando di inizializzazione
Puoi utilizzare il comando Init per inizializzare l'agente remoto e generare uno script per registrare l'agente.
Esempio:
bce-connctl init --project=$PROJECT_ID --region=$REGION --connector=$CONNECTOR_NAME
Comandi di stato
Puoi utilizzare i comandi Status per gestire lo stato dell'agente remoto.
- Elenca: utilizza questo comando per elencare lo stato generale dell'agente remoto, nonché lo stato di eventuali connessioni supportate da questo agente. Esempio:
bce-connctl status list
Comandi di configurazione
Puoi utilizzare i comandi Config per gestire i valori di configurazione dell'agente remoto.
- Elenco: utilizza questo comando per elencare i valori di configurazione dell'agente remoto. Esempio:
bce-connctl config list
- Imposta: utilizza questo comando per impostare un valore di configurazione dell'agente remoto. Esempio:
bce-connctl config set <key> <value>
Comandi di registrazione
Puoi utilizzare i comandi Enrollment per gestire la registrazione dell'agente remoto.
Descrizione: utilizza questo comando per ottenere lo stato della registrazione dell'agente remoto. Esempio:
bce-connctl enrollment describe
Quando lo script di registrazione da
bce-connctl init
viene completato correttamente e la chiave pubblica viene caricata correttamente, lo stato èENROLLED
.
Guida
Puoi aggiungere il flag -h
o --help
a qualsiasi comando bce-connctl
per stampare le informazioni sull'utilizzo.
bce-connctl init -h