ID da região
O REGION_ID
é um código abreviado que a Google atribui com base na região que seleciona quando cria a sua app. O código não corresponde a um país ou uma província, embora alguns IDs de regiões possam parecer semelhantes aos códigos de países e províncias usados frequentemente. Para apps criadas após
fevereiro de 2020, REGION_ID.r
está incluído nos
URLs do App Engine. Para apps existentes criadas antes desta data, o
ID da região é opcional no URL.
Saiba mais acerca dos IDs de regiões.
A segurança é uma funcionalidade essencial do Google Cloud, mas ainda existem passos que deve dar para proteger a sua app do App Engine e identificar vulnerabilidades.
Use as seguintes funcionalidades para garantir que a sua app do App Engine está segura. Para saber mais acerca do modelo de segurança da Google e dos passos disponíveis que pode seguir para proteger os seus Google Cloud projetos, consulte Segurança da Google Cloud Platform.
Pedidos HTTPS
Use pedidos HTTPS para aceder à sua app do App Engine de forma segura. Consoante a forma como a sua app está configurada, tem as seguintes opções:
appspot.com
domínios- Use o prefixo do URL
https
para enviar um pedido HTTPS para o serviço do seu projeto, por exemplo:default
Google Cloud
https://PROJECT_ID.REGION_ID.r.appspot.com
Para segmentar recursos específicos na sua app do App Engine, use a sintaxe
-dot-
para separar cada recurso que quer segmentar, por exemplo:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
Para converter um URL HTTP num URL HTTPS, substitua os pontos entre cada recurso por
-dot-
, por exemplo:
http://SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com
Para mais informações sobre URLs HTTPS e recursos de segmentação, consulte o artigo Como os pedidos são encaminhados.
- Use o prefixo do URL
- Domínios personalizados
Para enviar pedidos HTTPS com o seu domínio personalizado, pode usar os certificados SSL geridos aprovisionados pelo App Engine. Para mais informações, consulte o artigo Proteger domínios personalizados com SSL.
- Controladores de apps
Para forçar o HTTPS para os controladores da sua app, pode especificar o elemento
secure: always
para cada controlador no seuapp.yaml
, por exemplo:handlers: - url: /.* script: auto secure: always redirect_http_response_code: 301
A utilização de
secure: always
redireciona todo o tráfego HTTP para um URL HTTPS com o mesmo caminho. Consulte a referência de configuraçãoapp.yaml
para mais informações.
Controlo de acesso
Em cada Google Cloud projeto, configure o controlo de acesso para determinar quem pode aceder aos serviços no projeto, incluindo o App Engine. Pode atribuir funções diferentes a contas diferentes para garantir que cada conta tem apenas as autorizações necessárias para suportar a sua app. Para obter detalhes, consulte o artigo Configurar o controlo de acesso.
Firewall do App Engine
A firewall do App Engine permite-lhe controlar o acesso à sua app do App Engine através de um conjunto de regras que podem permitir ou recusar pedidos dos intervalos especificados de endereços IP. Não lhe é faturado o tráfego nem a largura de banda bloqueados pela firewall. Crie uma firewall para:
- Permitir apenas tráfego de uma rede específica
- Certifique-se de que apenas um determinado intervalo de endereços IP de redes específicas pode aceder à sua app. Por exemplo, crie regras para permitir apenas o intervalo de endereços IP da rede privada da sua empresa durante a fase de testes da app. Em seguida, pode criar e modificar as regras da firewall para controlar o âmbito do acesso ao longo do processo de lançamento, permitindo que apenas determinadas organizações, quer dentro da sua empresa ou externamente, acedam à sua app à medida que se torna disponível publicamente.
- Permita apenas tráfego de um serviço específico
- Certifique-se de que todo o tráfego para a sua app do App Engine é primeiro encaminhado através de proxy através de um serviço específico. Por exemplo, se usar um firewall de app Web (WAF) de terceiros para encaminhar pedidos dirigidos à sua app, pode criar regras de firewall para recusar todos os pedidos, exceto os que são encaminhados a partir do seu WAF.
- Bloqueie endereços IP abusivos
- Embora Google Cloud tenha muitos mecanismos implementados para evitar ataques, pode usar a firewall do App Engine para bloquear o tráfego para a sua app a partir de endereços IP que apresentem intenções maliciosas ou proteger a sua app contra ataques de negação de serviço e formas semelhantes de abuso. Pode adicionar endereços IP ou sub-redes a uma lista de exclusão, para que os pedidos encaminhados a partir desses endereços e sub-redes sejam recusados antes de chegarem à sua app do App Engine.
Para ver detalhes sobre a criação de regras e a configuração da firewall, consulte o artigo Controlar o acesso a apps com firewalls.
Controlos de entrada
Esta secção descreve como usar as definições de entrada para restringir o acesso à rede à sua app do App Engine. Ao nível da rede, por predefinição, qualquer recurso na Internet pode aceder à sua app do App Engine no respetivo URL appspot ou num domínio personalizado configurado no App Engine. Por exemplo, o URL appspot.com
pode ter o seguinte formato:
SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
.
Pode alterar esta definição predefinida especificando uma definição diferente para a entrada. Todos os caminhos de entrada, incluindo o URL appspot.com
predefinido, estão sujeitos à sua definição de entrada. A entrada é definida ao nível do serviço.
Definições de entrada disponíveis
Estão disponíveis as seguintes definições:
Definição | Descrição |
---|---|
Internos |
Mais restritiva. Permite pedidos de recursos anexados às redes VPC do projeto, como:
appspot.com .
Os pedidos de outras origens, incluindo a Internet, não podem aceder ao seu serviço no URL appspot.com ou nos domínios personalizados. Não
existe suporte para multi-tenancy, ou seja, vários domínios de confiança
no mesmo projeto.
|
Interno e Cloud Load Balancing | Permite pedidos dos seguintes recursos:
appspot.com ignoram o Application Load Balancer externo, pelo que esta definição impede que os pedidos externos alcancem o URL appspot.com .
|
Tudo |
Menos restritivas. Permite todos os pedidos, incluindo pedidos diretamente da Internet para o URL appspot.com .
|
Aceder a serviços internos
Aplicam-se as seguintes considerações:
Para pedidos de uma VPC partilhada, o tráfego só é considerado interno se a app do App Engine for implementada no projeto anfitrião da VPC partilhada. Se a app do App Engine for implementada num projeto de serviço de VPC partilhada, apenas o tráfego de redes pertencentes ao próprio projeto da app é interno. Todo o outro tráfego, incluindo o tráfego de outras VPCs partilhadas, é externo.
Quando acede a serviços internos, chame-os como faria normalmente através dos respetivos URLs públicos, quer seja o URL
appspot.com
predefinido ou um domínio personalizado configurado no App Engine.Para pedidos de instâncias de VMs do Compute Engine ou outros recursos em execução numa rede VPC no mesmo projeto, não é necessária nenhuma configuração adicional.
Para pedidos de outros serviços do App Engine ou de funções do Cloud Run ou do Cloud Run no mesmo projeto, ligue o serviço ou a função a uma rede da VPC e encaminhe toda a saída através do conetor, conforme descrito no artigo Ligar a uma rede da VPC partilhada.
Os pedidos de recursos em redes VPC no mesmo projeto são classificados como internos, mesmo que o recurso de origem tenha um endereço IP público.
Os pedidos de recursos no local ligados à rede VPC através da VPN do Google Cloud são considerados
internal
.
Veja as definições de carregamento
Consola
Aceda à página App Engine Services.
Localize a coluna Ingress. Para cada serviço, o valor nesta coluna mostra a definição de entrada como Tudo (predefinição), Interno + Equilíbrio de carga ou Interno.
gcloud
Para ver a definição de entrada de um serviço através da CLI gcloud:
gcloud app services describe SERVICE
Substitua SERVICE pelo nome do seu serviço.
Por exemplo, para ver as definições de entrada e outras informações para a execução do serviço predefinido:
gcloud app services describe default
Edite as definições de entrada
Consola
Aceda à página App Engine Services.
Selecione o serviço que quer editar.
Clique em Editar definição de entrada.
Selecione a definição de entrada pretendida no menu e clique em Guardar.
gcloud
Para atualizar a definição de entrada para um serviço através da CLI gcloud:
gcloud app services update SERVICE --ingress=INGRESS
Substituição:
- SERVICE: o nome do seu serviço.
- INGRESS: o controlo de entrada que quer aplicar. Uma das seguintes opções:
all
,internal-only
ouinternal-and-cloud-load-balancing
.
Por exemplo:
Para atualizar o serviço predefinido de uma app do App Engine para aceitar tráfego apenas do Cloud Load Balancing e das redes VPC que estão no mesmo projeto:
gcloud app services update default --ingress=internal-and-cloud-load-balancing
Para atualizar um serviço denominado "internal-requests" para aceitar tráfego apenas de redes VPC que estejam no mesmo projeto:
gcloud app services update internal-requests --ingress=internal-only
Definições de saída
Se usar o Acesso a VPC sem servidor, pode especificar a definição de saída para o seu serviço do App Engine.
Por predefinição, apenas os pedidos a endereços IP internos e nomes DNS internos são encaminhados através de um conetor de acesso a VPC sem servidor. Pode especificar a definição de saída para o seu serviço no ficheiro app.yaml
.
As definições de saída não são compatíveis com o serviço URL Fetch. Se ainda não o fez, desative a predefinição de obtenção de URL usando sockets e interrompa qualquer utilização explícita do pacote urlfetch
.
A utilização da biblioteca urlfetch
ignora as definições de saída e os pedidos não são encaminhados através de um conetor do Acesso a VPC sem servidor.
Para configurar o comportamento de saída do seu serviço do App Engine:
Adicione o atributo
egress_setting
ao campovpc_access_connector
do ficheiroapp.yaml
do serviço:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
Substituição:
PROJECT_ID
com o seu Google Cloud ID do projetoREGION
com a região em que o conector se encontraCONNECTOR_NAME
com o nome do conetorEGRESS_SETTING
com uma das seguintes opções:private-ranges-only
Predefinição. Apenas os pedidos aos intervalos de endereços IP RFC 1918 e RFC 6598 ou aos nomes DNS internos são encaminhados para a sua rede VPC. Todos os outros pedidos são encaminhados diretamente para a Internet.all-traffic
Todos os pedidos de saída do seu serviço são encaminhados para a sua rede VPC. Os pedidos ficam sujeitos às regras de firewall, DNS e encaminhamento da sua rede VPC. Tenha em atenção que o encaminhamento de todos os pedidos de saída para a sua rede VPC aumenta a quantidade de saída processada pelo conetor do Acesso a VPC sem servidor e pode incorrer em custos.
Implemente o serviço:
gcloud app deploy
Análise de segurança
O Google Cloud Web Security Scanner descobre vulnerabilidades ao rastrear a sua app do App Engine, seguindo todos os links no âmbito dos seus URLs de início e tentando exercer o maior número possível de entradas do utilizador e processadores de eventos.
Para usar o verificador de segurança, tem de ser proprietário do Google Cloud projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Configurar o controlo de acesso.
Pode executar análises de segurança a partir da Google Cloud consola para identificar vulnerabilidades de segurança na sua app do App Engine. Para obter detalhes sobre a execução do Security Scanner, consulte o artigo Usar o Web Security Scanner.