Attivare l'accesso basato su certificato per le applicazioni web

In questa pagina viene descritto come attivare l'accesso basato su certificato (CBA) per le tue applicazioni web. Puoi utilizzare CBA per proteggere l'accesso dai dispositivi alle applicazioni web aziendali in esecuzione su Google Cloud.

Panoramica

L'accesso sensibile al contesto per le applicazioni web utilizza le funzionalità di accesso sensibile al contesto di Chrome Enterprise Premium e la rete di Google Cloud per proteggere l'accesso utilizzando TLS mutuale (mTLS). Di seguito sono riportate le principali con cui collaborare per abilitare CBA per le applicazioni web:

  • Gestore contesto accesso: consente di creare livelli di accesso che richiedono certificati quando determinare l'accesso alle applicazioni web.
  • Identity-Aware Proxy (IAP): autentica l'accesso degli utenti alle applicazioni web.
  • Bilanciatore del carico HTTPS di Google Cloud: fornisce l'autenticazione reciproca (mTLS) tra utenti e applicazioni web.
  • Criterio di Chrome Enterprise: fornisce l'autenticazione reciproca (mTLS) tra utenti e applicazioni web quando utilizzano 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 HTTPS esterno. Annota il nome del proxy HTTPS di destinazione che perché ti servirà in un passaggio successivo.

Crea una configurazione di attendibilità

Crea una configurazione di attendibilità per rappresenta il 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) oppure utilizzando un certificato autofirmato con verifica degli endpoint (metodo 3).

Metodo 1

Utilizza un certificato emesso da Google per creare una configurazione di attendibilità.

  1. Completa i passaggi per creare una CA radice.
  2. 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.
  3. Recupera il certificato radice, restituito nel campo pemCaCertificates. Il certificato è la stringa tra gli indicatori BEGIN CERTIFICATE e END CERTIFICATE e include entrambi gli indicatori.

  4. Salva il certificato radice in formato PEM in un file.

  5. Crea una configurazione di attendibilità:

    1. 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 del trust anchor con codifica 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.
    2. Prepara i contenuti del file YAML della 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')
      
    3. Crea il file YAML della configurazione della 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 attendibile denominata TRUST_CONFIG_NAME. La configurazione della attendibilità contiene un archivio di attendibilità, che include il certificato radice e due certificati intermedi.

    4. Importa la configurazione della attendibilità in Google Cloud Certificate Manager:

      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 dell'attendibilità.
      • GCP_PROJECT: l'ID del progetto Google Cloud.

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 infrastruttura a chiave pubblica con certificati esistenti per creare una configurazione di attendibilità.

Questo tipo di configurazione attendibilità presuppone un archivio attendibilità di base con un singolo ancora di attendibilità che rappresenta un certificato principale. Non sono specificati certificati intermedi.

Crea una configurazione di attendibilità:

  1. 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 del trust anchor con codifica 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.
  2. Prepara i contenuti del file YAML della 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')
    
  3. Crea il file YAML della configurazione della 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 attendibile denominata TRUST_CONFIG_NAME. La configurazione della attendibilità contiene un archivio di attendibilità, che include il certificato radice e due certificati intermedi.

  4. Importa la configurazione della attendibilità in Google Cloud Certificate Manager:

    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 dell'attendibilità.
    • GCP_PROJECT: l'ID progetto Google Cloud.

Metodo 3

Se utilizzi un browser Chrome e vuoi usare un certificato autofirmato con la verifica degli endpoint, segui le istruzioni in questo .

Segui le istruzioni per implementare la Verifica endpoint per la tua organizzazione. La verifica degli endpoint esegue automaticamente il deployment di una ai dispositivi senza dover creare una configurazione di attendibilità.

Crea un criterio 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:

  1. Crea il file YAML del criterio 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 del criterio TLS del server.
    • GCP_PROJECT: l'ID progetto Google Cloud.
    • TRUST_CONFIG_NAME: la configurazione dell'attendibilità che hai creato in un passaggio precedente.

    Per informazioni sulle opzioni di convalida del client per clientValidationMode, consulta le modalità di convalida del client mTLS.

  2. Importa il file YAML del criterio 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'ID del progetto Google Cloud.

Una volta creato, un criterio TLS non può essere modificato. Se vuoi apportare modifiche a un criterio TLS esistente, elimina il criterio TLS esistente e creane uno nuovo.

Collega un criterio TLS a un criterio HTTPS di destinazione

Per completare questa attività, devi disporre dell'autorizzazione compute.targetHttpsProxies.get nel progetto Google Cloud di destinazione.

  1. 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'ID progetto Google Cloud.
  2. Aggiungi ServerTlsPolicy alla configurazione del proxy HTTPS di destinazione:

    Per completare questa attività, devi disporre delle seguenti autorizzazioni:

    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'ID progetto Google Cloud.
    • SERVER_TLS_POLICY_NAME: il criterio TLS del server.
  3. 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'ID progetto Google Cloud.

Crea un livello di accesso che richiede certificati

Console

  1. Segui le istruzioni per creare un livello di accesso personalizzato.
  2. Aggiungi la seguente espressione al tuo livello di accesso personalizzato:

    Se hai creato una configurazione di attendibilità (Metodo 1 o Metodo 2), aggiungi quanto segue nel campo Condizioni del livello di accesso personalizzato da utilizzare Associazione dell'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'ID del progetto Google Cloud.
    • TRUST_CONFIG_NAME: il nome della configurazione dell'attendibilità.

    Se hai utilizzato un certificato autofirmato emesso da Google (metodo 3), aggiungi la seguente espressione nel campo Condizioni del livello di accesso personalizzato per utilizzare il vincolo 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 questo comando: per creare un livello di accesso personalizzato che utilizzi Associazione dell'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.
  • FILE: un file YAML contenente 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'ID del progetto Google Cloud.
    • TRUST_CONFIG_NAME: il nome della configurazione dell'attendibilità.
  • DESCRIPTION: una descrizione dettagliata del livello di accesso.

  • POLICY_NAME: il criterio di accesso della tua organizzazione.

Se non hai una configurazione attendibilità perché utilizzi un certificato autofirmato con la verifica endpoint (metodo 3), aggiungi la seguente espressione al livello di accesso personalizzato:

certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE

Applicare l'accesso basato su certificato utilizzando Identity-Aware Proxy (IAP)

Nella CBA per l'architettura delle applicazioni web, IAP offre Applicazione dei criteri basata su entità per proteggere le tue applicazioni web da dispositivi non attendibili.

Completa i seguenti passaggi per attivare l'IAP e configurare il criterio CBA:

  1. Se non hai configurato IAP, segui le istruzioni per configurare IAP.
  2. Vai a IAP per collegare il livello di accesso che hai creato in precedenza:
    Vai a IAP
  3. Seleziona la risorsa che vuoi proteggere con CBA, quindi fai clic su Impostazioni.
  4. Nel campo Livelli di accesso, inserisci il nome del livello di accesso che hai creato.

Per utilizzare Google Cloud CLI per configurare un criterio 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 al momento della determinazione dell'accesso, completa i passaggi relativi al tuo browser.

Chrome

Configura il criterio Chrome AutoSelectCertificateForURLs in modo che Chrome utilizzi il certificato corretto durante l'handshake mTLS.

  1. Assicurati che il browser Chrome sia gestito da Chrome Browser Cloud Management o dai Criteri di gruppo di Windows:

  2. Aggiungi il criterio AutoSelectCertificateForUrls:

    1. Nella Console di amministrazione, vai a Dispositivi > Chrome > Impostazioni > Utente e Impostazioni del browser > Certificati client.
    2. Seleziona un'organizzazione.
    3. Aggiungi un criterio AutoSelectCertificateForUrls per l'URL dell'applicazione web e le informazioni del certificato principale.

Per saperne di più, consulta la documentazione sullo schema dei criteri. Di seguito è riportato un esempio di configurazione dei criteri che utilizza il certificato di Endpoint Verification:

{
  "pattern":"https://[*.].mysite.com",
  "Filter":{
    "ISSUER":{
      "CN":"Google Endpoint Verification"
    }
  }
}

Safari

Configura la preferenza di identità:

  1. Apri l'app Accesso Portachiavi e seleziona Tutti gli elementi.
  2. Seleziona il certificato che vuoi configurare.
  3. Fai clic su File > Nuova preferenza identità.
  4. Inserisci l'URL e fai clic su Aggiungi.

In questo modo viene creata una nuova voce relativa alle preferenze di identità nel Portachiavi che potrai aggiornare.

Edge

Imposta il criterio AutoSelectCertificateForUrls Edge seguendo le istruzioni riportate nella documentazione di Edge.