Como permitir acesso público (não autenticado)

Essa opção é para um serviço do Cloud Run que é uma API pública ou um site.

.

É possível permitir chamadas não autenticadas a um serviço atribuindo o papel de invocador do Cloud Run do IAM ao tipo de membro allUsers.

É preciso ter a permissão run.services.setIamPolicy para configurar a autenticação em um serviço do Cloud Run. Essa permissão está incluída nos papéis Proprietário e Administrador do Cloud Run. Veja a lista completa de papéis e permissões associadas em Papéis do IAM do Cloud Run.

IU do Console

Para um serviço do Cloud Run existente:

  1. Acesse o Console do Google Cloud:

    Acessar o Console do Google Cloud

  2. Clique na caixa de seleção à esquerda do serviço que você quer tornar público. (Não clique no próprio serviço.)

  3. No painel de informações no canto superior direito, clique na guia Permissões. Se o painel de informações não estiver visível, clique em Mostrar painel de informações e Permissões.

  4. Clique em Adicionar principal.

No campo Novos participantes, insira o valor allUsers.

  1. No menu suspenso Papel, selecione o papel Invocador do Cloud Run.

  2. Clique em Salvar.

  3. Você precisa selecionar uma opção para tornar esse recurso público. Clique em Permitir acesso público para aplicar a alteração às configurações do IAM do serviço.

Para um novo serviço que você está criando, crie o serviço mas selecione Permitir invocações não autenticadas na guia Autenticação para disponibilizar o serviço publicamente. A opção Exigir autenticação vai tornar o serviço particular.

gcloud

Para tornar um serviço acessível publicamente, use o comando gcloud run services para adicionar o tipo de membro allUsers especial a um serviço e conceder a ele o papel roles/run.invoker:

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

Executar o comando gcloud run deploy para tornar seu serviço acessível publicamente ao implantá-lo:

gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated

YAML

Crie um arquivo chamado policy.yaml com o conteúdo a seguir:

bindings:
- members:
  - allUsers
  role: roles/run.invoker

Permitir invocações não autenticadas para o SERVICE existente usando:

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

Terraform

Para criar um serviço do Cloud Run, adicione o estas informações ao seu arquivo main.tf atual:

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

Para atualizar a vinculação do IAM do serviço para roles/run.invoker, adicione o seguinte recurso que faz referência ao serviço do 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"
  ]
}

Essa vinculação só é autoritativa para o papel especificado. Outras vinculações do IAM na política de IAM do serviço são preservadas.

Compartilhamento restrito de domínio

Se o projeto estiver sujeito à restrição de compartilhamento restrito de domínio em uma política da organização, não será possível criar serviços públicos por padrão. É possível usar tags e política condicional para isentar serviços específicos dessa restrição. Para mais detalhes, consulte a postagem do blog sobre como criar serviços públicos do Cloud Run quando o compartilhamento restrito de domínio for aplicado.