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

Há duas maneiras de criar um serviço público do Cloud Run:

  • Desative a verificação do IAM do invocador do Cloud Run (recomendado).
  • Atribua o papel do IAM de invocador do Cloud Run ao tipo de membro allUsers.

Funções exigidas

Para desativar ou reativar a verificação do IAM do invocador em um serviço, você precisa ter as seguintes permissões:

  • run.services.create
  • run.services.update
  • run.services.setIamPolicy

Essas permissões estão incluídas no papel Administrador do Cloud Run (roles/run.admin). Confira a lista completa de papéis e permissões associadas em Papéis do IAM do Cloud Run.

Desativar a verificação do IAM do invocador do Cloud Run

A maneira recomendada de criar um serviço público é desativar a verificação do IAM do invocador do Cloud Run. O Cloud Run aplica essa verificação por padrão. Use essa solução quando o projeto estiver sujeito à restrição de compartilhamento restrito de domínio em uma política da organização.

Para desativar a verificação:

Console

  1. No console Google Cloud , acesse a página do Cloud Run:

    Acessar o Cloud Run

  2. Clique em Criar serviço se estiver configurando um novo serviço e preencha a página inicial de configurações de serviço conforme necessário.

    Se você estiver configurando um serviço atual, clique nele e na guia Segurança.

  3. Selecione Permitir acesso público.

  4. Clique em Criar ou Salvar.

gcloud

  • Para um novo serviço, use o comando gcloud run deploy com a flag --no-invoker-iam-check:

    gcloud run deploy SERVICE_NAME --no-invoker-iam-check

    Substitua SERVICE_NAME pelo nome do serviço.

  • Para um serviço atual, use o comando gcloud run services update com a flag --no-invoker-iam-check:

    gcloud run services update SERVICE_NAME --no-invoker-iam-check

Substitua SERVICE_NAME pelo nome do serviço.

YAML

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize a anotação 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

    Substitua SERVICE_NAME pelo nome do seu serviço do Cloud Run.

  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Verifique se a verificação está desativada após a implantação, navegando até o endpoint HTTPS do serviço.

Ative novamente a verificação do IAM do invocador do Cloud Run.

Para reativar a verificação:

Console

  1. No console Google Cloud , acesse a página do Cloud Run:

    Acessar o Cloud Run

  2. Clique no serviço e em Segurança.

  3. Selecione Exigir autenticação e Identity and Access Management (IAM).

  4. Clique em Salvar.

gcloud

  • Atualize o serviço transmitindo a flag --invoker-iam-check:

    gcloud run services update SERVICE_NAME --invoker-iam-check

    Substitua SERVICE_NAME pelo nome do serviço.

YAML

  1. Para visualizar e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize a anotação 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

    Substitua SERVICE_NAME pelo nome do serviço do Cloud Run.

Confira se a verificação foi reativada após a implantação acessando o endpoint HTTPS do serviço.

Configurar a política da organização para a verificação do IAM do invocador do Cloud Run

Se você for administrador, poderá restringir a capacidade de desativar a verificação do IAM do invocador usando a restrição gerenciada constraints/run.managed.requireInvokerIam. Essa restrição não é aplicada por padrão.

Atribua o papel de invocador do Cloud Run IAM ao tipo de membro allUsers

É possível permitir o acesso público 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 no papel de administrador do Cloud Run. Confira a lista completa de papéis e permissões associadas em Papéis do IAM do Cloud Run.

Console

Para um serviço do Cloud Run existente:

  1. No console Google Cloud , acesse a página do Cloud Run:

    Acessar o console do Google Cloud

  2. À esquerda do serviço que você quer tornar público, clique na caixa de seleção. 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 em Permissões.

  4. Clique em Adicionar principal.

No campo Novos participantes, insira o valor allUsers.

  1. No menu Selecionar um papel, escolha o papel Chamador 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 mudança às configurações do IAM do serviço.

Para um novo serviço que você está criando, crie o serviço e selecione Permitir acesso público na seção Autenticação para disponibilizar o serviço publicamente. Para tornar um serviço particular, selecione Exigir autenticação.

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 acesso público para o SERVICE existente usando:

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

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_service na configuração do 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"
    }
  }
}

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.