Esistono due modi per creare un servizio Cloud Run pubblico:
- Disattiva il controllo IAM dell'invoker Cloud Run (opzione consigliata).
- Assegna il ruolo IAM Invoker di Cloud Run al tipo di membro
allUsers
.
Ruoli obbligatori
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 nel ruolo
Amministratore di Cloud Run
(roles/run.admin
). Consulta
Ruoli IAM di Cloud Run
per l'elenco completo dei ruoli e delle relative autorizzazioni.
Disattiva il controllo IAM dell'invoker Cloud Run
Il modo consigliato per creare un servizio pubblico è disabilitare il controllo dell'invoker IAM di Cloud Run. Cloud Run applica questo controllo per impostazione predefinita. Utilizza questa soluzione quando il progetto è soggetto al vincolo di condivisione limitata per i domini in una policy dell'organizzazione.
Per disattivare il controllo:
Console
Nella console Google Cloud , vai alla pagina Cloud Run:
Fai clic su Crea servizio se stai configurando un nuovo servizio, poi compila la pagina delle impostazioni iniziali del servizio in base alle tue esigenze.
Se stai configurando un servizio esistente, fai clic sul servizio, quindi sulla scheda Sicurezza.
Seleziona Consenti accesso pubblico.
Fai clic su Crea o Salva.
gcloud
Per un nuovo servizio, utilizza il comando
gcloud run deploy
con il flag--no-invoker-iam-check
:gcloud run deploy SERVICE_NAME --no-invoker-iam-check
Sostituisci
SERVICE_NAME
con il nome del servizio.Per un servizio esistente, utilizza il comando
gcloud run services update
con il flag--no-invoker-iam-check
:gcloud run services update SERVICE_NAME --no-invoker-iam-check
Sostituisci SERVICE_NAME
con 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
Sostituisci SERVICE_NAME con il nome del tuo servizio Cloud Run.
Sostituisci il servizio con la sua 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.
Riattiva il controllo IAM dell'invoker Cloud Run
Per riattivare il controllo:
Console
Nella console Google Cloud , vai alla pagina Cloud Run:
Fai clic sul servizio, poi su Sicurezza.
Seleziona Autenticazione necessaria e Identity and Access Management (IAM).
Fai clic su Salva.
gcloud
Aggiorna il servizio passando il flag
--invoker-iam-check
:gcloud run services update SERVICE_NAME --invoker-iam-check
Sostituisci
SERVICE_NAME
con 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
Sostituisci
SERVICE_NAME
con il nome del tuo 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 IAM Invoker di Cloud Run al tipo di membro allUsers
Puoi consentire l'accesso pubblico 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 nel ruolo Amministratore di Cloud Run. Consulta
Ruoli IAM di Cloud Run
per l'elenco completo dei ruoli e delle relative autorizzazioni.
Console
Per un servizio Cloud Run esistente:
Nella console Google Cloud , vai alla pagina Cloud Run:
A sinistra del servizio che vuoi rendere pubblico, fai clic sulla casella di controllo. 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
.
Nel menu Seleziona un ruolo, seleziona il ruolo Cloud Run Invoker.
Fai clic su Salva.
Ti verrà chiesto di verificare che vuoi 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 e seleziona Consenti accesso pubblico nella sezione Autenticazione per rendere il servizio disponibile pubblicamente. Per rendere privato un servizio, seleziona Richiedi autenticazione.
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 tuo servizio
pubblicamente accessibile quando esegui il deployment del servizio:
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 l'accesso pubblico 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 una risorsagoogle_cloud_run_v2_service
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:
Questo binding è autorevole solo per il ruolo specificato. Gli altri binding IAM all'interno del criterio IAM del servizio vengono conservati.