Questa pagina descrive come attivare l'accesso basato su certificati (CBA) per le tue applicazioni web. Puoi utilizzare i certificati client per proteggere l'accesso da dispositivi attendibili alle applicazioni web aziendali in esecuzione su Google Cloud.
Panoramica
L'autenticazione basata su certificati per le applicazioni web utilizza le funzionalità di accesso sensibile al contesto di Chrome Enterprise Premium e Google Cloud la rete per proteggere l'accesso utilizzando TLS reciproco (mTLS). Di seguito sono riportati i componenti principali con cui lavori per attivare la fatturazione diretta con l'operatore per le applicazioni web:
- Gestore contesto accesso: consente di creare livelli di accesso che richiedono certificati per determinare l'accesso alle applicazioni web.
- Identity-Aware Proxy (IAP): autentica l'accesso degli utenti alle applicazioni web.
- Google Cloud Bilanciatore del carico HTTPS: fornisce l'autenticazione reciproca (mTLS) tra utenti e applicazioni web.
- Policy Chrome Enterprise: fornisce l'autenticazione reciproca (mTLS) tra utenti e applicazioni web quando si utilizza il browser Chrome.
Prima di iniziare
Verifica di avere una versione attuale di Google Cloud CLI eseguendo questo comando:
gcloud components update
Configura mTLS per il bilanciatore del carico HTTPS esterno
Segui le istruzioni per configurare il bilanciatore del carico esterno HTTPS. Prendi nota del nome del proxy HTTPS di destinazione creato, perché ti servirà in un passaggio successivo.
Crea una configurazione dell'attendibilità
Crea una configurazione di attendibilità per rappresentare il tuo tipo di infrastruttura a chiave pubblica (PKI).
Per completare questa attività, devi disporre dell'autorizzazione
certificatemanager.trustconfigs.create
sul progetto Google Cloud di destinazione.
Puoi creare una configurazione di attendibilità utilizzando un certificato emesso da Google (metodo 1), utilizzando il tuo certificato (metodo 2) o utilizzando un certificato autofirmato con la verifica degli endpoint (metodo 3).
Metodo 1
Utilizza un certificato emesso da Google per creare una configurazione di attendibilità.
- Completa i passaggi per creare una CA radice.
Recupera i contenuti del file PEM:
gcloud privateca roots describe ROOT_CA_ID \ --pool=POOL_ID \ --location=CA_LOCATION \ --format='value(pemCaCertificates)'
Sostituisci quanto segue:
- ROOT_CA_ID: l'ID del certificato radice.
- POOL_ID: l'ID del pool di certificati radice.
- CA_LOCATION: la posizione della CA.
Recupera il certificato radice, restituito nel campo
pemCaCertificates
. Il certificato è la stringa compresa tra i marcatoriBEGIN CERTIFICATE
eEND CERTIFICATE
e include entrambi i marcatori.Salva il certificato radice in formato PEM in un file.
Crea una configurazione dell'attendibilità:
Imposta le seguenti variabili di ambiente:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATH
Sostituisci quanto segue:
- TRUST_ANCHOR_PATH: il percorso dell'ancora di attendibilità codificata in formato PEM.
- IM_CERT_PATH: il percorso del certificato intermedio con codifica PEM.
- SECOND_IM_CERT_PATH: il percorso del secondo certificato intermedio con codifica PEM.
Prepara i contenuti del file YAML di configurazione dell'attendibilità:
ROOT=$(cat ROOT_PEM_FILE | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_1=$(cat INT_PEM_FILE1 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_2=$(cat INT_PEM_FILE2 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crea il file YAML di configurazione dell'attendibilità:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOF
Questo file YAML definisce una configurazione di attendibilità denominata
TRUST_CONFIG_NAME
. La configurazione di attendibilità contiene un archivio di attendibilità, che include il certificato radice e due certificati intermedi.Importa la configurazione dell'attendibilità in Google Cloud Gestore certificati:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yaml
Sostituisci quanto segue:
- TRUST_CONFIG_NAME: Il nome della configurazione di attendibilità.
- GCP_PROJECT: L' Google Cloud ID progetto.
Se implementi una struttura più complessa con CA intermedie firmate dalla CA radice, assicurati di aggiungere le CA intermedie come intermediateCAs
.
Metodo 2
Utilizza il tuo deployment PKI con certificati esistenti per creare una configurazione di attendibilità.
Questo tipo di configurazione dell'attendibilità presuppone un archivio attendibilità di base con un singolo punto di attendibilità che rappresenta un certificato radice. Non sono specificati certificati intermedi.
Crea una configurazione dell'attendibilità:
Imposta le seguenti variabili di ambiente:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATH
Sostituisci quanto segue:
- TRUST_ANCHOR_PATH: il percorso dell'ancora di attendibilità codificata in formato PEM.
- IM_CERT_PATH: il percorso del certificato intermedio con codifica PEM.
- SECOND_IM_CERT_PATH: il percorso del secondo certificato intermedio codificato in formato PEM.
Prepara i contenuti del file YAML di configurazione dell'attendibilità:
ROOT=$(cat ROOT_PEM_FILE | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_1=$(cat INT_PEM_FILE1 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_2=$(cat INT_PEM_FILE2 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
Crea il file YAML di configurazione dell'attendibilità:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOF
Questo file YAML definisce una configurazione di attendibilità denominata
TRUST_CONFIG_NAME
. La configurazione di attendibilità contiene un archivio di attendibilità, che include il certificato radice e due certificati intermedi.Importa la configurazione dell'attendibilità in Google Cloud Gestore certificati:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yaml
Sostituisci quanto segue:
- TRUST_CONFIG_NAME: Il nome della configurazione di attendibilità.
- GCP_PROJECT: L' Google Cloud ID progetto.
Metodo 3
Se utilizzi un browser Chrome e vuoi utilizzare un certificato autofirmato con la verifica degli endpoint, segui le istruzioni riportate in questa sezione.
Segui le istruzioni per implementare la verifica endpoint per la tua organizzazione. Verifica endpoint esegue automaticamente il deployment di un certificato autofirmato emesso da Google sui tuoi dispositivi e non devi creare una configurazione di attendibilità.
Crea una policy TLS per abilitare mTLS sul bilanciatore del carico esterno
Se hai utilizzato il metodo 3, puoi saltare questo passaggio.
Per completare questa attività, devi disporre delle seguenti autorizzazioni:
certificatemanager.trustconfigs.use
nella configurazione di attendibilità che hai creato per questoServerTlsPolicy
networksecurity.serverTlsPolicies.create
sul progetto Google Cloud di destinazione
Crea il file YAML della policy TLS del server:
cat << EOF > server_tls_policy.yaml name: "SERVER_TLS_POLICY_NAME" mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME EOF
Sostituisci quanto segue:
- SERVER_TLS_POLICY_NAME: il nome della policy TLS del server.
- GCP_PROJECT: L' Google Cloud ID progetto.
- TRUST_CONFIG_NAME: La configurazione dell'attendibilità creata in un passaggio precedente.
Per informazioni sulle opzioni di convalida del client per
clientValidationMode
, vedi Modalità di convalida del client mTLS.Importa il file YAML della policy TLS del server nel progetto Google Cloud :
gcloud network-security server-tls-policies import ${SERVER_TLS_POLICY_NAME?} \ --project=GCP_PROJECT \ --source=${PWD?}/server_tls_policy.yaml \ --location=global
Sostituisci GCP_PROJECT con l' Google Cloud ID progetto.
Una volta creata una norma TLS, non puoi modificarla. Se vuoi apportare modifiche a una policy TLS esistente, elimina quella esistente e creane una nuova.
Collega un criterio TLS a un criterio HTTPS di destinazione
Per completare questa attività, devi disporre dell'autorizzazione compute.targetHttpsProxies.get
sul progetto Google Cloud di destinazione.
Esporta il proxy HTTPS di destinazione esistente in un file locale:
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --destination=${PWD?}/xlb-mtls-target-proxy.yaml
Sostituisci quanto segue:
- TARGET_HTTPS_PROXY_NAME: il proxy HTTPS di destinazione.
- GCP_PROJECT: L' Google Cloud ID progetto.
Aggiungi
ServerTlsPolicy
alla configurazione del proxy HTTPS di destinazione:Per completare questa attività, devi disporre delle seguenti autorizzazioni:
networksecurity.serverTlsPolicies.use
sulServerTlsPolicy
che hai creato per il proxy HTTPS di destinazionecompute.targetHttpsProxies.update
sul progetto Google Cloud di destinazione
echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/GCP_PROJECT/locations/global/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> xlb-mtls-target-proxy.yaml
Sostituisci quanto segue:
- GCP_PROJECT: L' Google Cloud ID progetto.
- SERVER_TLS_POLICY_NAME: il criterio TLS del server.
Aggiorna il proxy HTTPS di destinazione importando la nuova configurazione dal file locale:
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --source=${PWD?}/xlb-mtls-target-proxy.yaml
Sostituisci quanto segue:
- TARGET_HTTPS_PROXY_NAME: il proxy HTTPS di destinazione.
- GCP_PROJECT: L' Google Cloud ID progetto.
Creare un livello di accesso che richieda certificati
Console
- Segui le istruzioni per creare un livello di accesso personalizzato.
Aggiungi la seguente espressione al tuo livello di accesso personalizzato:
Se hai creato una configurazione di attendibilità (metodo 1 o metodo 2), aggiungi la seguente espressione nel campo Condizioni del tuo livello di accesso personalizzato per utilizzare il binding di attestazione PKI durante l'autenticazione:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == true
Dove TLS_POLICY_FULL_RESOURCE_PATH1 e TLS_POLICY_FULL_RESOURCE_PATH2 sono i percorsi che rappresentano più configurazioni di attendibilità:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.Devi fornire almeno un percorso di configurazione dell'attendibilità.
Sostituisci quanto segue:
- GCP_PROJECT: L' Google Cloud ID progetto.
- TRUST_CONFIG_NAME: Il nome della configurazione di attendibilità.
Se hai utilizzato un certificato autofirmato emesso da Google (metodo 3), aggiungi la seguente espressione nel campo Condizioni del tuo livello di accesso personalizzato per utilizzare il binding del certificato durante l'autenticazione:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
gcloud
Se hai creato una configurazione di attendibilità (metodo 1 o metodo 2), esegui il seguente comando per creare un livello di accesso personalizzato che utilizzi l'associazione di attestazione PKI durante l'autenticazione:
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
--title=TITLE \
--custom-level-spec=FILE \
--description=DESCRIPTION \
--policy=POLICY_NAME
Sostituisci quanto segue:
- ACCESS_LEVEL_NAME: un nome univoco per il livello di accesso.
- TITLE: Un titolo leggibile da una persona.
FILE: un file YAML che contiene la seguente espressione:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == true
Dove TLS_POLICY_FULL_RESOURCE_PATH1 e TLS_POLICY_FULL_RESOURCE_PATH2 sono i percorsi che rappresentano più configurazioni di attendibilità:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME
.Devi fornire almeno un percorso di configurazione dell'attendibilità.
Sostituisci quanto segue:
- GCP_PROJECT: L' Google Cloud ID progetto.
- TRUST_CONFIG_NAME: Il nome della configurazione di attendibilità.
DESCRIPTION: una descrizione dettagliata del livello di accesso.
POLICY_NAME: il criterio di accesso della tua organizzazione.
Se non hai una configurazione di attendibilità perché utilizzi un certificato autofirmato con la verifica degli endpoint (metodo 3), aggiungi la seguente espressione al tuo livello di accesso personalizzato:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
Applicare l'accesso basato su certificati utilizzando Identity-Aware Proxy (IAP)
Nell'architettura CBA per le applicazioni web, IAP fornisce l'applicazione di criteri basati sul principal per proteggere le tue applicazioni web da dispositivi non attendibili.
Completa i seguenti passaggi per attivare IAP e configurare le norme CBA:
- Se non hai configurato IAP, segui le istruzioni per configurare IAP.
- Vai a IAP per collegare il livello di accesso che hai creato in precedenza:
Vai a IAP - Seleziona la risorsa che vuoi proteggere con l'autenticazione basata su certificati e poi fai clic su Impostazioni.
- Nel campo Livelli di accesso, inserisci il nome del livello di accesso che hai creato.
Per utilizzare Google Cloud CLI per configurare una policy CBA in IAP, consulta la documentazione di Google Cloud CLI.
Configurare il browser in modo che selezioni automaticamente il certificato
Per fare in modo che il browser selezioni automaticamente il certificato quando determina l'accesso, completa i passaggi per il tuo browser.
Chrome
Configura il criterio Chrome AutoSelectCertificateForURLs
in modo che Chrome utilizzi
il certificato corretto durante l'handshake mTLS.
Assicurati che il browser Chrome sia gestito da Chrome Browser Cloud Management o dai Criteri di gruppo di Windows:
- Windows, macOS, Linux: completa i passaggi per configurare un profilo Chrome gestito.
- Chrome: registra il dispositivo nell'azienda.
Aggiungi la policy
AutoSelectCertificateForUrls
:- Nella Console di amministrazione, vai a Dispositivi > Chrome > Impostazioni > Impostazioni browser e utente > Certificati client.
- Seleziona un'organizzazione.
- Aggiungi un criterio
AutoSelectCertificateForUrls
per l'URL dell'applicazione web e le informazioni sul certificato radice.
Per saperne di più, consulta la documentazione sullo schema delle norme. Di seguito è riportata una configurazione di esempio dei criteri che utilizza il certificato di verifica endpoint:
{
"pattern":"https://[*.].mysite.com",
"Filter":{
"ISSUER":{
"CN":"Google Endpoint Verification"
}
}
}
Safari
Configura la preferenza di identità:
- Apri l'app Accesso Portachiavi e seleziona Tutti gli elementi.
- Seleziona il certificato che vuoi configurare.
- Fai clic su File > Nuova preferenza identità.
- Inserisci l'URL e fai clic su Aggiungi.
Viene creata una nuova voce delle preferenze di identità nel tuo Keychain che puoi aggiornare.
Edge
Imposta il criterio AutoSelectCertificateForUrls
Edge seguendo le istruzioni
riportate nella documentazione di Edge.