Como restringir a entrada no Cloud Run

Nesta página, descrevemos como usar as configurações de entrada para restringir o acesso à rede para seu serviço do Cloud Run. No nível de rede, por padrão, qualquer recurso na Internet pode acessar seu serviço do Cloud Run no URL run.app ou em um domínio personalizado configurado no Cloud Run. É possível alterar esse padrão especificando uma configuração diferente de entrada.

É possível usar esse recurso junto com os métodos de autenticação do IAM para gerenciar o acesso a um serviço.

Configurações de entrada disponíveis

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

Configuração Descrição
Tudo Torna seu serviço acessível pela Internet. A permissão de invocador do IAM ainda é aplicada.
Interno Somente solicitações originadas de uma rede VPC, Pub/Sub ou Eventarc dentro do mesmo projeto ou perímetro do VPC Service Controls têm permissão para acessar seu serviço. A permissão de invocador do IAM ainda é aplicada.

Para uma descrição do que é considerado interno ou capaz de acessar serviços internos, consulte Como acessar serviços internos.

Não há suporte para multilocação, ou seja, vários domínios de confiança dentro do mesmo projeto.
Interno e Cloud Load Balancing Só aceita solicitações internas e vindo do balanceamento de carga HTTP(S). A permissão do invocador do IAM ainda é aplicada.

Se você usar o Identity-Aware Proxy, o Google Cloud Armor ou o Cloud CDN, isso impede que qualquer um deles seja ignorado acessando o URL padrão.

Como acessar serviços internos

As seguintes considerações se aplicam:

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

  • Para solicitações de instâncias de VM do Compute Engine ou outros recursos em execução em uma rede VPC no mesmo projeto, nenhuma outra configuração é necessária.

  • Para solicitações de outros serviços do Cloud Run ou do Cloud Functions no mesmo projeto, conecte o serviço ou a função a uma rede VPC e encaminhe todas as saídas pelo conector, conforme descrito em Como se conectar a uma rede VPC. A permissão de invocador do IAM ainda é aplicada.

  • As solicitações de recursos dentro de redes VPC no mesmo projeto são classificadas como internas, mesmo que o recurso de origem tenha um endereço IP público.

  • Solicitações de recursos dentro de um perímetro VPC Service Controls com tráfego de uma rede VPC que pode chamar um serviço interno, se a API Cloud Run Admin estiver configurada como serviço restrito no perímetro de serviço.

  • Os recursos em redes VPC compartilhadas só podem chamar serviços internos se os recursos de VPC compartilhada e o serviço interno estiverem no mesmo perímetro do VPC SC e a API Cloud Run Admin estiver configurada como um serviço restrito no perímetro de serviço.

  • As solicitações de recursos locais conectados à rede VPC via Cloud VPN são consideradas internal.

  • Para solicitações do Pub/Sub e do Eventarc para um serviço interno, as considerações a seguir se aplicam:

    • Se estiver usando configurações de entrada em um serviço do Cloud Run chamado pelo Pub/Sub, será necessário usar o URL padrão app.run do Cloud Run para esse serviço, não qualquer domínio personalizado.
    • A assinatura do Pub/Sub precisa estar no mesmo projeto ou perímetro do VPC Service Controls que o serviço do Cloud Run.
  • Não há como chamar serviços internos de origens de tráfego que não se originam de uma rede VPC, exceto o Pub/Sub ou o Eventarc. Isso significa que o Cloud Scheduler, o Cloud Tasks e os fluxos de trabalho não podem chamar serviços internos.

Balanceamento de carga interno x na nuvem

Serviços com entrada definida como balanceamento de carga interno e na nuvem também podem ser acessados com balanceadores de carga configurados usando o Cloud Load Balancing. A configuração do balanceamento de carga interno e na nuvem é um superconjunto de balanceamento interno. Ou seja, qualquer coisa que possa acessar um serviço definido como interno também pode acessar um conjunto de serviços do balanceamento de carga interno e na nuvem.

Como configurar a entrada

É possível definir a entrada usando qualquer um dos métodos compatíveis nas guias abaixo:

Console

Se estiver implantando um novo serviço:

  1. Acesse o Cloud Run

  2. Clique em Criar serviço e configure a primeira etapa (Configurações do serviço), conforme preferir, e clique em Avançar.

  3. Configure a segunda etapa (Como configurar a primeira revisão do serviço) como quiser e clique em Avançar.

  4. Na terceira etapa, Configure como este serviço é acionado, no rótulo Entrada*, selecione o tráfego de entrada que você quer permitir:

    imagem

Se você estiver configurando um serviço atual:

  1. Clique no serviço.

  2. Clique na guia Gatilhos.

  3. No rótulo Entrada, selecione o tráfego de entrada que você quer permitir:

    imagem

  4. Clique em Save.

Linha de comando

  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 --platform managed --ingress INGRESS

    Replace

    • INGRESS por uma das configurações de entrada disponíveis
      • all
      • internal
      • internal-and-cloud-load-balancing
    • SERVICE pelo nome do serviço.
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest;
  2. Se você estiver alterando uma entrada de serviço atual:

    gcloud run services update SERVICE --platform managed --ingress INGRESS

    Replace

YAML

É possível fazer o download e ver a configuração do serviço atual usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

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

    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:
      annotations:
        run.googleapis.com/ingress: INGRESS

    Replace

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

    gcloud run services replace service.yaml

A seguir

É possível usar o acesso VPC sem servidor para conectar um serviço do Cloud Run diretamente à sua rede VPC usando as configurações de saída.

Também é possível usar o balanceamento de carga HTTP(S) com o Cloud Run