Autorizzazione dell'accesso pubblico (non autenticato)

Questa opzione è per un servizio Cloud Run che è un'API o un sito web pubblici.

Puoi consentire chiamate non autenticate a un servizio assegnando il ruolo IAM Invoker di Cloud Run al tipo di membro allUsers.

Devi disporre dell'autorizzazione run.services.setIamPolicy per configurare l'autenticazione su un servizio Cloud Run. Questa autorizzazione è inclusa sia nei ruoli Proprietario che in Amministratore Cloud Run. Consulta Ruoli IAM di Cloud Run per l'elenco completo dei ruoli e delle autorizzazioni associate.

Interfaccia utente della console

Per un servizio Cloud Run esistente:

  1. Vai alla console Google Cloud:

    Vai alla console Google Cloud

  2. Fai clic sulla casella di controllo a sinistra del servizio che vuoi rendere pubblico. Non fare clic sul servizio stesso.

  3. 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, quindi su Autorizzazioni.

  4. Fai clic su Aggiungi entità.

Nella casella di testo Nuove entità, inserisci il valore allUsers

  1. Dal menu a discesa Ruolo, seleziona il ruolo Invoker di Cloud Run.

  2. Fai clic su Salva.

  3. Ti verrà chiesto di verificare se 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, ma assicurati di selezionare Consenti chiamate non autenticate nella scheda Autenticazione per rendere il servizio disponibile pubblicamente. Se selezioni Richiedi autenticazione, il servizio sarà privato.

gcloud

Per rendere un servizio accessibile pubblicamente, usa il comando gcloud run services per aggiungere il tipo di membro allUsers speciale a un servizio e assegnagli il ruolo roles/run.invoker:

  gcloud run services add-iam-policy-binding [SERVICE_NAME] \
    --member="allUsers" \
    --role="roles/run.invoker"

In alternativa, esegui il comando gcloud run deploy per rendere il servizio accessibile pubblicamente 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 chiamate non autenticate per l'istanza SERVICE esistente utilizzando:

gcloud run services set-iam-policy SERVICE policy.yaml

Terraform

Per creare un servizio Cloud Run, aggiungi quanto segue al tuo file main.tf esistente:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloud-run-srv"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

Per aggiornare l'associazione IAM del servizio per roles/run.invoker, aggiungi la seguente risorsa che faccia riferimento al tuo servizio Cloud Run:

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

Questa associazione è autorevole solo per il ruolo specificato. Altre associazioni IAM all'interno del criterio IAM del servizio vengono mantenute.

Condivisione limitata per i domini

Se il progetto è soggetto al vincolo di condivisione limitata per i domini in un criterio dell'organizzazione, per impostazione predefinita non potrai creare servizi pubblici. Puoi utilizzare tag e criterio condizionale per escludere servizi specifici da questo vincolo. Per maggiori dettagli, consulta il post del blog sulla creazione di servizi Cloud Run pubblici quando viene applicata la condivisione limitata per i domini.