Permitir acesso público (não autenticado)

Existem duas formas de criar um serviço público do Cloud Run:

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

Funções necessárias

Para desativar ou reativar a verificação do IAM do invocador num serviço, tem de ter as seguintes autorizações:

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

Estas autorizações estão incluídas na função Administrador do Cloud Run (roles/run.admin). Consulte as funções de IAM do Cloud Run para ver a lista completa de funções e as respetivas autorizações associadas.

Desative a verificação de IAM do invocador do Cloud Run

A forma recomendada de tornar um serviço público é desativar a verificação IAM do invocador do Cloud Run. O Cloud Run aplica esta verificação por predefinição. Use esta solução quando o projeto estiver sujeito à restrição de partilha restrita a domínios numa política da organização.

Para desativar a verificação:

Consola

  1. Na Google Cloud consola, aceda à página do Cloud Run:

    Aceda ao Cloud Run

  2. Clique em Criar serviço se estiver a configurar um novo serviço e, em seguida, preencha a página de definições iniciais do serviço conforme necessário.

    Se estiver a configurar um serviço existente, clique no serviço e, de seguida, clique no separador Segurança.

  3. Selecione Permitir acesso público.

  4. Clique em Criar ou Guardar.

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 existente, use o comando gcloud run services update com o sinalizador --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 ver e transferir a 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 respetiva nova configuração através do seguinte comando:

    gcloud run services replace service.yaml

Verifique se a verificação está desativada após a implementação navegando para o ponto final HTTPS do serviço.

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

Para reativar a verificação:

Consola

  1. Na Google Cloud consola, aceda à página do Cloud Run:

    Aceda ao Cloud Run

  2. Clique no serviço e, de seguida, em Segurança.

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

  4. Clique em Guardar.

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 ver e transferir a 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 seu serviço do Cloud Run.

Verifique se a verificação é reativada após a implementação navegando para o ponto final HTTPS do serviço.

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

Se for administrador, pode restringir a capacidade de desativar a verificação de IAM do invocador através da restrição gerida constraints/run.managed.requireInvokerIam. Esta restrição não é aplicada por predefinição.

Atribua a função de invocador do IAM do Cloud Run ao allUsers tipo de membro

Pode permitir o acesso público a um serviço atribuindo a função do IAM Cloud Run Invoker ao tipo de membro allUsers.

Tem de ter a autorização run.services.setIamPolicy para configurar a autenticação num serviço do Cloud Run. Esta autorização está incluída na função de administrador do Cloud Run. Consulte as funções de IAM do Cloud Run para ver a lista completa de funções e as respetivas autorizações associadas.

Consola

Para um serviço do Cloud Run existente:

  1. Na Google Cloud consola, aceda à página do Cloud Run:

    Aceda à Google Cloud consola

  2. À esquerda do serviço que quer tornar público, clique na caixa de verificação. Não clique no próprio serviço.

  3. No painel de informações no canto superior direito, clique no separador Autorizações. Se o painel de informações não estiver visível, pode ter de clicar em Mostrar painel de informações e, de seguida, em Autorizações.

  4. Clique em Adicionar principal.

No campo Novos diretores, introduza o valor allUsers.

  1. No menu Selecionar uma função, selecione a função Cloud Run Invoker.

  2. Clique em Guardar.

  3. É-lhe pedido que valide se quer tornar este recurso público. Clique em Permitir acesso público para aplicar a alteração às definições do IAM do serviço.

Para um novo serviço que está a criar, crie o serviço e selecione Permitir acesso público na secção Autenticação para disponibilizar o serviço publicamente. Para tornar um serviço privado, 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 especial allUsers a um serviço e conceder-lhe a função roles/run.invoker:

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

Execute o comando gcloud run deploy para tornar o seu serviço acessível publicamente quando implementar o serviço:

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

YAML

Crie um ficheiro denominado policy.yaml com o seguinte conteúdo:

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

Permita o acesso público para o SERVICE existente através do seguinte:

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

Terraform

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

Adicione o seguinte a um recurso google_cloud_run_v2_service na sua 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 associação de IAM do serviço para roles/run.invoker, adicione a seguinte referência de recurso ao seu 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"
  ]
}

Esta associação só é autorizada para a função especificada. As outras associações do IAM na política IAM do serviço são preservadas.