Questa pagina descrive come utilizzare i segmenti di pubblico personalizzati per l'autorizzazione.
I client che chiamano un servizio Cloud Run protetto da Identity and Access Management devono fornire un token ID valido che includa un claim sul segmento di pubblico corrispondente all'URL *.run.app
del servizio di destinazione. 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 il controllo degli accessi con IAM.
Controllo dell'accesso IAM utilizza token ID firmati da Google,
che sono pacchettizzati come token web JSON (JWT).
I contenuti di questi token sono conformi a uno standard OIDC.
Un campo del segmento di pubblico viene codificato nel token per specificare il target previsto che può utilizzare il token. In questo modo si riduce il rischio di un attacco di replay, in cui un token intercettato destinato all'utilizzo con un servizio viene riprodotto su un altro servizio.
Per convenzione, il segmento di pubblico è l'URL completo del servizio di destinazione. Per impostazione predefinita in Cloud Run, questo è l'URL generato da Google per un servizio che termina con run.app
.
Tuttavia, un servizio Cloud Run potrebbe trovarsi dietro un URL diverso da quello generato per impostazione predefinita, ad esempio nei seguenti scenari:
- Quando utilizzi un dominio personalizzato per raggiungere un servizio di cui il client non è a conoscenza dell'URL generato da Google.
- Quando esegui il deployment di più servizi dietro un bilanciatore del carico in cui un client non può prevedere quale servizio regionale raggiunge una richiesta. Gli URL generati da Google per i servizi sono specifici per regione anche se il nome del servizio è lo stesso.
In questi scenari, devi configurare un servizio in modo che accetti valori di pubblico personalizzati che consentano target aggiuntivi noti a un client. L'URL predefinito generato da Google rimane sempre un valore accettato per il segmento di pubblico.
Impostare e aggiornare i segmenti di pubblico personalizzati
L'impostazione dei segmenti di pubblico personalizzati per Cloud Run viene eseguita a livello di servizio e si applica a tutte le revisioni di pubblicazione, in modo simile all'appartenenza all'autorizzazione IAM.
Puoi impostare più segmenti di pubblico personalizzati, a condizione che la codifica JSON dei segmenti di pubblico come elenco di stringhe non superi i 32.768 caratteri.
Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive acquisiranno automaticamente questa impostazione di 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 servizio Cloud Run
- AUDIENCE con una stringa per il segmento di pubblico personalizzato da supportare, ad esempio
myservice
ohttps://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
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
Imposta l'annotazione
run.googleapis.com/custom-audiences
sui metadati del servizio (non sui metadatitemplate
):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 servizio Cloud Run
- AUDIENCE con una stringa per il segmento di pubblico personalizzato da supportare, ad esempio
myservice
ohttps://myservice.example.com
Tieni presente che il valore dell'attributo è un array JSON di stringhe tra virgolette, che richiede l'uso sia di virgolette doppie che singole.
Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:
gcloud run services replace service.yaml
Verificare i segmenti di pubblico personalizzati
Ottieni un token ID per un account di servizio che dispone dell'autorizzazione IAM per invocare il servizio. Tieni presente l'utilizzo del 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. Termina con
.iam.gserviceaccount.com
. - AUDIENCE con il valore del segmento di pubblico personalizzato impostato sul servizio.
- SERVICE_ACCOUNT_EMAIL con l'indirizzo email dell'account di servizio. Termina con
Chiama l'endpoint del servizio con il token ID
curl -H "Authorization: Bearer ${TOKEN}" ENDPOINT
Sostituisci ENDPOINT con l'endpoint per raggiungere il tuo servizio, ad esempio il dominio personalizzato o l'URL
.run.app
.Verifica che la richiesta sia autorizzata e che tu veda la risposta prevista del servizio.