Acione o Google Cloud Functions do Google Cloud Scheduler com segurança de rede privada

Acione o Google Cloud Functions do Google Cloud Scheduler com segurança de rede privada

O Google Cloud Scheduler pode ser usado para atingir o endpoint http associado a uma função do Google Cloud, para que você possa executar sua função a partir de um timer/agendador. O Cloud Functions tem duas opções para sua exposição: (1) Permitir todo o tráfego ou (2) Permitir apenas tráfego interno (somente tráfego de dentro do mesmo projeto ou perímetro VPC SC é permitido). Eu gostaria de fazer o último, mas o agendador não consegue acessá-lo com HTTP 403.

Por estar aberto a todo o tráfego, basta alguém adivinhar meu URL e pode acioná-lo quantas vezes quiser. Agora, é claro, posso colocar autenticação em minha função e fazer com que o Agendador passe um cabeçalho apropriado, mas minha função não é perigosa para ser acionada por outra pessoa. No entanto, se outra pessoa puder acioná-lo, poderá chamá-lo quantas vezes quiser e, mesmo com autenticação, ainda haverá cobrança por todas essas invocações. Quero garantir que ninguém além do Agendador (idealmente) possa acessar o URL, para que ele não seja acionado, exceto na minha programação. Existe alguma maneira de tornar isso possível?

Responder1

De acordo com a documentação oficial:

Para usar o Cloud Scheduler, seu projeto do Cloud deve conter um aplicativo do App Engine localizado em uma das regiões compatíveis. Se seu projeto não tiver um aplicativo do App Engine, você deverá criar um.

Visão geral do Cloud Scheduler

Portanto, encontre a localização do seu aplicativo do App Engine executando:

gcloud app describe
#check for the locationId: europe-west2

Em seguida, certifique-se de implementar sua função de nuvem com configurações do Ingress para "Permitir apenas tráfego interno" no mesmo local do aplicativo do mecanismo de aplicativo.

Implantei uma função de nuvem na mesma região do meu aplicativo de mecanismo de aplicativo e tudo funcionou conforme o esperado.

informação relacionada