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.

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 Chamador do Cloud Run ao tipo de membro allUsers.

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

A maneira recomendada de tornar um serviço público é desativar a verificação do IAM do Invocador do Cloud Run. A verificação é aplicada por padrão. Essa é a solução ideal se o projeto estiver sujeito à restrição de compartilhamento restrito de domínio em uma política da organização.

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 nos papéis Proprietário e Administrador do Cloud Run. Consulte [Papéis do IAM do Cloud Run][1] para conferir a lista completa de papéis e as permissões associadas.

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

Para desativar a verificação:

Console

  1. 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 em Segurança.

  3. Desmarque a opção Usar o IAM para autenticar as solicitações recebidas.

  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

    em que SERVICE_NAME é o nome do serviço.

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

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

    em que SERVICE_NAME é o 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

    em que SERVICE_NAME é o nome do 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. Acessar o Cloud Run

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

  3. Selecione Usar o IAM para autenticar as solicitações recebidas.

  4. Clique em Salvar.

gcloud

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

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

    em que SERVICE_NAME é o 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

    em que SERVICE_NAME é o 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 IAM do Cloud Run ao tipo de membro allUsers

É 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 :

    Acesse o Google Cloud console

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