Impostare segmenti di pubblico personalizzati (servizi)

In questa pagina viene descritto come utilizzare i segmenti di pubblico personalizzati per l'autorizzazione.

Client che chiamano un servizio Cloud Run protetto da Identity and Access Management devi fornire un token ID valido che includa un rivendicazione del pubblico che corrisponde alla all'URL *.run.app del servizio. Per i clienti che non conoscono questo URL, puoi utilizzare un valore del segmento di pubblico personalizzato.

Informazioni sui segmenti di pubblico personalizzati

Cloud Run fornisce un ruolo Invoker (roles/run.invoker) per supportare controllo dell'accesso con IAM. Il controllo dell'accesso IAM utilizza token ID firmati da Google, , pacchettizzati come token web JSON (JWT). I contenuti di questi token sono conformi a uno standard OIDC.

Un campo Audience è codificato nel token per specificare il target previsto che possono utilizzare il token. Questo limita il rischio di un attacco di ripetizione, in cui un token intercettato intendeva per l'uso con un servizio viene riprodotta su un altro servizio.

Per convenzione, il segmento di pubblico è l'URL completo del servizio di destinazione. Per impostazione predefinita in Cloud Run, si tratta dell'URL generato da Google per un servizio che termina con run.app.

Tuttavia, un servizio Cloud Run potrebbe trovarsi dietro un URL diverso da un URL generato per impostazione predefinita, come nei seguenti scenari:

  • Quando utilizzi un dominio personalizzato per raggiungere un in cui il client non è a conoscenza dell'URL generato da Google.
  • Quando si esegue il deployment di più servizi dietro un bilanciatore del carico in cui un client non è in grado di prevedere quale servizio regionale sarà raggiunto da una richiesta. Gli URL generati da Google per i servizi sono specifici per ogni regione, anche se il servizio nome sia lo stesso.

In questi scenari, devi configurare un servizio per accettare valori dei segmenti di pubblico che consentono target aggiuntivi conosciuti da un cliente. Il valore predefinito L'URL generato da Google rimane sempre un valore per i segmenti di pubblico accettato.

Impostare e aggiornare i segmenti di pubblico personalizzati

L'impostazione di segmenti di pubblico personalizzati per Cloud Run viene eseguita a livello di servizio. e si applica a tutte le revisioni di pubblicazione, come per IAM l'appartenenza all'autorizzazione.

Puoi impostare più segmenti di pubblico personalizzati, purché la codifica JSON i segmenti di pubblico come elenco di stringhe non devono superare i 32.768 caratteri.

Qualsiasi modifica alla configurazione porta la creazione di una nuova revisione. Anche le revisioni successive ricevono automaticamente di questa configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

gcloud

Puoi impostare segmenti di pubblico personalizzati su un servizio utilizzando il seguente comando:

gcloud run services update SERVICE --add-custom-audiences=AUDIENCE

Sostituisci

  • SERVICE con il nome del tuo servizio Cloud Run
  • AUDIENCE con una stringa per il segmento di pubblico personalizzato che vuoi assistenza specifica, ad esempio myservice o https://myservice.example.com

Puoi rimuovere tutti i segmenti di pubblico personalizzati da un servizio utilizzando il seguente comando:

gcloud run services update SERVICE --clear-custom-audiences

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Imposta l'annotazione run.googleapis.com/custom-audiences sul servizio metadati (non nei metadati template):

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/custom-audiences: '["AUDIENCE"]'
    spec:
      template:
        ...

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run
    • AUDIENCE con una stringa per il segmento di pubblico personalizzato che vuoi assistenza specifica, ad esempio myservice o https://myservice.example.com

    Tieni presente che il valore dell'attributo è un array di stringhe JSON tra virgolette, che richiedono l'utilizzo di virgolette doppie e singole.

  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente codice: :

    gcloud run services replace service.yaml

Verifica dei segmenti di pubblico personalizzati

  1. Richiedere un token ID per un account di servizio con autorizzazione IAM per richiamare il servizio. Tieni presente che viene utilizzato il segmento di pubblico personalizzato AUDIENCE.

    export TOKEN=$(gcloud auth print-identity-token --impersonate-service-account SERVICE_ACCOUNT_EMAIL --audiences='AUDIENCE')

    Sostituisci:

    • SERVICE_ACCOUNT_EMAIL con l'indirizzo email dell'account di servizio. it termina con .iam.gserviceaccount.com.
    • AUDIENCE con il valore del segmento di pubblico personalizzato che hai impostato nella completamente gestito di Google Cloud.
  2. Chiama l'endpoint del servizio con quel token ID

    curl -H "Authorization: Bearer ${TOKEN}" ENDPOINT

    Sostituisci ENDPOINT con l'endpoint per raggiungere il tuo servizio, per ad esempio il suo dominio personalizzato o l'URL .run.app.

  3. Conferma che la richiesta sia autorizzata e che vedi la risposta prevista del il tuo servizio.