Passaggio 3: configura l'accesso

Questa sezione fornisce indicazioni su diversi modi per concedere l'accesso al deployment di MDE, a seconda delle tue esigenze.

Tunneling SSH su IAP

Per connetterti agli IP privati dei servizi MDE, puoi utilizzare un tunnel SSH a una VM proxy. Questo approccio ti consente di utilizzare strumenti locali come Postman per interagire con le API MDE.

Il deployment MDE standard crea una VM proxy denominata mde-proxy. Questa macchina può eseguire il proxy delle richieste in entrata al gateway API MDE o all'interfaccia web MDE. Questa VM ha solo un IP privato, ma IAP ti consente di creare un tunnel SSH sicuro a questa macchina utilizzando Identity-Aware Proxy (IAP) per l'inoltro TCP. Il resto di questa sezione spiega come configurare IAP per il tunneling del traffico a mde-proxy e come creare un tunnel da workstation:

  1. Nella Google Cloud console, vai a IAP e fai clic su Abilita API. L'operazione potrebbe richiedere diversi minuti.

  2. Nella Google Cloud console, vai a IAP e fai clic su RISORSE SSH E TCP.

  3. Concedi l'autorizzazione agli utenti autorizzati a utilizzare IAP per connettersi a mde-proxy tramite IAP:

    Prima che gli utenti possano utilizzare IAP per connettersi a mde-proxy, concedi loro il roles/iap.tunnelResourceAccessor ruolo seguendo queste istruzioni:

    1. Seleziona mde-proxy dall'elenco.

    2. Fai clic su Aggiungi entità nel riquadro laterale a destra.

    3. Digita l'indirizzo email dell'entità a cui vuoi concedere l'accesso.

    4. Seleziona il ruolo IAP-secured Tunnel User.

  4. Crea un tunnel all'API MDE utilizzando il seguente comando:

    export MDE_PROXY_ZONE=$(gcloud compute instances list --filter="mde-proxy"  \
    --format="value(zone)")
    
    gcloud compute ssh mde-proxy \
    --zone "$MDE_PROXY_ZONE" --tunnel-through-iap  \
    -- -N -L 8080:api.mde.cloud.google.com:80
    

    Dopo aver eseguito il comando, le API MDE sono accessibili all'indirizzo http://localhost:8080.

  5. Crea un tunnel all'interfaccia web MDE.

    Se hai creato un tunnel all'API MDE nel passaggio 3, puoi aprire un nuovo terminale per eseguire i comandi in un secondo momento. I tunnel SSH all'API MDE e all'interfaccia web MDE possono essere eseguiti in parallelo.

    export MDE_PROXY_ZONE=$(gcloud compute instances list --filter="mde-proxy" \
    --format="value(zone)")
    
    gcloud compute ssh mde-proxy \
    --zone "$MDE_PROXY_ZONE" --tunnel-through-iap  \
    -- -N -L 8081:ui.mde.cloud.google.com:80
    

    Dopo aver eseguito il comando, l'interfaccia web MDE è accessibile all'indirizzo http://localhost:8081.

Configura Identity-Aware Proxy

Identity-Aware Proxy (IAP) ti consente di connetterti in modo sicuro agli IP interni dell'API MDE e dell'interfaccia web, nonché di limitare l'accesso esterno all'interfaccia web MDE solo agli utenti autorizzati se l'hai eseguito il deployment con l'opzione Bilanciatore del carico esterno.

Per utilizzare IAP, devi prima abilitare l'API del servizio IAP (se non l'hai già fatto) e configurare la schermata OAuth:

  1. Nella Google Cloud console, vai a IAP e fai clic su Abilita API. L'operazione potrebbe richiedere diversi minuti.

  2. Configura la schermata per il consenso OAuth per IAP:

    1. Nella Google Cloud console, vai alla pagina della piattaforma di autenticazione Google e seleziona il progetto di deployment MDE se richiesto.

      1. Nella pagina Panoramica, fai clic su Crea client OAuth.
      2. Seleziona Applicazione web come tipo di applicazione.
      3. Inserisci il nome dell'applicazione che vuoi visualizzare, ad esempio MDE.
      4. Fai clic su Crea e OK nella finestra popup.
      5. Nella pagina Branding, assicurati di visualizzare Nome app, Email di assistenza utente e Informazioni di contatto dello sviluppatore .

    Per modificare in un secondo momento le informazioni nella schermata per il consenso OAuth, come il nome del prodotto o l'indirizzo email, ripeti i passaggi precedenti per configurare la schermata per il consenso.

Configura l'accesso al bilanciatore del carico HTTP esterno dell'interfaccia web

In questa sezione configurerai l'accesso al bilanciatore del carico HTTP esterno dell'interfaccia web MDE utilizzando IAP.

Se hai abilitato il bilanciatore del carico HTTP esterno per l'interfaccia web MDE, devi utilizzare IAP per limitare l'accesso all'applicazione solo agli utenti autorizzati.

Prima di iniziare

Assicurati di completare i seguenti prerequisiti:

  • Hai eseguito il deployment di MDE con l'interfaccia web MDE.
  • Hai eseguito il deployment dell'interfaccia web MDE con un bilanciatore del carico HTTP esterno.
  • Hai completato i passaggi di configurazione IAP generali.

Procedura

  1. Nella Google Cloud console, vai alla pagina IAP.

  2. Individua la risorsa corrispondente al servizio UI esterno (cerca mde-ui-ext-service).

  3. Nella colonna IAP per questa risorsa, sposta l'opzione su Attivato.

  4. Nella finestra di dialogo di conferma, fai clic su Attiva.

  5. Seleziona la casella di controllo accanto al nome della risorsa.

  6. Nel riquadro laterale a destra, fai clic su Aggiungi entità.

  7. Digita l'indirizzo email dell'utente o del gruppo a cui vuoi concedere l'accesso.

  8. Nell'elenco a discesa Ruolo, seleziona Cloud IAP > Utente applicazione web con protezione IAP.

  9. Fai clic su Salva.

Accesso tra organizzazioni (facoltativo)

Per impostazione predefinita, IAP utilizza client OAuth gestiti da Google, che limitano rigorosamente l'accesso agli utenti della stessa Google Cloud organizzazione del progetto. Se il deployment richiede l'accesso da parte di utenti esterni (partner che utilizzano un dominio diverso), devi utilizzare un client OAuth personalizzato configurato con un tipo di utente esterno.

Per maggiori dettagli, consulta la documentazione ufficiale su Google Cloud Utilizzo di client OAuth personalizzati con IAP e Abilitazione di IAP per GKE.

Puoi configurare questa impostazione utilizzando uno dei seguenti metodi:

Metodo A: configurazione diretta della console (senza secret GKE)

Se il BackendConfig di GKE non gestisce le impostazioni IAP (ovvero non ha un blocco iap, che consente a GKE Ingress di ereditare le impostazioni esistenti), puoi configurare il client personalizzato direttamente nella console:

  1. Configura la schermata per il consenso OAuth del progetto come Esterna (vedi la sezione Configura la schermata per il consenso OAuth sopra). Se l'app rimane in stato "Test", assicurati di aggiungere gli utenti esterni all'elenco Utenti di test.
  2. Vai alla pagina IAP.
  3. Per la risorsa mde-ui-ext-service, fai clic su Altre opzioni (tre puntini) nella colonna Azioni e seleziona Impostazioni.
  4. Seleziona OAuth personalizzato.
  5. Fai clic su Genera automaticamente le credenziali (o fornisci le credenziali esistenti se le hai create manualmente in API e servizi).
  6. Fai clic su Salva.

Metodo B: configurazione gestita da GKE (utilizzo di secret Kubernetes)

Se preferisci gestire la configurazione IAP utilizzando i manifest di Kubernetes (GitOps), devi archiviare le credenziali in un secret e farvi riferimento in BackendConfig:

  1. Configura la schermata per il consenso OAuth come Esterna e crea manualmente le credenziali client OAuth in API e servizi > Credenziali (tipo di applicazione web).
  2. Crea un secret Kubernetes nel cluster: sh kubectl create secret generic iap-oauth-secret \ --namespace=mde \ --from-literal=client_id=YOUR_CLIENT_ID \ --from-literal=client_secret=YOUR_CLIENT_SECRET
  3. Aggiorna BackendConfig per il tuo servizio in modo che faccia riferimento al secret: yaml spec: iap: enabled: true oauthclientCredentials: secretName: iap-oauth-secret

Configura il DNS per l'interfaccia web MDE

Se hai abilitato il bilanciatore del carico HTTP esterno per l'interfaccia web MDE, devi impostare il record A del nome di dominio assegnato alla variabile MDE_UI_DOMAIN_NAME in input.tfvars all'indirizzo IP del bilanciatore del carico HTTP esterno di cui è stato eseguito il deployment per completare il provisioning del certificato SSL gestito da Google.

Puoi cercare l'indirizzo IP del bilanciatore del carico HTTP esterno con il seguente comando:

gcloud compute addresses list --filter="name~'.*mde-ui.*'" --format="value(address)" --global

Consulta l'host DNS per informazioni dettagliate su come creare un record A.