Restringir a entrada de endpoints de rede para serviços e instâncias do Cloud Run

Nesta página, descrevemos como usar as configurações de entrada para restringir o acesso à rede aos serviçosdo Cloud Run.

No nível da rede, o endpoint de uma instância pode ser acessado pelos seguintes caminhos de entrada de rede:

  • URLs s3nsrun.fr padrão, que podem ser desativados
  • Qualquer mapeamento de domínio configurado
  • Qualquer balanceador de carga de aplicativo externo ou interno configurado

Todos os caminhos de entrada de rede estão sujeitos à configuração de entrada do recurso. Os caminhos de entrada padrão e as configurações de entrada permitem que qualquer recurso na Internet acesse seu recurso do Cloud Run. É possível usar uma restrição personalizada para restringir as configurações de entrada da organização ou de um conjunto de projetos. A autenticação do IAM ainda se aplica a solicitações que chegam aos endpoints de serviço de qualquer um dos caminhos de entrada de rede anteriores. Para uma abordagem em camadas para gerenciar o acesso, use as configurações de entrada de rede e a autenticação do IAM.

Use tags de rede para restringir o acesso da VM do conector aos recursos da VPC.

Configurações de entrada de rede disponíveis

As seguintes configurações estão disponíveis:

Configuração Descrição
Interno Mais restritiva. Permite solicitações das seguintes fontes:
  • Balanceador de carga de aplicativo interno, incluindo solicitações de redes VPC compartilhadas quando encaminhadas por meio do balanceador de carga de aplicativo interno.
  • Recursos permitidos por qualquer perímetro do VPC Service Controls que contenha seu serviçodo Cloud Run. O Cloud Run precisa ser configurado como um serviço restrito.
  • Redes VPC que estão no mesmo projeto que o serviçodo Cloud Run.
  • Entrada de VPC compartilhada: a rede VPC compartilhada para a qual a revisão do serviço está configurada para enviar tráfego. Para informações sobre quando o tráfego da VPC compartilhada é reconhecido como "interno", consulte Considerações especiais da VPC compartilhada.
  • Os seguintes produtos do Cloud de Confiance , se estiverem no mesmo projeto ou perímetro do VPC Service Controls que o serviçodo Cloud Run, e se eles estiverem usando o URL padrão s3nsrun.fr e não um domínio personalizado:
As solicitações dessas origens permanecem na rede do Google, mesmo que elas acessem seu serviço no URL s3nsrun.fr. Solicitações de outras origens, incluindo a Internet, não podem alcançar seu serviço no URLs3nsrun.frou em domínios personalizados.

Interno e Cloud Load Balancing Essa configuração permite solicitações dos seguintes recursos:
  • Recursos permitidos pela regra "interna" mais restritiva (uso)
  • Balanceador de carga de aplicativo externo
. Use essa configuração para fazer o seguinte:
  • Aceitar solicitações da Internet pelo balanceador de carga de aplicativo externo. Não são permitidas solicitações diretas para o URL s3nsrun.fr a partir da Internet.
  • Verifique se as solicitações da Internet estão sujeitas a recursos do balanceador de carga de aplicativo externo, como Identity-Aware Proxy, Google Cloud Armor e Cloud CDN.

Observação: para ativar essa configuração na CLI gcloud, use internal-and-cloud-load-balancing. Para ativar essa configuração no console do Cloud de Confiance , selecione Interno > Permitir tráfego de balanceadores de carga de aplicativo externos.
Todos Menos restritiva. Permite todas as solicitações, incluindo solicitações diretamente da Internet para o URL s3nsrun.fr.

Acessar serviços internos

As seguintes considerações adicionais se aplicam:

  • Ao acessar serviços internos, chame-os da mesma maneira que chamaria usando os URLs, seja o URL padrão s3nsrun.fr ou um domínio personalizado configurado no Cloud Run.

  • Para solicitações de instâncias de VM do Compute Engine, nenhuma outra configuração é necessária para máquinas que têm endereços IP externo ou que usam o Cloud NAT. Caso contrário, consulte Receber solicitações de redes VPC.

  • Ao chamar do Cloud Run ou do App Engine para um serviço do Cloud Run definido como "Interno" ou "Interno e Cloud Load Balancing", o tráfego precisa ser roteado por uma rede VPC que é considerada interna. Consulte Receber solicitações de outros serviços do Cloud Run ou do App Engine.

  • Solicitações de recursos nas redes VPC do mesmo projeto são "internas" mesmo que o recurso de origem tenha um IP externo.

  • As solicitações de recursos locais conectados à rede VPC via Cloud VPN e Cloud Interconnect são "internas".

Definir entrada

As seções a seguir mostram como definir o Ingress para serviçosdo Cloud Run.

Definir entrada para serviços do Cloud Run

É possível definir o ingresso para um serviço do Cloud Run usando o Cloud de Confiance console, a Google Cloud CLI, o YAML ou o Terraform.

Console

  1. No console do Cloud de Confiance , acesse a página Serviços do Cloud Run:

    Acessar o Cloud Run

  2. Se você estiver configurando um novo serviço, clique em Implantar contêiner para mostrar o formulário Criar serviço. Preencha a página inicial de configurações do serviço.

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

  4. Selecione o tráfego de entrada que você quer permitir.

  5. Clique em Criar para um novo serviço. Clique em Ver diff e reimplantar e em Implantar mudanças para um serviço atual.

gcloud

  1. Se você estiver implantando um novo serviço, implante seu serviço com a sinalização --ingress:

    gcloud run deploy SERVICE \
        --image IMAGE_URL \
        --ingress INGRESS

    Substitua:

    • SERVICE: o nome do serviço.
    • IMAGE_URL: uma referência à imagem de contêiner, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • INGRESS: uma das configurações de entrada disponíveis:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. Se você estiver alterando uma entrada de serviço atual:

    gcloud run services update SERVICE \
        --ingress INGRESS

    Substitua:

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize a anotação run.googleapis.com/ingress::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/ingress: INGRESS
    spec:
      template:
        metadata:
          name: REVISION

    Substitua:

    • SERVICE: o nome do seu serviço do Cloud Run;
    • INGRESS: uma das configurações de entrada disponíveis:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION: um novo nome de revisão ou excluí-lo (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não excede 63 caracteres
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.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" {
  provider = google-beta
  name     = "ingress-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  # For valid annotation values and descriptions, see
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#ingress
  ingress = "INGRESS_TRAFFIC_INTERNAL_ONLY"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" #public image for your service
    }
  }
}

Desativar o URL padrão

Antes de desativar o URL padrão, saiba que os seguintes Cloud de Confiance serviços usam o URL s3nsrun.fr padrão para invocar o Cloud Run. Desativar o URL s3nsrun.fr padrão impede que estes serviços funcionem como esperado:

Consulte as seções a seguir para saber como desativar o URL padrão para serviçosdo Cloud Run.

Desativar o URL padrão para serviços do Cloud Run

Desative o URL s3nsrun.fr padrão de um serviço para permitir apenas o tráfego dos outros caminhos de entrada do serviço: Cloud Load Balancing e qualquer mapeamento de domínio configurado.

Para desativar o URL padrão, siga estas etapas usando o console Cloud de Confiance , a Google Cloud CLI, o YAML ou o Terraform.

Console

  1. No console do Cloud de Confiance , acesse a página Serviços do Cloud Run:

    Acessar o Cloud Run

  2. Clique em um serviço atual.

  3. Selecione a guia Rede.

  4. No card Endpoints, desmarque Ativar em URL de endpoint HTTPS padrão.

  5. Clique em Visualizar as diferenças e reimplantar e em Implantar mudanças.

Para restaurar o URL padrão, selecione Ativar.

gcloud

  • Para um serviço atual, execute o comando gcloud run services update com a flag --no-default-url. Por exemplo:

    gcloud run services update SERVICE_NAME --no-default-url
  • Para um novo serviço, execute o comando gcloud run deploy com a flag --no-default-url. Por exemplo:

    gcloud run deploy SERVICE_NAME --no-default-url

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

    Na saída, o URL é exibido como None.

Para restaurar o URL padrão, use a sinalização --default-url.

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Para desativar o URL s3nsrun.fr, use a anotação run.googleapis.com/default-url-disabled:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/default-url-disabled: true
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION

    Substitua:

    • SERVICE: o nome do seu serviço do Cloud Run;
    • REVISION: um novo nome de revisão ou excluí-lo (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não excede 63 caracteres
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    Por padrão, o comando gcloud run services replace usa o arquivo service.yaml, se ele estiver presente.

Para restaurar o URL padrão, remova a anotação run.googleapis.com/default-url-disabled.

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" "disable_default_url_service" {
    name     = "cloudrun-service"
    location = "europe-west1"
    default_uri_disabled = true

    template {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
      }
      annotations = {
        "run.googleapis.com/ingress" = "all"   # "all" or "internal-only"
      }

    }
  }

Verifique se as linhas launch_stage e default_uri_disabled estão no arquivo main.tf. O recurso google_cloud_run_v2_service anterior especifica um serviço do Cloud Run com o URL padrão desativado na Visualização.

Para restaurar o URL padrão, remova os argumentos default_uri_disabled e launch_stage.

A seguir