Consentire l'accesso pubblico (non autenticato)

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

  1. Nella console Google Cloud , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. 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.

  3. Seleziona Consenti accesso pubblico.

  4. 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

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 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.

  3. 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

  1. Nella console Google Cloud , vai alla pagina Cloud Run:

    Vai a Cloud Run

  2. Fai clic sul servizio, poi su Sicurezza.

  3. Seleziona Autenticazione necessaria e Identity and Access Management (IAM).

  4. 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

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 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:

  1. Nella console Google Cloud , vai alla pagina Cloud Run:

    Vai alla console Google Cloud

  2. A sinistra del servizio che vuoi rendere pubblico, fai clic sulla casella di controllo. 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 e poi su Autorizzazioni.

  4. Fai clic su Aggiungi entità.

Nel campo Nuove entità, inserisci il valore allUsers.

  1. Nel menu Seleziona un ruolo, seleziona il ruolo Cloud Run Invoker.

  2. Fai clic su Salva.

  3. 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 risorsa google_cloud_run_v2_service nella configurazione Terraform:
resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  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 fa 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"
  ]
}

Questo binding è autorevole solo per il ruolo specificato. Gli altri binding IAM all'interno del criterio IAM del servizio vengono conservati.