Codelab do Secure Web Proxy (SWP) do Cloud

1. Introdução

Proxy da Web seguro do Cloud

O Cloud SWP é um serviço que prioriza a nuvem e fornece um proxy da Web seguro para ajudar a proteger o tráfego da Web de saída (HTTP/S). Configure seus clientes para usar explicitamente o Cloud SWP como proxy. As solicitações da Web podem ser originadas das seguintes fontes:

  • Instâncias de máquina virtual (VM)
  • Contêineres
  • Ambiente sem servidor que usa um conector sem servidor
  • Cargas de trabalho em peering de VPC
  • Cargas de trabalho fora do Google Cloud conectadas pelo Cloud VPN ou pelo Cloud Interconnect

O Cloud SWP permite políticas flexíveis e granulares com base em identidades com priorização da nuvem e aplicativos da Web.

Vantagens

Confira abaixo alguns exemplos de benefícios que o SWP do Cloud oferece a uma organização:

Migração para o Google Cloud

O Cloud SWP ajuda você a migrar para o Google Cloud, mantendo suas políticas e requisitos de segurança atuais para o tráfego de saída da Web. Você pode evitar o uso de soluções de terceiros que exijam outro console de gerenciamento ou a edição manual dos arquivos de configuração.

Acesso a serviços da Web externos confiáveis

O Cloud SWP permite aplicar políticas de acesso granulares ao tráfego de saída da Web para proteger sua rede. Você cria e identifica identidades de cargas de trabalho ou aplicativos e aplica políticas.

Acesso monitorado a serviços da Web não confiáveis

É possível usar o Cloud SWP para fornecer acesso monitorado a serviços da Web não confiáveis. O Cloud SWP identifica o tráfego que não está em conformidade com a política e o registra no Cloud Logging (Logging). É possível monitorar o uso da Internet, descobrir ameaças à sua rede e responder a ameaças.

Controles de políticas granulares para APIs do Google

É possível usar o Cloud SWP para fornecer políticas granulares para APIs do Google. Por exemplo, é possível definir políticas no nível do bucket/objeto usando a Common Expression Language (CEL).

Recursos compatíveis

O SWP do Cloud oferece suporte aos seguintes recursos:

Serviço de proxy explícito

Os clientes precisam ser explicitamente configurados para usar o servidor proxy. O proxy do Cloud SWP isola os clientes da Internet criando novas conexões TCP em nome deles.

Escalonamento automático de proxies Envoy do Cloud SWP

Oferece suporte ao ajuste automático do tamanho do pool de proxy Envoy e da capacidade do pool em uma região, o que permite um desempenho consistente durante períodos de grande demanda pelo menor custo.

Políticas de acesso de saída modulares

O Cloud SWP é compatível especificamente com as seguintes políticas de saída:

  • Identidade de origem baseada em tags seguras, contas de serviço ou endereços IP.
  • Destinos com base em URLs e nomes de host.
  • Solicitações com base em métodos, cabeçalhos ou URLs. Os URLs podem ser especificados usando listas, caracteres curinga ou padrões.
  • Criptografia de ponta a ponta: os túneis proxy de cliente podem transitar por TLS. O Cloud SWP também aceita HTTP/S CONNECT para conexões TLS de ponta a ponta iniciadas pelo cliente com o servidor de destino.

Integração simplificada com o Cloud NAT

O Cloud NAT provisiona automaticamente endereços IP públicos adicionais quando o conjunto de proxies que atendem ao tráfego do SWP do Cloud aumenta.

Endereços IP públicos estáticos manuais também são uma opção para quem quer ter IPs de saída conhecidos.

Integração dos Registros de auditoria do Cloud e do pacote de operações do Google Cloud

Os Registros de auditoria do Cloud e o pacote de operações do Google Cloud gravam atividades administrativas e solicitações de acesso a recursos relacionados ao SWP do Cloud. Eles também registram métricas e registros de transações para solicitações processadas pelo proxy.

Inspeção TLS

O Secure Web Proxy oferece um serviço de inspeção TLS que permite interceptar o tráfego TLS, inspecionar a solicitação criptografada e aplicar políticas de segurança.

  • Integração perfeita com o Certificate Authority Service (CAS), que é um repositório altamente disponível e escalonável para CAs particulares.
  • A capacidade de usar sua própria raiz de confiança, se necessário. Também é possível usar uma CA raiz já existente para assinar as CAs subordinadas mantidas pelo CAS. Se preferir, você pode gerar um novo certificado raiz no CAS.
  • Critérios de descriptografia granulares usando o SessionMatcher e o ApplicationMatcher nas regras da política do Secure Web Proxy. Esse critério inclui hosts correspondentes presentes em listas de URLs, expressões regulares, intervalos de endereços IP e expressões semelhantes. Se necessário, os critérios podem ser combinados com expressões booleanas.
  • Cada política do Secure Web Proxy pode ser configurada com uma política de inspeção TLS e um pool de AC próprios. Como alternativa, várias políticas do Secure Web Proxy podem compartilhar uma única política de inspeção TLS.

O que você vai aprender

  • Como implantar e gerenciar o SWP do Cloud.

O que é necessário

  • Saber implantar instâncias e configurar componentes de rede.
  • Conhecimento de configuração de firewall de VPC

2. Ambiente de teste

Este codelab usará uma única VPC. Um recurso de computação neste ambiente sai usando o SWP do Cloud, como mostra o diagrama abaixo.

1264e30caa136365.png

Neste laboratório, vamos ter duas VMs de carga de trabalho.

O Cliente A será configurado para enviar todas as solicitações HTTP/HTTPS ao SWP do Cloud.

O Cliente B NÃO será configurado para enviar solicitações HTTP/HTTPS explicitamente ao SWP do Cloud, mas usará o Cloud NAT para tráfego vinculado à Internet.

3. Antes de começar

O codelab requer um único projeto.

No Cloud Shell, verifique se o ID do projeto está configurado

export project_id=`gcloud config list --format="value(core.project)"`
export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"`
export region=us-west1
export zone=us-west1-a
export prefix=codelab-swp
export member="serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com"

4. Ativar APIs

Ative as APIs para usar os produtos

gcloud services enable networksecurity.googleapis.com
gcloud services enable certificatemanager.googleapis.com
gcloud services enable networkservices.googleapis.com

5. Criar uma rede VPC, uma sub-rede e uma sub-rede somente proxy

Rede VPC

Crie a codelab-swp-vpc VPC:

gcloud compute networks create $prefix-vpc --subnet-mode=custom 

Sub-rede

Crie as respectivas sub-redes na região selecionada:

gcloud compute networks subnets create $prefix-vpc-subnet \
   --range=10.10.10.0/24 --network=$prefix-vpc --region=$region

Sub-rede somente proxy

Crie uma sub-rede somente proxy na região selecionada:

gcloud compute networks subnets create $prefix-proxy-only-subnet --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$region --network=$prefix-vpc --range=172.16.0.0/23

6. Criar regras de firewall

Para permitir que o IAP se conecte às instâncias de VM, crie uma regra de firewall que:

  • Aplica-se a todas as instâncias de VM que você quer disponibilizar usando o IAP.
  • Permite tráfego de entrada no intervalo de IP 35.235.240.0/20. Esse intervalo contém todos os endereços IP que o IAP usa para encaminhamento de TCP.

No cloudshell:

gcloud compute firewall-rules create $prefix-allow-iap-proxy \
--direction=INGRESS \
--priority=1000 \
--network=$prefix-vpc \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20

7. Criar Cloud Router e Cloud NAT

Criar Cloud Router para Cloud NAT.

gcloud compute routers create ${prefix}-cr \
--region=$region \
--network=${prefix}-vpc

Crie o gateway NAT do Cloud para o Cliente B.

gcloud compute routers nats create $prefix-nat-gw-$region \
--router=$prefix-cr \
--router-region=$region \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges

8. Criar uma política de segurança de gateway

Crie um arquivo yaml com as informações relevantes para a política:

cat > /tmp/policy.yaml << EOF
description: Policy to allow .com traffic, then (/index.html), and finally TLS.
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
EOF

Execute o comando gcloud para criar a política com base no arquivo yaml:

gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}

9. Criar uma regra de política de segurança de gateway

Crie um arquivo yaml que contenha as regras. Essas regras são representadas no Common Expression Language (CEL). Este laboratório usará uma regra simples que permite o tráfego para domínios .com e bloqueia todos os outros:

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
EOF

Agora podemos vincular a regra à política de segurança do gateway:

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

10. Crie um certificado e faça o upload no Gerenciador de certificados do Cloud

Crie um certificado para encerrar o tráfego da carga de trabalho:

openssl req -x509 -newkey rsa:2048 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -subj '/CN=www.codelab-swp.com' -nodes -addext \
  "subjectAltName = DNS:www.codelab-swp.com"

Faça o upload do certificado no gerenciador de certificados do Cloud para que o SWP possa referenciá-lo na política do gateway de segurança.

gcloud certificate-manager certificates create ${prefix}-cert --location=${region} --private-key-file=/tmp/key.pem --certificate-file=/tmp/cert.pem

11. Crie o gateway do SWP

Crie o arquivo yaml do gateway SWP para fazer referência às informações anteriores, como certificado, política de segurança do gateway, rede e sub-rede.

cat > /tmp/gateway.yaml << EOF
name: projects/${project_id}/locations/${region}/gateways/${prefix}-gateway
type: SECURE_WEB_GATEWAY
addresses: [10.10.10.50]
ports: [443]
certificateUrls: [projects/${project_id}/locations/${region}/certificates/${prefix}-cert]
gatewaySecurityPolicy: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
network: projects/${project_id}/global/networks/${prefix}-vpc
subnetwork: projects/${project_id}/regions/${region}/subnetworks/${prefix}-vpc-subnet
EOF

Crie o gateway:

gcloud network-services gateways import ${prefix}-swp --source=/tmp/gateway.yaml --location=${region}

Confirme se o gateway foi criado:

gcloud network-services gateways describe ${prefix}-swp --location ${region}

12. Criar instâncias do Compute

Como o SWP do Cloud é um proxy explícito, precisamos especificar explicitamente o IP do proxy para o tráfego da carga de trabalho. O clientA da instância do Compute terá a variável de ambiente definida. O ClienteB não fará isso.

Crie as instâncias de computação ClientA e ClientB:

gcloud compute instances create clienta \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.10 \
   --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
sudo echo http_proxy=https://10.10.10.50:443/ >> /etc/environment
sudo echo https_proxy=https://10.10.10.50:443/ >> /etc/environment
'
gcloud compute instances create clientb \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.200 \
   --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
'

13. Como testar a correspondência de sessão

Conectar-se via SSH ao "clienta" Compute VM criada recentemente. Esta VM tem a variável de ambiente definida para usar o Cloud SWP.

No cloudshell:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

Execute algumas consultas na Web para validar a funcionalidade. Exigimos –proxy-insecure porque criamos um certificado autoassinado para este laboratório:

curl https://google.com --proxy-insecure

Saída esperada:

davidtu@clienta:~$ curl https://google.com --proxy-insecure
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

Como você pode ver, a solicitação foi "bem-sucedida". Um redirecionamento 301 é esperado, já que o site está redirecionando para https://www.google.com.

A execução do comando a seguir forneceria registros detalhados com detalhes sobre a conexão:

curl https://google.com --proxy-insecure -v

Destaque de algumas saídas para mostrar os detalhes da conexão de proxy, os certificados e o destino.

davidtu@clienta:~$ curl https://google.com --proxy-insecure -v
* Uses proxy env variable https_proxy == 'https://10.10.10.50:443/'
*   Trying 10.10.10.50:443...
* Connected to 10.10.10.50 (10.10.10.50) port 443 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Proxy certificate:
*  subject: CN=www.codelab-swp.com
*  start date: Dec 12 17:16:35 2022 GMT
*  expire date: Dec 12 17:16:35 2023 GMT
*  issuer: CN=www.codelab-swp.com
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* allocate connect buffer!
* Establish HTTP proxy tunnel to google.com:443
> CONNECT google.com:443 HTTP/1.1
> Host: google.com:443
> User-Agent: curl/7.74.0
> Proxy-Connection: Keep-Alive
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/1.1 200 OK
< date: Mon, 12 Dec 2022 19:22:04 GMT
< 
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
...

Fique à vontade para testar outros domínios .com e verificar a funcionalidade.

Agora vamos testar outros domínios que não são .com para verificar o comportamento de bloqueio padrão:

curl https://wikipedia.org --proxy-insecure

Saída esperada:

curl: (56) Received HTTP code 403 from proxy after CONNECT

Da mesma forma, observe o registro detalhado de saída e confirme se o SWP do Cloud está bloqueando esse tráfego:

curl https://wikipedia.org --proxy-insecure -v
davidtu@clienta:~$ curl https://wikipedia.org --proxy-insecure -v
* Uses proxy env variable https_proxy == 'https://10.10.10.50:443/'
*   Trying 10.10.10.50:443...
* Connected to 10.10.10.50 (10.10.10.50) port 443 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Proxy certificate:
*  subject: CN=www.codelab-swp.com
*  start date: Dec 12 17:16:35 2022 GMT
*  expire date: Dec 12 17:16:35 2023 GMT
*  issuer: CN=www.codelab-swp.com
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* allocate connect buffer!
* Establish HTTP proxy tunnel to wikipedia.org:443
> CONNECT wikipedia.org:443 HTTP/1.1
> Host: wikipedia.org:443
> User-Agent: curl/7.74.0
> Proxy-Connection: Keep-Alive
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/1.1 403 Forbidden
< content-length: 13
< content-type: text/plain
< date: Mon, 12 Dec 2022 19:35:09 GMT
< connection: close
< 
* Received HTTP code 403 from proxy after CONNECT
* CONNECT phase completed!
* Closing connection 0
curl: (56) Received HTTP code 403 from proxy after CONNECT

Fique à vontade para testar outros domínios também para verificar o comportamento.

Saia da sessão SSH para "clienta". e inicie uma nova conexão SSH com "clientb".

gcloud compute ssh clientb --zone=$zone --tunnel-through-iap

Execute alguns comandos curl para verificar o comportamento:

curl https://google.com

Isso deve funcionar como a VM clientb esperada:

davidtu@clientb:~$ curl https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

Teste em um domínio organizacional:

curl https://wikipedia.org

Isso funciona como esperado, já que o clientb não está utilizando o Cloud SWP:

davidtu@clientb:~$ curl https://wikipedia.org
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.wikipedia.org/">here</a>.</p>
</body></html>

Teste o envio do tráfego explicitamente pelo SWP do Cloud:

curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure 

Vemos que esse tráfego é negado pela política do SWP do Cloud:

davidtu@clientb:~$ curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure
curl: (56) Received HTTP code 403 from proxy after CONNECT

Como você verificou, o tráfego que usa o SWP do Cloud está sendo aplicado em relação à política de segurança configurada. O tráfego destinado a .com é permitido e todos os outros destinos são negados.

Saia de clientb.

14. Atualizar uma regra de política de segurança de gateway para ApplicationMatching

Vamos atualizar a regra para corresponder aos detalhes no nível do aplicativo. Criaremos uma regra para examinar o caminho da solicitação e permitir somente se ele corresponder a index.html.

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic with path index.html
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
applicationMatcher: request.path.matches('index.html')
EOF

Agora podemos vincular a regra atualizada à política de segurança do gateway:

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

15. Como testar a regra ApplicationMatcher

Estabeleça uma conexão SSH com a VM do Compute cliente. Esta VM tem a variável de ambiente definida para usar o Cloud SWP.

No cloudshell:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

Execute algumas consultas na Web para validar a funcionalidade. Exigimos –proxy-insecure porque criamos um certificado autoassinado para este laboratório:

curl http://google.com --proxy-insecure

Observe que essa consulta vai falhar quando for transmitida anteriormente.

Access denied

Qualquer caminho de solicitação além de "index.html" será bloqueado com um erro 403. Fique à vontade para fazer mais testes.

Modifique a consulta para incluir o caminho /index.html

curl http://google.com/index.html --proxy-insecure

A solicitação precisa ser bem-sucedida:

davidtu@clienta:~$ curl http://google.com/index.html --proxy-insecure
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/index.html">here</A>.
</BODY></HTML>

Um redirecionamento 301 é esperado, já que o site está redirecionando para http://www.google.com/index.html.

Observe que esta é uma solicitação HTTP. Em seguida, ative o SWP para ter os recursos de inspeção TLS.

Em seguida, execute a mesma consulta, mas por TLS:

curl -k https://google.com/index.html --proxy-insecure

Saída esperada:

curl: (56) Received HTTP code 403 from proxy after CONNECT

Essa solicitação falhará, já que o SWP não está configurado para inspecionar TLS e não poderá avaliar o caminho em relação à regra applicationMatcher.

Saia de Clenta.

16. ativar inspeção TLS

Sem a inspeção TLS, o applicationMatcher não fará a correspondência com o tráfego HTTPS.

&quot;applicationMatcher&quot; permite filtrar o seguinte:

  • Mapa de cabeçalhos de solicitação
  • Método de solicitação
  • Solicitar host
  • Caminho da solicitação
  • Solicitar consulta
  • Esquema de solicitação
  • URL completo da solicitação
  • User agent de solicitação

Criar a conta de serviço

Esta conta de serviço terá permissões para gerar certificados para a inspeção TLS do SWP.

gcloud beta services identity create \
    --service=networksecurity.googleapis.com \
    --project=$project_id

Verifique se o CAS está ativado

gcloud services enable privateca.googleapis.com

Criar um pool de CA

gcloud privateca pools create $prefix-ca-pool \
    --tier=devops \
    --project=$project_id \
    --location=$region 

Criar CA raiz

CA usada para assinatura de certificado.

gcloud privateca roots create $prefix-root-ca --pool=$prefix-ca-pool \
  --location=$region \
  --auto-enable \
  --subject="CN=my-swp-ca, O=SWP LLC"

Criar um arquivo de política de emissão de certificados

cat > /tmp/tls-issuance-policy.yaml << EOF
maximumLifetime: 1209600s
baselineValues:
  caOptions:
    isCa: false
  keyUsage:
    extendedKeyUsage:
      serverAuth: true
EOF

Criar arquivo yaml de inspeção TLS

cat > /tmp/tls-inspection-policy.yaml << EOF
caPool: projects/$project_id/locations/$region/caPools/$prefix-ca-pool
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-inspection
EOF

Criar política de inspeção de TLS

gcloud network-security tls-inspection-policies import $prefix-tls-inspection \
    --source=/tmp/tls-inspection-policy.yaml \
    --location=$region

Atualizar o pool de AC para usar a política de emissão de certificados

gcloud privateca pools update $prefix-ca-pool    --issuance-policy=/tmp/tls-issuance-policy.yaml --location=$region

Conceder permissões

Isso permite que sua conta de serviço use o pool de ACs para gerar certificados.

gcloud privateca pools add-iam-policy-binding $prefix-ca-pool \
    --member=$member \
    --role='roles/privateca.certificateManager' \
    --location=$region

Atualizar o yaml da política para incluir a inspeção TLS

cat > /tmp/policy.yaml << EOF
description: some policy description
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
tlsInspectionPolicy: projects/${project_id}/locations/${region}/tlsInspectionPolicies/${prefix}-tls-inspection
EOF

Execute o comando para aplicar a política atualizada

gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}

Atualizar regras para incluir a inspeção TLS

Em seguida, especifique quais regras precisam ter inspeção TLS "enabtlsInspectionEnabled: true" .

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic with path index.html
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
applicationMatcher: request.path.matches('index.html')
tlsInspectionEnabled: true
EOF

Execute o comando para aplicar a regra atualizada.

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

17. Testar inspeção TLS

Estabeleça uma conexão SSH com a VM do Compute cliente. Esta VM tem a variável de ambiente definida para usar o Cloud SWP.

No cloudshell:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

Execute a consulta na Web anterior para verificar se o SWP está executando a inspeção TLS para recuperar o caminho

curl -k https://google.com/index.html --proxy-insecure

Desta vez, ela deu certo, já que o SWP pode avaliar o ApplicationMatcher.

Saída esperada:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/index.html">here</A>.
</BODY></HTML>

Configuramos o Cloud SWP para inspecionar o TLS e avaliar a lógica do applicationMatcher.

Saia do cliente.

18. Etapas de limpeza

No Cloud Shell, remova o gateway SWP, a política de segurança, os certificados, as instâncias, o Cloud NAT e o Cloud Router:

gcloud -q network-services gateways delete ${prefix}-swp --location=${region}

gcloud -q network-security gateway-security-policies rules delete rule-com --location=${region} --gateway-security-policy=${prefix}-policy

gcloud -q network-security gateway-security-policies delete ${prefix}-policy --location=${region}

gcloud -q certificate-manager certificates delete ${prefix}-cert --location=${region}

gcloud -q network-security tls-inspection-policies delete $prefix-tls-inspection --location=$region

gcloud -q privateca roots disable $prefix-root-ca --pool=$prefix-ca-pool --location=$region

gcloud -q privateca roots delete $prefix-root-ca --pool=$prefix-ca-pool --location=$region --ignore-active-certificates --skip-grace-period

gcloud -q privateca pools delete $prefix-ca-pool --location=$region

gcloud -q compute instances delete clienta --zone=$zone

gcloud -q compute instances delete clientb --zone=$zone

gcloud -q compute routers nats delete ${prefix}-nat-gw-${region} \
--router=$prefix-cr --router-region=$region

gcloud -q compute routers delete `gcloud compute routers list --regions=$region --format="value(NAME)" | grep -e swg-autogen -e codelab-swp` --region=$region

Remova as sub-redes, regras de FW e VPCs:

gcloud -q compute networks subnets delete $prefix-vpc-subnet \
    --region $region

gcloud -q compute networks subnets delete $prefix-proxy-only-subnet \
    --region=$region

gcloud -q compute firewall-rules delete $prefix-allow-iap-proxy

gcloud -q compute networks delete $prefix-vpc

19. Parabéns!

Parabéns por concluir o codelab. Você configurou e implantou corretamente o Cloud Secure Web Proxy no Google Cloud.

O que aprendemos

  • O SWP do Cloud e os benefícios dele.