Accesso sicuro alle applicazioni SaaS

Questa pagina ti guida nella procedura di protezione delle tue applicazioni SaaS tramite Secure Gateway di Chrome Enterprise Premium.

Un gateway sicuro di 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 SaaS.

Come funziona la protezione dell'accesso alle applicazioni SaaS

Di seguito è riportata una panoramica generale di come un gateway sicuro protegge le tue applicazioni SaaS:

  1. Le impostazioni del browser lato client instradano il traffico dell'applicazione tramite un proxy gateway sicuro.
  2. Il gateway sicuro controlla le norme di accesso sensibile al contesto per autorizzare l'accesso del client (utente e dispositivo).
  3. Se l'accesso client è consentito, il gateway inoltra il traffico all'applicazione utilizzando indirizzi IP di origine univoci assegnati a quel gateway e alla regione Google Cloud . Questi indirizzi IP assegnati sono riservati esclusivamente al gateway che crei e non possono essere utilizzati da altri utenti o gateway. Per controllare l'accesso, puoi aggiungere questi indirizzi IP di origine dedicati a una lista consentita nella tua applicazione SaaS.

Prima di iniziare

Prima di configurare il gateway sicuro, verifica di disporre di quanto segue:

Limitazioni

Un gateway sicuro Chrome Enterprise Premium presenta le seguenti limitazioni:

  • Connettività IPv6: il gateway sicuro di Chrome Enterprise Premium non supporta le applicazioni SaaS che utilizzano la connettività IPv6.
  • Provider di identità come applicazione SaaS: un provider di identità non deve essere configurato come applicazione SaaS da proteggere dal gateway sicuro, se l'autenticazione dell'utente finale con il gateway sicuro dipende dallo stesso IdP.

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_ID
    APPLICATION_ID=APPLICATION_ID
    APPLICATION_DISPLAY_NAME="APPLICATION_DISPLAY_NAME"
    HOST_NAME=HOST_NAME

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto in cui viene creato il gateway sicuro.
    • APPLICATION_ID: l'ID della tua applicazione, ad esempio github. Il nome 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.
    • APPLICATION_DISPLAY_NAME: Il nome leggibile da una persona da visualizzare.
    • HOST_NAME: il nome host dell'applicazione. Ad esempio, github.com. Il nome host può contenere fino a 253 caratteri e deve rispettare uno dei seguenti formati:

      • Un indirizzo IPv4 valido
      • Un indirizzo IPv6 valido
      • Un nome DNS valido
      • Un asterisco (*)
      • Un asterisco (*) seguito da un nome DNS valido
  • Parametri del gateway sicuro

    SECURITY_GATEWAY_ID=SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="SECURITY_GATEWAY_DISPLAY_NAME"

    Sostituisci quanto segue:

    • SECURITY_GATEWAY_ID: l'ID del gateway sicuro. 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 e può contenere solo caratteri stampabili.

Crea un gateway sicuro

Un gateway sicuro Chrome Enterprise Premium è un elemento costitutivo fondamentale per stabilire connessioni sicure alle tue applicazioni. Assegna un progetto e una rete dedicati, fornendo isolamento e sicurezza.

Per creare una risorsa gateway sicuro, utilizza uno dei seguenti metodi.

gcloud

Esegui questo comando. Per il flag --hubs, specifica una o più regioni dall'elenco seguente.

gcloud beyondcorp security-gateways create ${SECURITY_GATEWAY_ID} \
  --project=${PROJECT_ID} \
  --location=global \
  --display-name="SECURITY_GATEWAY_DISPLAY_NAME" \
  --hubs=us-central1
      

REST

Chiama il metodo dell'API Create con i dettagli del gateway nel corpo della richiesta. Per l'oggetto hubs, specifica una o più regioni dall'elenco seguente.

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "display_name": "SECURITY_GATEWAY_DISPLAY_NAME", "hubs": { "us-central1": {} } }' \
"https://${API}/${API_VERSION}/projects/${PROJECT_ID}/locations/global/securityGateways?security_gateway_id=${SECURITY_GATEWAY_ID}"
      

hubs rappresenta le risorse regionali necessarie per abilitare la connettività di uscita all'applicazione di destinazione. Puoi avere un hub per ogni regione e ogni hub fornisce due indirizzi IP. Puoi specificare le seguenti regioni:

  • africa-south1
  • asia-east1
  • asia-south1
  • asia-south2
  • asia-southeast1
  • europe-central2
  • europe-north1
  • europe-southwest1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west8
  • europe-west9
  • northamerica-northeast1
  • northamerica-northeast2
  • northamerica-south1
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-east1
  • us-east4
  • us-east5
  • us-west1

Configura un'applicazione SaaS

Dopo aver creato un gateway sicuro, puoi configurare le tue applicazioni SaaS per utilizzare il gateway sicuro per un accesso sicuro.

  1. Ottieni gli indirizzi IP allocati dal gateway sicuro per ogni hub. Per una regione vengono allocati due indirizzi IP.

    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}"
        

    Di seguito è riportato un esempio di risposta GET di un gateway sicuro con hubs. Nell'esempio, hubs vengono creati nelle regioni us-central1 e us-east1 e tutti gli indirizzi IP restituiti nella risposta devono essere consentiti nell'applicazione SaaS.

    gcloud

    createTime: 'CREATE_TIME'
    displayName: My security gateway
    hubs:
      us-central1:
        internetGateway:
          assignedIps:
          - IP_ADDRESS_1
          - IP_ADDRESS_2
      us-east1:
        internetGateway:
          assignedIps:
          - IP_ADDRESS_1
          - IP_ADDRESS_2
    name: projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}
    state: RUNNING
    updateTime: 'UPDATE_TIME'
        

    REST

    {
      "securityGateways": [
        {
          "name": "projects/${PROJECT_ID}/locations/global/securityGateways/${SECURITY_GATEWAY_ID}",
          "createTime": "CREATE_TIME",
          "updateTime": "UPDATE_TIME",
          "displayName": "My security gateway",
          "state": "RUNNING",
          "hubs": {
            "us-central1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            },
            "us-east1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            }
          }
        }
      ]
    }
        
  2. Aggiungi gli indirizzi IP alla lista consentita IP della tua applicazione SaaS. Ad esempio, per un'applicazione GitHub, puoi seguire questa guida: Gestione degli indirizzi IP consentiti per la tua organizzazione.

Crea una risorsa applicazione

Le seguenti informazioni ti guidano nella procedura di configurazione di una risorsa applicativa Secure Gateway.

Crea una risorsa applicazione gateway sicuro in Google Cloud

La risorsa applicazione Google Cloud è una risorsa secondaria della risorsa gateway sicuro. Crea una risorsa applicazione chiamando l'API Create.

gcloud

gcloud beyondcorp security-gateways applications create ${APPLICATION_ID} \
  --project=${PROJECT_ID} \
  --security-gateway=${SECURITY_GATEWAY_ID} \
  --location=global \
  --display-name="${APPLICATION_DISPLAY_NAME}" \
  --endpoint-matchers="hostname=${HOST_NAME},ports=[443]"
      

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST \
-d "{ \"display_name\": \"${APPLICATION_DISPLAY_NAME}\", \"endpoint_matchers\": [{hostname: \"${HOST_NAME}\", ports: [443]}] }" \
"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:

  1. Crea o aggiorna un file PAC.

    • Crea la tua prima applicazione creando un file pac_config.js utilizzando il seguente file PAC di esempio.

    • Aggiorna il file pac_config.js esistente 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.

  2. 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.

  3. Per verificare che il file caricato sia l'ultima versione, puoi modificarne il comportamento di memorizzazione nella cache impostando l'intestazione Cache-Control su no-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-Control e sul suo impatto sulla memorizzazione nella cache del browser, consulta Intestazione Cache-Control.

  4. Copia l'URL pubblico del file caricato.

Aggiornare le impostazioni della modalità proxy

  1. Vai alla Console di amministrazione Google.
  2. Fai clic su Dispositivi > Chrome > Impostazioni.
  3. Seleziona l'unità organizzativa o il gruppo, quindi fai clic su Modalità proxy.
  4. In Modalità proxy, seleziona Utilizza sempre la configurazione automatica proxy specificata di seguito e inserisci l'URL del file PAC da Cloud Storage.
  5. 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.

  1. Lettura: innanzitutto, recupera la policy di accesso corrente.

  2. Modifica: modifica il file di criteri localmente per aggiungere o modificare le autorizzazioni.

  3. 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 applicazione
  • SECURITY_GATEWAY_ID: l'ID del gateway di sicurezza
  • PROJECT_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 sicurezza
  • SECURITY_GATEWAY_ID: l'ID del gateway di sicurezza
  • APPLICATION_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 applicazione
  • SECURITY_GATEWAY_ID: l'ID del gateway di sicurezza
  • PROJECT_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 sicurezza
  • SECURITY_GATEWAY_ID: l'ID del gateway di sicurezza
  • APPLICATION_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:

  1. Vai alla Console di amministrazione Google.
  2. Fai clic su Browser Chrome > App ed estensioni.
  3. Fai clic sulla scheda Utenti e browser.
  4. Per aggiungere l'estensione Chrome, fai clic sul pulsante +.
  5. Cerca la seguente estensione e richiedine l'installazione per tutti gli utenti dell'unità organizzativa o del gruppo:

    ekajlcmdfcigmdbphhifahdfjbkciflj
  6. 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 sicurezza
    • SECURITY_GATEWAY_ID: l'ID del gateway di sicurezza

  7. 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.

Passaggi successivi