Attivare l'accesso basato su certificati per le applicazioni web

In questa pagina viene descritto come attivare l'accesso basato su certificati (CBA) per le tue applicazioni web. Puoi utilizzare il CBA per proteggere l'accesso da dispositivi attendibili ai dispositivi attendibili alle applicazioni web aziendali in esecuzione su Cloud de Confiance by S3NS.

Panoramica

Il CBA per le applicazioni web utilizza le funzionalità di accesso sensibile al contesto e Cloud de Confiance di rete di Chrome Enterprise Premium per proteggere l'accesso tramite TLS reciproca (mTLS). Di seguito sono riportati i componenti principali con cui lavori per attivare il CBA 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.
  • Cloud de Confiance Bilanciatore del carico HTTPS: fornisce l'autenticazione reciproca (mTLS) tra utenti e applicazioni web.
  • Policy di 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 il comando seguente:

gcloud components update

Configurare mTLS per il bilanciatore del carico HTTPS esterno

Segui le istruzioni per configurare il bilanciatore del carico HTTPS esterno. Prendi nota del nome del proxy HTTPS di destinazione creato, perché ti servirà in un passaggio successivo.

Creare una configurazione dell'attendibilità

Crea una configurazione dell'attendibilità per rappresentare il tuo tipo di infrastruttura a chiave pubblica (PKI).

Per completare questa attività, devi disporre dell'autorizzazione certificatemanager.trustconfigs.create sul target Cloud de Confiance project.

Puoi creare una configurazione dell'attendibilità utilizzando un certificato emesso da Google (Metodo 1), utilizzando il tuo certificato (Metodo 2) o utilizzando un certificato autofirmato con Verifica endpoint (Metodo 3).

Metodo 1

Utilizza un certificato emesso da Google per creare una configurazione dell'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 località della CA.
  3. Recupera il certificato radice, restituito nel campo pemCaCertificates. Il certificato è la stringa tra i marcatori BEGIN CERTIFICATE e END CERTIFICATE e include entrambi i marcatori.

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

  5. Crea una configurazione dell'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 codificato in formato PEM.
      • IM_CERT_PATH: il percorso del certificato intermedio codificato in formato PEM.
      • SECOND_IM_CERT_PATH: il percorso del secondo certificato intermedio codificato in formato PEM.
    2. 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')
      
    3. 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 dell'attendibilità denominata TRUST_CONFIG_NAME. La configurazione dell'attendibilità contiene un archivio di attendibilità, che include il certificato radice e due certificati intermedi.

    4. Importa la configurazione dell'attendibilità nel Cloud de Confiance by S3NS 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 dell'attendibilità.
      • GCP_PROJECT: l' Cloud de Confiance by S3NS ID progetto.

Se esegui il deployment di una struttura più complessa con CA intermedie firmate dalla radice, assicurati di aggiungere le CA intermedie come intermediateCAs.

Metodo 2

Utilizza il tuo deployment PKI con i certificati esistenti per creare una configurazione dell'attendibilità.

Questo tipo di configurazione dell'attendibilità presuppone un archivio di attendibilità di base con un singolo trust anchor che rappresenta un certificato radice. Non sono specificati certificati intermedi.

Crea una configurazione dell'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 codificato in formato PEM.
    • IM_CERT_PATH: il percorso del certificato intermedio codificato in formato PEM.
    • SECOND_IM_CERT_PATH: il percorso del secondo certificato intermedio codificato in formato PEM.
  2. 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')
    
  3. 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 dell'attendibilità denominata TRUST_CONFIG_NAME. La configurazione dell'attendibilità contiene un archivio di attendibilità, che include il certificato radice e due certificati intermedi.

  4. Importa la configurazione dell'attendibilità nel Cloud de Confiance by S3NS 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 dell'attendibilità.
    • GCP_PROJECT: l' Cloud de Confiance by S3NS ID progetto.

Metodo 3

Se utilizzi un browser Chrome e vuoi utilizzare un certificato autofirmato con Verifica endpoint, segui le istruzioni riportate in questa sezione.

Segui le istruzioni per eseguire il deployment di 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 dell'attendibilità.

Creare una policy TLS per attivare 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 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' Cloud de Confiance by S3NS ID progetto.
    • 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 Modalità di convalida del client mTLS.

  2. Importa il file YAML della policy TLS del server nel Cloud de Confiance by S3NS progetto:

    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' Cloud de Confiance by S3NS ID progetto.

Dopo aver creato una policy TLS, non puoi modificarla. Se vuoi apportare modifiche a una policy TLS esistente, elimina la policy TLS esistente e creane una nuova.

Collegare una policy TLS a una policy HTTPS di destinazione

Per completare questa attività, devi disporre dell'autorizzazione compute.targetHttpsProxies.get sul target Cloud de Confiance project.

  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' Cloud de Confiance by S3NS ID progetto.
  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' Cloud de Confiance by S3NS ID progetto.
    • SERVER_TLS_POLICY_NAME: la policy 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' Cloud de Confiance by S3NS ID progetto.

Creare un livello di accesso che richieda certificati

Console

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

    Se hai creato una configurazione dell'attendibilità (Metodo 1 o Metodo 2), aggiungi la seguente espressione nel campo Condizioni del 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 dell'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' Cloud de Confiance by S3NS ID progetto.
    • 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 binding del certificato durante l'autenticazione:

    certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
    

gcloud

Se hai creato una configurazione dell'attendibilità (Metodo 1 o Metodo 2), esegui il comando seguente per creare un livello di accesso personalizzato che utilizzi il binding 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.
  • 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 dell'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' Cloud de Confiance by S3NS ID progetto.
    • TRUST_CONFIG_NAME: il nome della configurazione dell'attendibilità.
  • DESCRIPTION: una descrizione estesa del livello di accesso.

  • POLICY_NAME: la policy di accesso della tua organizzazione.

Se non hai una configurazione dell'attendibilità perché utilizzi un certificato autofirmato con 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 certificati utilizzando Identity-Aware Proxy (IAP)

Nell'architettura CBA per le applicazioni web, IAP fornisce l'applicazione forzata delle policy basata sui principali per proteggere le applicazioni web da dispositivi non attendibili.

Completa i seguenti passaggi per attivare IAP e configurare la policy CBA:

  1. Se non hai configurato IAP, segui le istruzioni per configurare IAP.
  2. Vai a IAP per collegare il livello di accesso creato in precedenza:
    Vai a IAP
  3. Seleziona la risorsa che vuoi proteggere con CBA e poi 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 una policy CBA in IAP, consulta la documentazione di Google Cloud CLI.

Configurare il browser per selezionare 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 la policy di 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 la policy AutoSelectCertificateForUrls:

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

Per saperne di più, consulta la documentazione sullo schema della policy. Di seguito è riportata una configurazione di policy di esempio che utilizza il certificato di Verifica endpoint:

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

Safari

Configura la preferenza di identità:

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

Viene creata una nuova voce di preferenza di identità nel portachiavi che puoi aggiornare.

Edge

Imposta la policy di Edge AutoSelectCertificateForUrls seguendo le istruzioni riportate nella documentazione di Edge.