Questa opzione è per un servizio Cloud Run che è un'API o un sito web pubblici.
Esistono due modi per creare un servizio Cloud Run pubblico:
- Disattiva il controllo InvokerIAM di Cloud Run (opzione consigliata).
- Assegna il ruolo IAM Invoker di Cloud Run al tipo di membro
allUsers
.
Disattivare il controllo IAM dell'invoker Cloud Run
Il modo consigliato per creare un servizio pubblico è disattivare il controllo IAM dell'invoker di Cloud Run. Il controllo viene applicato per impostazione predefinita. Questa è la soluzione in particolare se il progetto è soggetto al vincolo di condivisione limitata del dominio in un criterio dell'organizzazione.
Per disattivare o riattivare il controllo IAM dell'invoker su un servizio, devi disporre delle seguenti autorizzazioni:
run.services.create
run.services.update
run.services.setIamPolicy
Queste autorizzazioni sono incluse nei ruoli Proprietario e Amministratore di Cloud Run. Consulta [Ruoli IAM di Cloud Run][1] per l'elenco completo dei ruoli e delle relative autorizzazioni associate.
Disattivare il controllo IAM dell'invoker Cloud Run
Per disattivare il controllo:
Console
Fai clic su Crea servizio se stai configurando un nuovo servizio, quindi compila la pagina delle impostazioni iniziali del servizio in base alle tue esigenze. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Sicurezza.
Deseleziona Utilizza IAM per autenticare le richieste in entrata.
Fai clic su Crea o Salva.
gcloud
Per un nuovo servizio, utilizza il comando
gcloud run deploy
con il--no-invoker-iam-check
flag:gcloud run deploy SERVICE_NAME --no-invoker-iam-check
dove
SERVICE_NAME
è il nome del servizio.Per un servizio esistente, utilizza il comando
gcloud run services update
con il--no-invoker-iam-check
flag:gcloud run services update SERVICE_NAME --no-invoker-iam-check
dove
SERVICE_NAME
è il nome del servizio.
YAML
Per visualizzare e scaricare la configurazione:
gcloud run services describe SERVICE --format export > service.yaml
Aggiorna l'annotazione
run.googleapis.com/invoker-iam-disabled:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/invoker-iam-disabled: true name: SERVICE_NAME
dove SERVICE_NAME è il nome del servizio Cloud Run.
Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:
gcloud run services replace service.yaml
Verifica che il controllo sia disattivato dopo il deployment accedendo all'endpoint HTTPS del servizio.
Riattivare il controllo IAM dell'invoker Cloud Run
Per riattivare il controllo:
Console
Fai clic sul servizio, quindi su Sicurezza.
Seleziona Utilizza IAM per autenticare le richieste in entrata.
Fai clic su Salva.
gcloud
Aggiorna il servizio passando il flag
--invoker-iam-check
:gcloud run services update SERVICE_NAME --invoker-iam-check
dove
SERVICE_NAME
è il nome del servizio.
YAML
Per visualizzare e scaricare la configurazione:
gcloud run services describe SERVICE --format export > service.yaml
Aggiorna l'annotazione
run.googleapis.com/invoker-iam-disabled:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/invoker-iam-disabled: false name: SERVICE_NAME
dove SERVICE_NAME è il nome del servizio Cloud Run.
Verifica che il controllo venga riattivato dopo il deployment accedendo all'endpoint HTTPS del servizio.
Configura il criterio dell'organizzazione per il controllo IAM dell'invoker Cloud Run
Se sei un amministratore, puoi limitare la possibilità di
disattivare il controllo IAM dell'invoker
utilizzando il vincolo gestito constraints/run.managed.requireInvokerIam
.
Questo vincolo non viene applicato per impostazione predefinita.
Assegna il ruolo Invoker di Cloud IAM al tipo di membro allUsers
Puoi consentire chiamate non autenticate a un servizio assegnando il ruolo IAM Invoker di Cloud Run al tipo di membro allUsers
.
Per configurare l'autenticazione su un servizio Cloud Run, devi disporre dell'autorizzazione run.services.setIamPolicy
. Questa autorizzazione è inclusa nei ruoli Proprietario e
Amministratore di Cloud Run. Consulta Ruoli IAM di Cloud Run per l'elenco completo dei ruoli e delle relative autorizzazioni associate.
Interfaccia utente della console
Per un servizio Cloud Run esistente:
Vai alla Google Cloud console:
Fai clic sulla casella di controllo a sinistra del servizio che vuoi rendere pubblico. (Non fare clic sul servizio stesso).
Nel riquadro delle informazioni nell'angolo in alto a destra, fai clic sulla scheda Autorizzazioni. Se il riquadro delle informazioni non è visibile, potresti dover fare clic su Mostra riquadro informazioni e poi su Autorizzazioni.
Fai clic su Aggiungi entità.
Nel campo Nuove entità, inserisci il valore allUsers
Dal menu a discesa Ruolo, seleziona il ruolo Cloud Run Invoker.
Fai clic su Salva.
Ti verrà chiesto di verificare di voler rendere pubblica questa risorsa. Fai clic su Consenti accesso pubblico per applicare la modifica alle impostazioni IAM del servizio.
Per un nuovo servizio che stai creando, crea il servizio, ma assicurati di selezionare Consenti chiamate non autenticate nella scheda Autenticazione per renderlo disponibile pubblicamente. Se selezioni Richiedi l'autenticazione, il servizio diventerà privato.
gcloud
Per rendere un servizio accessibile pubblicamente, utilizza il comando gcloud run services
per aggiungere il tipo di membro speciale allUsers
a un servizio e concedergli il ruolo roles/run.invoker
:
gcloud run services add-iam-policy-binding [SERVICE_NAME] \ --member="allUsers" \ --role="roles/run.invoker"
Esegui il comando gcloud run deploy
per rendere il servizio pubblicamente accessibile quando esegui il deployment:
gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated
YAML
Crea un file denominato policy.yaml
con i seguenti contenuti:
bindings:
- members:
- allUsers
role: roles/run.invoker
Consenti le chiamate non autenticate per l'SERVICE esistente utilizzando:
gcloud run services set-iam-policy SERVICE policy.yaml
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi quanto segue a unagoogle_cloud_run_v2_service
risorsa nella configurazione Terraform:Per aggiornare l'associazione IAM del servizio per roles/run.invoker
, aggiungi la seguente risorsa che fa riferimento al tuo servizio Cloud Run:
Questa associazione è autorevole solo per il ruolo specificato. Altre associazioni IAM all'interno del criterio IAM del servizio vengono conservate.