Utilizzare gli account di servizio per creare criteri

Un account di servizio è uno speciale Account Google non umano utilizzato da applicazioni, processi automatizzati o carichi di lavoro di computing, come un'istanza Compute Engine, per effettuare chiamate API autorizzate. A differenza degli account utente, un account di servizio è identificato esclusivamente dal suo indirizzo email univoco.

Le applicazioni utilizzano i service account per autenticarsi e ottenere l'accesso alle risorseGoogle Cloud . Quando un'applicazione esegue l'autenticazione utilizzando un service account, ottiene l'accesso alle risorse per le quali al account di servizio sono state assegnate autorizzazioni Identity and Access Management esplicite. Questo fornisce un metodo sicuro, controllabile e centralizzato per l'autorizzazione da macchina a macchina.

Per Secure Web Proxy, i service account svolgono un ruolo fondamentale nell'autorizzazione e nell'applicazione delle norme. Utilizzando un account di servizio per identificare l'origine del traffico di un workload, puoi creare policy Secure Web Proxy granulari che consentono o negano specificamente il traffico web in base all'identità dell'applicazione, anziché solo al suo indirizzo IP.

Questa pagina mostra come:

Prima di iniziare

Crea un'istanza di Secure Web Proxy con una policy vuota

Per creare un'istanza di Secure Web Proxy, devi prima creare una policy di sicurezza vuota e poi creare un proxy web che utilizzi la policy.

Crea una policy di sicurezza vuota

Console

  1. Nella console Google Cloud , vai alla pagina Policy SWP.

    Vai alle policy SWP

  2. Fai clic su Crea una policy.

  3. Nel campo Nome, inserisci un nome per la policy, ad esempio myswppolicy.

  4. Nel campo Descrizione, inserisci una descrizione della norma, ad esempio My new swp policy.

  5. Per Regioni, seleziona la regione in cui vuoi creare il criterio, ad esempio us-central1.

  6. Fai clic su Crea.

Cloud Shell

  1. Utilizza l'editor di testo che preferisci per creare un file policy.yaml.

  2. Aggiungi quanto segue al file policy.yaml che hai creato:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del progetto

    • REGION: la regione in cui viene creata la policy, ad esempio us-central1

    • POLICY_NAME: il nome della policy

    • POLICY_DESCRIPTION: la descrizione della policy

  3. Importa la policy di sicurezza utilizzando il comando gcloud network-security gateway-security-policies import:

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

Crea un proxy web

Console

  1. Nella console Google Cloud , vai alla pagina Proxy web.

    Vai a Proxy web

  2. Fai clic su Crea un proxy web sicuro.

  3. Nel campo Nome, inserisci un nome per il web proxy, ad esempio myswp.

  4. Nel campo Descrizione, inserisci una descrizione del proxy web, ad esempio My new swp.

  5. Per Modalità di routing, seleziona una delle seguenti opzioni:

    • Esplicito: esegue il deployment dell'istanza di Secure Web Proxy in modalità proxy esplicito.
    • Hop successivo: esegue il deployment dell'istanza di Secure Web Proxy in modalità hop successivo.
  6. Per Regioni, seleziona la regione in cui vuoi creare il proxy web, ad esempio us-central1.

  7. In Rete, seleziona la rete in cui vuoi creare il proxy web.

  8. Per Subnet, seleziona la subnet VPC che hai creato durante la configurazione iniziale.

  9. (Facoltativo) Nel campo Indirizzo IP del proxy web, inserisci l'indirizzo IP del Secure Web Proxy.

    Puoi inserire un indirizzo IP dall'intervallo di indirizzi IP di Secure Web Proxy che si trovano nella subnet che hai creato nel passaggio precedente. Se non inserisci l'indirizzo IP, l'istanza di Secure Web Proxy sceglie automaticamente un indirizzo IP dalla subnet selezionata.

  10. In Certificato, seleziona il certificato che vuoi utilizzare per creare il proxy web.

  11. Per Policy, seleziona la policy che hai creato per associare il proxy web.

  12. Fai clic su Crea.

Cloud Shell

  1. Utilizza l'editor di testo che preferisci per creare un file gateway.yaml.

  2. Aggiungi quanto segue al file gateway.yaml:

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    routingMode: ROUTING_MODE
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    Sostituisci quanto segue:

    • GATEWAY_NAME: il nome di questa istanza di Secure Web Proxy

    • GATEWAY_PORT_NUMBERS: elenco dei numeri di porta per questo gateway, ad esempio [80,443]

    • CERTIFICATE_URLS: elenco degli URL dei certificati SSL

    • SUBNETWORK: la subnet VPC che hai creato durante la configurazione iniziale

    • ROUTING_MODE: specifica la modalità di routing del proxy web richiesta:

      • EXPLICIT_ROUTING_MODE: esegue il deployment dell'istanza di Secure Web Proxy in modalità proxy esplicito
      • NEXT_HOP_ROUTING_MODE: esegue il deployment dell'istanza di Secure Web Proxy in modalità hop successivo
    • GATEWAY_IP_ADDRESS: elenco facoltativo di indirizzi IP per le istanze Secure Web Proxy all'interno delle subnet proxy create in precedenza nei passaggi di configurazione iniziali.

      Se scegli di non elencare gli indirizzi IP, ometti il campo per consentire al proxy web di scegliere un indirizzo IP per te.

  3. Crea l'istanza di Secure Web Proxy utilizzando il comando gcloud network-services gateways import:

    gcloud network-services gateways import GATEWAY_NAME \
        --source=gateway.yaml \
        --location=REGION
    

Testa la connettività

Per testare la connettività, utilizza il comando curl da qualsiasi istanza di macchina virtuale (VM) all'interno della tua rete Virtual Private Cloud (VPC):

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure

Se tutto funziona correttamente, l'istanza di Secure Web Proxy restituisce un codice di stato 403 Forbidden. Questo errore conferma quanto segue:

  • L'istanza di Secure Web Proxy è stata implementata correttamente e riceve attivamente traffico.

  • Il criterio di Secure Web Proxy applica correttamente la security posture predefinita di rifiuto di tutto il traffico finché non definisci regole allow specifiche nelle sezioni successive.

Crea un account di servizio e concedi ruoli IAM

  1. Crea un service account: utilizza il comandogcloud iam service-accounts create per creare un account di servizio denominato my-swp-sa nel tuo progetto Google Cloud.

    gcloud iam service-accounts create my-swp-sa \
        --display-name="Secure Web Proxy service account" \
        --description="Service account for Secure Web Proxy instances"
  2. Concedi ruoli IAM al service account: utilizza il comandogcloud projects add-iam-policy-binding per concedere i ruoli IAM necessari al account di servizio in modo che possa gestire o utilizzare le risorse nel tuo progetto Google Cloud .

    Ad esempio, per consentire al account di servizio di utilizzare le risorse di rete, concedigli il ruolo Utente rete Compute (roles/compute.networkUser).

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:my-swp-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.networkUser"

    Sostituisci PROJECT_ID con l'ID del tuo progettoGoogle Cloud .

Crea una regola Secure Web Proxy

Console

  1. Nella console Google Cloud , vai alla pagina Policy SWP.

    Vai alle policy SWP

  2. Fai clic sul nome della policy che hai creato in precedenza, ad esempio myswppolicy.

  3. Fai clic su Aggiungi regola.

  4. Per ogni regola, procedi nel seguente modo:

    1. Nel campo Priority (Priorità), inserisci un ordine di valutazione numerico per la regola. Le regole vengono valutate dalla priorità più alta a quella più bassa, dove 0 è la priorità più alta.

    2. Nel campo Nome, inserisci un nome per la regola.

    3. Nel campo Descrizione, inserisci una descrizione della regola.

    4. Per Azione, seleziona una delle seguenti opzioni:

      • Consenti: per consentire le richieste di connessione che corrispondono alla regola.
      • Nega: per negare le richieste di connessione che corrispondono alla regola.
    5. Per il campo Stato, seleziona una delle seguenti opzioni per l'applicazione della regola:

      • Abilitato: per applicare la regola all'istanza di Secure Web Proxy.
      • Disattivato: per non applicare la regola all'istanza di Secure Web Proxy.
    6. Nella sezione Corrispondenza sessione, specifica l'indirizzo email del account di servizio che hai creato in precedenza. Ad esempio:

        sessionMatcher: "source.matchServiceAccount(SERVICE_ACCOUNT) && host() == 'example.com'"
      

      Per saperne di più sulla sintassi di SessionMatcher, consulta il riferimento al linguaggio del matcher CEL.

    7. Nella sezione Corrispondenza applicazione, specifica i criteri per la corrispondenza della richiesta.

    8. Fai clic su Aggiungi regola.

  5. Per aggiungere un'altra regola, fai clic su Aggiungi regola.

Cloud Shell

  1. Utilizza l'editor di testo che preferisci per creare il file rule.yaml.

  2. Per consentire l'accesso a un URL dal account di servizio appropriato, aggiungi quanto segue al file rule.yaml che hai creato:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    description: RULE_DESCRIPTION
    enabled: true
    priority: RULE_PRIORITY
    sessionMatcher: CEL_EXPRESSION
    basicProfile: ALLOW
    

    Sostituisci quanto segue:

    • RULE_NAME: il nome di questa regola
    • RULE_DESCRIPTION: descrizione della regola
    • RULE_PRIORITY: priorità di questa regola; un numero inferiore corrisponde a una priorità più alta
    • CEL_EXPRESSION: un'espressione Common Expression Language (CEL). Per saperne di più, consulta il riferimento al linguaggio del matcher CEL.

    Ad esempio, per consentire l'accesso a example.com dalla risorsa con il account di servizio richiesto, aggiungi quanto segue al file YAML che hai creato per sessionMatcher:

    ```yaml
    sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'"
    ```
    

    Sostituisci SERVICE_ACCOUNT con il account di servizio che vuoi consentire. Deve essere l'indirizzo email del account di servizio.

  3. Importa le regole che hai creato utilizzando il comando gcloud network-security gateway-security-policies rules import:

    gcloud network-security gateway-security-policies rules import RULE_NAME \
        --source=RULE_FILE.yaml \
        --location=REGION \
        --gateway-security-policy=POLICY_NAME
    

Testa la connettività

Puoi testare di nuovo la connettività per verificare che l'intera configurazione di Secure Web Proxy, inclusi il account di servizio, le regole delle policy di sicurezza e il gateway, funzioni come previsto.

Per testare la connettività, utilizza il comando curl dalla risorsa, ad esempio un'istanza VM, con SERVICE_ACCOUNT collegato:

curl -x https://IPv4_ADDRESS:443 http://example.com 
--proxy-insecure

Sostituisci IPv4_ADDRESS con l'indirizzo IPv4 della tua istanza Secure Web Proxy.

Se tutto funziona correttamente, ricevi un codice di stato 200 OK. Questo codice di stato conferma i seguenti risultati chiave:

  • Autorizzazione riuscita: dimostra che il traffico proveniente dalla risorsa è correttamente identificato dal account di servizio assegnato e che questa identità corrisponde correttamente alla regola allow che hai aggiunto alla policy di sicurezza.

  • Funzionalità end-to-end: verifica che il traffico scorra correttamente attraverso il percorso configurato, dalla risorsa all'istanza di Secure Web Proxy, superando la policy di sicurezza e raggiungendo la destinazione esterna.

Passaggi successivi