In questa pagina viene descritto 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
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 del segmento di pubblico viene codificato nel token per specificare il target previsto che può 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 servizio di 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 regione anche se il nome del servizio è lo stesso.
In questi scenari, devi configurare un servizio per accettare valori dei segmenti di pubblico che consentono target aggiuntivi noti a 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 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, purché la codifica JSON i segmenti di pubblico come elenco di stringhe non devono superare i 32.768 caratteri.
Qualsiasi modifica alla configurazione comporta 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 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
sul servizio metadati (non nei 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 tuo servizio Cloud Run
- AUDIENCE con una stringa per il segmento di pubblico personalizzato che vuoi
assistenza specifica, 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 codice: :
gcloud run services replace service.yaml
Verifica dei 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. it
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. it
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
.Conferma che la richiesta sia autorizzata e che vedi la risposta prevista del il tuo servizio.