ID da região
O REGION_ID
é um código abreviado que o Google atribui
com base na região que você selecionou ao criar o aplicativo. O código não
corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes
aos códigos de país e estado geralmente usados. Para apps criados após
fevereiro de 2020, o REGION_ID.r
está incluído nos
URLs do App Engine. Para apps existentes criados antes dessa data, o
ID da região é opcional no URL.
Saiba mais sobre IDs de região.
A segurança é um recurso fundamental do Google Cloud, mas ainda há etapas que você precisa seguir para proteger seu aplicativo do App Engine e identificar vulnerabilidades.
Use os recursos a seguir para garantir a segurança do seu aplicativo do App Engine. Para saber mais sobre o modelo de segurança do Google e as medidas disponíveis para proteger os projetos do Google Cloud, consulte Segurança do Google Cloud Platform.
Solicitações HTTPS
Use solicitações HTTPS para acessar o aplicativo do App Engine com segurança. Dependendo de como o aplicativo está configurado, você tem as seguintes opções:
- Domínios
appspot.com
- Use o prefixo de URL
https
para enviar uma solicitação HTTPS ao serviçodefault
do projeto do Google Cloud. Por exemplo:
https://PROJECT_ID.REGION_ID.r.appspot.com
Para segmentar recursos específicos no aplicativo do App Engine, use a sintaxe
-dot-
para separar cada recurso que você quer segmentar. Por exemplo:
https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com
Para converter um URL HTTP em um 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 saber mais informações sobre URLs HTTPS e como selecionar recursos, consulte Como as solicitações são encaminhadas.
- Use o prefixo de URL
- Domínios personalizados
Para enviar solicitações HTTPS com um domínio personalizado, use os certificados SSL gerenciados provisionados pelo App Engine. Para mais informações, consulte Como proteger domínios personalizados com SSL.
- Gerenciadores de aplicativos
Para forçar HTTPS para os gerenciadores do seu app, especifique o elemento
secure: always
para cada gerenciador noapp.yaml
. Por exemplo:handlers: - url: /.* script: auto secure: always redirect_http_response_code: 301
O uso de
secure: always
redireciona todo o tráfego HTTP para um URL de HTTPS com o mesmo caminho. Veja mais informações na referência de configuraçãoapp.yaml
.
Controle de acesso
Em cada projeto do Google Cloud, configure o controle de acesso para determinar quem pode acessar os serviços no projeto, incluindo o App Engine. É possível atribuir papéis diferentes a contas diferentes, para garantir a atribuição apenas das permissões necessárias a cada conta e o respectivo suporte ao seu aplicativo. Para saber detalhes, consulte Como configurar o controle de acesso .
Firewall do App Engine
Com o firewall do App Engine, é possível controlar o acesso ao aplicativo do App Engine por meio de um grupo de regras que podem permitir ou negar solicitações feitas por endereços IP dentro de intervalos especificados. Você não será cobrado pelo tráfego ou pela largura de banda bloqueada pelo firewall. Crie um firewall para:
- Permitir somente o tráfego de dentro de uma rede específica
- Garanta que apenas endereços IP de um determinado intervalo de redes específicas possam acessar o aplicativo. Por exemplo, crie regras para autorizar o acesso apenas dos endereços IP dentro do intervalo pertencente à rede particular da sua empresa durante a fase de testes do aplicativo. Em seguida, é possível criar e modificar as regras do firewall para controlar o escopo do acesso ao longo do processo de lançamento, permitindo que apenas determinadas organizações, internas ou externas à empresa, acessem o aplicativo até que ele esteja disponível para o público em geral.
- Permitir somente o tráfego de um serviço específico
- Garanta que todo o tráfego encaminhado ao aplicativo do App Engine seja primeiramente intermediado por proxy por meio de um serviço específico. Por exemplo, se você usar um firewall de aplicativos da Web (WAF, na sigla em inglês) de terceiros para intermediar por proxy as solicitações direcionadas ao aplicativo, será possível criar regras de firewall para negar todas as solicitações, exceto aquelas encaminhadas a partir do WAF.
- Bloquear endereços IP abusivos
- Embora o Google Cloud tenha muitos mecanismos para evitar ataques, você pode usar o firewall do App Engine para bloquear o tráfego de endereços IP que apresentem intenções maliciosas ou proteger o aplicativo contra ataques de negação de serviço e formas semelhantes de abuso. É possível adicionar endereços IP ou sub-redes a uma lista de bloqueio para que as solicitações encaminhadas desses pontos sejam negadas antes de chegarem ao aplicativo do App Engine.
Para saber mais sobre como criar regras e configurar o firewall, consulte Como controlar o acesso com firewalls.
Controles de entrada
Nesta seção, descrevemos como usar as configurações de entrada para restringir o acesso à rede ao seu aplicativo do App Engine. Por nível de rede, por padrão, qualquer recurso na
Internet pode alcançar seu aplicativo do App Engine no
URL DO appspot
ou emdomínio personalizado
configurados no App Engine. Por exemplo, o URL appspot.com
pode ter o
seguinte formato:
SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
.
É possível alterar
esse padrão especificando uma configuração diferente de entrada. Todos os caminhos de entrada,
incluindo o URL appspot.com
padrão, estão sujeitos à configuração de entrada. O recurso de entrada é definido no nível do serviço.
Configurações de entrada disponíveis
As seguintes configurações estão disponíveis:
Configuração | Descrição |
---|---|
Interno |
Mais restritiva. Permite solicitações de recursos anexados às
redes VPC do projeto, como:
appspot.com .
Solicitações
de outras origens, incluindo a Internet, não podem alcançar seu serviço no
URL appspot.com ou em domínios personalizados. 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 | Permite solicitações dos seguintes recursos:
appspot.com ignoram o balanceador de carga de aplicativo externo. Portanto, essa configuração impede que solicitações externas cheguem ao URL appspot.com .
|
Todas |
Menos restritiva. Permite todas as solicitações, incluindo solicitações diretamente da
Internet para o URL appspot.com .
|
Como acessar serviços internos
As seguintes considerações se aplicam:
Nas solicitações de uma VPC compartilhada, o tráfego só será considerado interno se o app do App Engine for implantado no projeto host da VPC compartilhada. Se o aplicativo do App Engine for implantado em um projeto de serviço de VPC compartilhada, somente o tráfego de redes de propriedade do próprio projeto do aplicativo será interno. Todo o restante, inclusive o de outras VPCs compartilhadas, é externo.
Ao acessar os serviços internos, chame-os da mesma forma que faria usando os URLs públicos deles: o URL
appspot.com
padrão ou um domínio personalizado configurado no App Engine.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 App Engine ou do Cloud Run ou das funções do Cloud Run 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 Conectar-se a uma rede VPC compartilhada
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.
As solicitações de recursos locais conectados à rede VPC via Cloud VPN são consideradas
internal
.
Ver configurações de entrada
Console
Acesse a página "Serviços" do App Engine.
Localize a coluna Entrada. Para cada serviço, o valor nessa coluna mostra a configuração de entrada como Todos (padrão), Interno + Balanceamento de carga ou Interno.
gcloud
Para ver a configuração de entrada de um serviço usando a CLI gcloud:
gcloud app services describe SERVICE
SERVICE pelo nome do serviço;
Por exemplo, para visualizar as configurações de entrada e outras informações da execução do serviço padrão:
gcloud app services describe default
Editar configurações de entrada
Console
Acesse a página "Serviços" do App Engine.
Selecione o serviço que você quer editar.
Clique em Editar configuração de entrada.
Selecione a configuração de entrada que você quer no menu e clique em Salvar.
gcloud
Para atualizar a configuração de entrada de um serviço usando a CLI gcloud:
gcloud app services update SERVICE --ingress=INGRESS
Substitua:
- SERVICE: o nome do serviço;
- INGRESS: o controle de entrada que você quer aplicar. Um de
all
,internal-only
ouinternal-and-cloud-load-balancing
.
Exemplo:
Para atualizar o serviço padrão de um aplicativo do App Engine para aceitar tráfego somente do Cloud Load Balancing e das redes VPC no mesmo projeto:
gcloud app services update default --ingress=internal-and-cloud-load-balancing
Para atualizar um serviço chamado "internal-requests" para aceitar o tráfego somente de redes VPC no mesmo projeto:
gcloud app services update internal-requests --ingress=internal-only
Configuração de saída
Se você usar o acesso VPC sem servidor, poderá especificar a configuração de saída do serviço do App Engine.
Por padrão, somente solicitações para endereços IP internos e nomes DNS internos são roteadas por meio de um conector de acesso VPC sem servidor. É possível
especificar a configuração de saída para o serviço no arquivo app.yaml
.
As configurações de saída não são compatíveis com o serviço de busca de URL. Se você ainda não
tiver feito isso, desative o padrão de busca de URL
usando soquetes e interrompa qualquer
uso explícito do
pacote urlfetch
.
O uso da biblioteca urlfetch
ignora as configurações de saída, e as solicitações não serão
roteadas por um conector de acesso VPC sem servidor.
Para configurar o comportamento de saída do serviço do App Engine:
Adicione o atributo
egress_setting
ao campovpc_access_connector
do arquivoapp.yaml
do serviço:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
Substitua:
PROJECT_ID
pelo ID do projeto do Google CloudREGION
pela região em que o conector está;CONNECTOR_NAME
pelo nome do conector;EGRESS_SETTING
por um destes procedimentos:private-ranges-only
Padrão. Somente solicitações para intervalos de endereços IP RFC 1918 e RFC 6598 ou nomes de DNS internos são roteadas para a rede VPC. Todas as outras solicitações são roteadas diretamente para a Internet.all-traffic
Todas as solicitações de saída do serviço são encaminhadas para a rede VPC. As solicitações estão sujeitas às regras de firewall, DNS e roteamento da rede VPC. O roteamento de todas as solicitações de saída para a rede VPC aumenta a quantidade de saída processada pelo conector de acesso VPC sem servidor e pode gerar cobranças.
Implante o serviço:
gcloud app deploy
Security Scanner
O Web Security Scanner do Google Cloud descobre vulnerabilidades ao rastrear o aplicativo do App Engine, seguir todos os links dentro do escopo dos URLs iniciais e tentar acionar o máximo possível de usuários. entradas e manipuladores de eventos.
Para usar o verificador de segurança, você precisa ser proprietário do projeto do Google Cloud. Saiba mais sobre como atribuir papéis em Como configurar o controle de acesso.
É possível executar verificações de segurança no console do Google Cloud para identificar vulnerabilidades de segurança no seu aplicativo do App Engine. Veja detalhes sobre a execução do Security Scanner no Como usar o Web Security Scanner.