1. Giới thiệu
Proxy web an toàn trên đám mây
Cloud SWP là dịch vụ ưu tiên nền tảng đám mây, cung cấp proxy web bảo mật nhằm giúp bạn bảo mật lưu lượng truy cập web đầu ra (HTTP/S). Bạn định cấu hình để các ứng dụng của mình sử dụng Cloud SWP làm proxy một cách rõ ràng. Các yêu cầu web có thể bắt nguồn từ các nguồn sau:
- Phiên bản máy ảo (VM)
- Vùng chứa
- Môi trường không máy chủ sử dụng trình kết nối không máy chủ
- Khối lượng công việc trên kết nối ngang hàng VPC
- Tải công việc bên ngoài Google Cloud được kết nối bằng Cloud VPN hoặc Cloud Interconnect
Cloud SWP cung cấp các chính sách linh hoạt và chi tiết dựa trên danh tính và ứng dụng web ưu tiên nền tảng đám mây.
Lợi ích
Dưới đây là một số ví dụ về những lợi ích mà Cloud SWP có thể mang lại cho tổ chức:
Di chuyển sang Google Cloud
Cloud SWP giúp bạn di chuyển sang Google Cloud mà vẫn giữ nguyên các yêu cầu và chính sách bảo mật hiện có đối với lưu lượng truy cập web đầu ra. Bạn có thể tránh sử dụng các giải pháp của bên thứ ba yêu cầu một bảng điều khiển quản lý khác hoặc chỉnh sửa tệp cấu hình theo cách thủ công.
Quyền truy cập vào các dịch vụ web bên ngoài đáng tin cậy
Cloud SWP giúp bạn áp dụng các chính sách chi tiết về quyền truy cập đối với lưu lượng truy cập web đầu ra để bạn có thể bảo mật mạng của mình. Bạn sẽ tạo và xác định tải công việc hoặc danh tính của ứng dụng, sau đó áp dụng các chính sách.
Giám sát hoạt động truy cập vào các dịch vụ web không đáng tin cậy
Bạn có thể sử dụng Cloud SWP để cung cấp quyền truy cập có giám sát đối với các dịch vụ web không đáng tin cậy. Cloud SWP xác định lưu lượng truy cập không tuân thủ chính sách và ghi lại lưu lượng đó vào tính năng Ghi nhật ký trên đám mây (Ghi nhật ký). Sau đó, bạn có thể giám sát việc sử dụng Internet, phát hiện các mối đe doạ đối với mạng của mình và ứng phó với các mối đe doạ.
Các chế độ kiểm soát chính sách chi tiết cho API của Google
Bạn có thể sử dụng Cloud SWP để cung cấp các chính sách chi tiết cho các API của Google. Ví dụ: bạn có thể đặt chính sách ở cấp nhóm/đối tượng bằng cách tận dụng Ngôn ngữ diễn đạt thông thường (CEL).
Tính năng được hỗ trợ
Cloud SWP hỗ trợ các tính năng sau:
Dịch vụ proxy tường minh
Ứng dụng phải được định cấu hình rõ ràng để sử dụng máy chủ proxy. Proxy Cloud SWP tách biệt ứng dụng khỏi Internet bằng cách tạo kết nối TCP mới thay mặt máy khách.
Tự động cấp tài nguyên bổ sung cho các proxy của Envoy Cloud SWP
Hỗ trợ tự động điều chỉnh kích thước nhóm proxy Envoy và dung lượng của nhóm trong một khu vực, từ đó mang lại hiệu suất nhất quán trong thời gian có nhu cầu cao với mức chi phí thấp nhất.
Các chính sách về quyền truy cập vào đầu ra theo mô-đun
Cloud SWP hỗ trợ đặc biệt các chính sách về lượng dữ liệu đầu ra sau đây:
- Nhận dạng nguồn dựa trên thẻ bảo mật, tài khoản dịch vụ hoặc địa chỉ IP.
- Đích đến dựa trên URL, tên máy chủ.
- Yêu cầu dựa trên phương thức, tiêu đề hoặc URL. Bạn có thể chỉ định URL bằng cách sử dụng danh sách, ký tự đại diện hoặc mẫu.
- Mã hoá hai đầu: Các đường hầm proxy máy khách có thể truyền qua TLS. Cloud SWP cũng hỗ trợ HTTP/S CONNECT cho các kết nối TLS đầu cuối do máy khách khởi tạo với máy chủ đích.
Đơn giản hoá việc tích hợp Cloud NAT
Cloud NAT tự động cấp phép địa chỉ IP công khai bổ sung khi nhóm proxy phân phát lưu lượng truy cập Cloud SWP tăng lên.
Địa chỉ IP công khai tĩnh thủ công cũng là một lựa chọn cho những người muốn có IP đầu ra đã biết.
Nhật ký kiểm tra của Cloud và việc tích hợp bộ hoạt động của Google Cloud
Nhật ký kiểm tra của Cloud và bộ hoạt động của Google Cloud ghi lại các hoạt động quản trị và yêu cầu truy cập vào các tài nguyên liên quan đến Cloud SWP. Các báo cáo này cũng ghi lại chỉ số và nhật ký giao dịch cho các yêu cầu do proxy xử lý.
Kiểm tra TLS
Proxy web bảo mật cung cấp dịch vụ kiểm tra TLS cho phép bạn chặn lưu lượng truy cập TLS, kiểm tra yêu cầu được mã hoá và thực thi các chính sách bảo mật.
- Tích hợp chặt chẽ với Dịch vụ tổ chức phát hành chứng chỉ (CAS). Đây là một kho lưu trữ có khả năng hoạt động cao và có thể mở rộng dành cho các CA riêng tư.
- Có thể sử dụng nguồn tin cậy của chính bạn nếu cần. Bạn cũng có thể sử dụng một CA gốc hiện có để ký các CA cấp dưới do CAS nắm giữ. Nếu muốn, bạn có thể tạo một chứng chỉ gốc mới trong CAS.
- Tiêu chí giải mã chi tiết bằng cách sử dụng SessionMatcher và ApplicationMatcher trong các quy tắc chính sách về Proxy web bảo mật. Tiêu chí này bao gồm các máy chủ lưu trữ phù hợp có trong danh sách URL, biểu thức chính quy, dải địa chỉ IP và biểu thức tương tự. Nếu cần, tiêu chí có thể được kết hợp với biểu thức boolean.
- Bạn có thể định cấu hình mỗi chính sách Proxy web bảo mật bằng chính sách kiểm tra TLS và nhóm CA riêng. Ngoài ra, nhiều chính sách Proxy web bảo mật có thể dùng chung một chính sách kiểm tra TLS.
Kiến thức bạn sẽ học được
- Cách triển khai và quản lý Cloud SWP.
Bạn cần có
- Có kiến thức về cách triển khai thực thể và định cấu hình thành phần mạng
- Kiến thức về cấu hình tường lửa VPC
2. Môi trường kiểm thử
Lớp học lập trình này sẽ tận dụng một đám mây riêng ảo (VPC). Tài nguyên điện toán trong môi trường này sẽ đi ra thông qua Cloud SWP như minh hoạ trong biểu đồ dưới đây.
Trong phòng thí nghiệm này, chúng ta sẽ có 2 máy ảo cho tải công việc.
Ứng dụng A sẽ được định cấu hình để gửi tất cả các yêu cầu HTTP/HTTPS đến Cloud SWP.
Ứng dụng B sẽ KHÔNG được định cấu hình để gửi các yêu cầu HTTP/HTTPS đến Cloud SWP một cách rõ ràng, mà thay vào đó sẽ tận dụng Cloud NAT cho lưu lượng truy cập ràng buộc Internet.
3. Trước khi bắt đầu
Lớp học lập trình này chỉ yêu cầu một dự án duy nhất.
Bên trong Cloud Shell, hãy đảm bảo rằng bạn thiết lập mã dự án
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. Bật API
Bật API để sử dụng sản phẩm
gcloud services enable networksecurity.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable networkservices.googleapis.com
5. Tạo mạng VPC, mạng con và mạng con chỉ có proxy
Mạng VPC
Tạo codelab-swp-vpc VPC:
gcloud compute networks create $prefix-vpc --subnet-mode=custom
Mạng con
Tạo các mạng con tương ứng trong vùng đã chọn:
gcloud compute networks subnets create $prefix-vpc-subnet \ --range=10.10.10.0/24 --network=$prefix-vpc --region=$region
Mạng con chỉ dùng cho proxy
Tạo mạng con chỉ proxy trong vùng đã chọn:
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. Tạo quy tắc về tường lửa
Để cho phép IAP kết nối với các phiên bản máy ảo của bạn, hãy tạo một quy tắc tường lửa:
- Áp dụng cho tất cả các thực thể máy ảo mà bạn muốn truy cập được bằng cách sử dụng IAP.
- Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải ô này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.
Từ 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. Tạo Cloud Router & NAT trên đám mây
Tạo Cloud Router cho Cloud NAT.
gcloud compute routers create ${prefix}-cr \ --region=$region \ --network=${prefix}-vpc
Tạo cổng vào Cloud NAT cho Ứng dụng 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. Tạo một Chính sách bảo mật cổng vào
Tạo một tệp yaml chứa thông tin liên quan đến chính sách:
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
Chạy lệnh gcloud để tạo chính sách từ tệp yaml:
gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}
9. Tạo một quy tắc chính sách bảo mật cổng vào
Tạo tệp yaml chứa các quy tắc. Các quy tắc này được trình bày bằng Ngôn ngữ diễn đạt thông thường (CEL). Phòng thí nghiệm này sẽ sử dụng một quy tắc đơn giản cho phép lưu lượng truy cập đến các miền .com và chặn tất cả những miền khác:
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
Bây giờ, chúng ta có thể liên kết quy tắc này với chính sách bảo mật cổng vào:
gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy
10. Tạo một chứng chỉ và tải lên Trình quản lý chứng chỉ trên đám mây
Tạo chứng chỉ để chấm dứt lưu lượng truy cập của khối lượng công việc:
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"
Tải chứng chỉ lên Cloud Certificate Manager để SWP có thể tham chiếu chứng chỉ đó trong chính sách về cổng bảo mật.
gcloud certificate-manager certificates create ${prefix}-cert --location=${region} --private-key-file=/tmp/key.pem --certificate-file=/tmp/cert.pem
11. Tạo cổng SWP
Tạo tệp yaml cho Cổng SWP để tham chiếu thông tin trước đó, chẳng hạn như chứng chỉ, chính sách bảo mật cổng vào, mạng và mạng con.
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
Tạo cổng vào:
gcloud network-services gateways import ${prefix}-swp --source=/tmp/gateway.yaml --location=${region}
Xác nhận cổng vào đã được tạo:
gcloud network-services gateways describe ${prefix}-swp --location ${region}
12. Tạo thực thể điện toán
Vì Cloud SWP là một proxy rõ ràng, nên chúng ta cần chỉ định rõ IP proxy cho lưu lượng truy cập của khối lượng công việc. Khách hàngA của thực thể điện toán sẽ được đặt biến môi trường. Ứng dụng B thì không.
Tạo các thực thể điện toán ClientA và 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. Kiểm thử tính năng so khớp phiên
SSH thành "clienta" máy tính ảo được tạo gần đây. Máy ảo này đã đặt biến môi trường để sử dụng Cloud SWP.
Từ Cloudshell:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
Chạy một số truy vấn web để xác thực chức năng. Chúng tôi yêu cầu – không an toàn với proxy vì chúng tôi đã tạo một chứng chỉ tự ký cho phòng thí nghiệm này:
curl https://google.com --proxy-insecure
Kết quả đầu ra dự kiến:
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>
Như bạn có thể thấy, yêu cầu là "thành công". Theo dự kiến, chúng tôi sẽ thấy lệnh chuyển hướng 301 vì trang web đang chuyển hướng đến https://www.google.com.
Việc chạy lệnh sau sẽ cung cấp nhật ký chi tiết chứa thông tin chi tiết về kết nối:
curl https://google.com --proxy-insecure -v
Đánh dấu một số dữ liệu đầu ra để hiển thị thông tin chi tiết về kết nối proxy, chứng chỉ và đích đến.
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! ...
Bạn có thể dùng thử các miền .com khác để xác minh chức năng.
Bây giờ, hãy thử một số miền khác không phải là .com để xác minh hành vi chặn mặc định:
curl https://wikipedia.org --proxy-insecure
Kết quả đầu ra dự kiến:
curl: (56) Received HTTP code 403 from proxy after CONNECT
Tương tự, hãy xem nhật ký đầu ra chi tiết và xác nhận Cloud SWP đang chặn lưu lượng truy cập này:
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
Bạn cũng có thể dùng thử các miền khác để xác minh hành vi.
Thoát khỏi phiên SSH sang "clienta" và bắt đầu kết nối SSH mới với "clientb".
gcloud compute ssh clientb --zone=$zone --tunnel-through-iap
Chạy một số lệnh curl để kiểm tra hành vi:
curl https://google.com
Thao tác này sẽ hoạt động như máy ảo khách hàng dự kiến:
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>
Kiểm thử trên miền của tổ chức:
curl https://wikipedia.org
Phương thức này hoạt động như dự kiến vì khách hàng không sử dụng 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>
Thử nghiệm gửi lưu lượng truy cập rõ ràng thông qua Cloud SWP:
curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure
Chúng tôi thấy rằng lưu lượng truy cập này bị từ chối thông qua chính sách Cloud SWP:
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
Như bạn đã xác minh, lưu lượng truy cập sử dụng Cloud SWP đang được thực thi theo chính sách bảo mật đã thiết lập. Lưu lượng truy cập dành cho .com được cho phép và tất cả các đích đến khác đều bị từ chối.
Thoát khỏi ứng dụng khách
14. Cập nhật Quy tắc chính sách bảo mật cổng vào cho ApplicationMatching
Hãy cập nhật quy tắc này để khớp với thông tin chi tiết về cấp ứng dụng. Chúng ta sẽ xây dựng một quy tắc để xem đường dẫn yêu cầu và chỉ cho phép nếu đường dẫn đó khớp với đường dẫn http://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
Bây giờ, chúng ta có thể liên kết quy tắc đã cập nhật với chính sách bảo mật cổng vào:
gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy
15. Kiểm thử quy tắc ApplicationMatcher
SSH vào máy ảo điện toán clienta. Máy ảo này đã đặt biến môi trường để sử dụng Cloud SWP.
Từ Cloudshell:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
Chạy một số truy vấn web để xác thực chức năng. Chúng tôi yêu cầu – không an toàn với proxy vì chúng tôi đã tạo một chứng chỉ tự ký cho phòng thí nghiệm này:
curl http://google.com --proxy-insecure
Lưu ý rằng truy vấn này sẽ không thành công khi đã qua trước đó.
Access denied
Bất kỳ đường dẫn yêu cầu nào ngoài "index.html" sẽ bị chặn bằng lỗi 403. Bạn có thể thử nghiệm thêm.
Sửa đổi truy vấn để bao gồm đường dẫn /index.html
curl http://google.com/index.html --proxy-insecure
Yêu cầu này sẽ thành công:
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>
Theo dự kiến, chúng tôi sẽ thấy lệnh chuyển hướng 301 vì trang web đang chuyển hướng đến http://www.google.com/index.html
Lưu ý rằng đây là yêu cầu HTTP. Tiếp theo, bạn cần bật SWP để có các chức năng kiểm tra TLS.
Tiếp theo, hãy chạy cùng một truy vấn nhưng qua TLS:
curl -k https://google.com/index.html --proxy-insecure
Kết quả đầu ra dự kiến:
curl: (56) Received HTTP code 403 from proxy after CONNECT
Yêu cầu này sẽ không thành công vì SWP không được định cấu hình để kiểm tra TLS và không thể đánh giá đường dẫn theo quy tắc applicationMatcher.
Thoát khỏi clenta.
16. Bật tính năng kiểm tra TLS
Nếu không có quy trình Kiểm tra TLS, applicationMatcher sẽ không so khớp được với lưu lượng truy cập HTTPS.
"applicationMatcher" cho phép lọc những nội dung sau:
- Liên kết tiêu đề của yêu cầu
- Phương thức yêu cầu
- Yêu cầu người tổ chức
- Đường dẫn yêu cầu
- Yêu cầu truy vấn
- Giao thức yêu cầu
- URL yêu cầu đầy đủ
- Yêu cầu tác nhân người dùng
Tạo tài khoản dịch vụ
Tài khoản dịch vụ này sẽ có quyền tạo chứng chỉ để kiểm tra TLS SWP.
gcloud beta services identity create \ --service=networksecurity.googleapis.com \ --project=$project_id
Đảm bảo bạn đã bật CAS
gcloud services enable privateca.googleapis.com
Tạo nhóm CA
gcloud privateca pools create $prefix-ca-pool \ --tier=devops \ --project=$project_id \ --location=$region
Tạo CA gốc
CA được sử dụng để ký chứng chỉ.
gcloud privateca roots create $prefix-root-ca --pool=$prefix-ca-pool \ --location=$region \ --auto-enable \ --subject="CN=my-swp-ca, O=SWP LLC"
Tạo tệp chính sách cấp chứng chỉ
cat > /tmp/tls-issuance-policy.yaml << EOF maximumLifetime: 1209600s baselineValues: caOptions: isCa: false keyUsage: extendedKeyUsage: serverAuth: true EOF
Tạo tệp yaml Kiểm tra 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
Tạo chính sách kiểm tra TLS
gcloud network-security tls-inspection-policies import $prefix-tls-inspection \ --source=/tmp/tls-inspection-policy.yaml \ --location=$region
Cập nhật Nhóm CA để sử dụng chính sách cấp chứng chỉ
gcloud privateca pools update $prefix-ca-pool --issuance-policy=/tmp/tls-issuance-policy.yaml --location=$region
Cấp quyền
Việc này cho phép tài khoản dịch vụ của bạn sử dụng nhóm CA để tạo chứng chỉ.
gcloud privateca pools add-iam-policy-binding $prefix-ca-pool \ --member=$member \ --role='roles/privateca.certificateManager' \ --location=$region
Cập nhật yaml Chính sách để bao gồm hoạt động kiểm tra 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
Chạy lệnh để áp dụng chính sách đã cập nhật
gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}
Cập nhật các quy tắc để đưa yêu cầu kiểm tra TLS
Tiếp theo, hãy chỉ định những quy tắc cần kiểm tra TLS "enabtlsInspectionEnabled: true" cờ.
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
Chạy lệnh để áp dụng quy tắc đã cập nhật
gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy
17. Kiểm tra kiểm tra TLS (Bảo mật tầng truyền tải)
SSH vào máy ảo điện toán clienta. Máy ảo này đã đặt biến môi trường để sử dụng Cloud SWP.
Từ Cloudshell:
gcloud compute ssh clienta --zone=$zone --tunnel-through-iap
Chạy truy vấn web trước đó để xác minh xem SWP có đang thực hiện kiểm tra TLS để truy xuất đường dẫn hay không
curl -k https://google.com/index.html --proxy-insecure
Lần này, quá trình này sẽ thành công vì SWP có thể đánh giá ApplicationMatcher.
Kết quả đầu ra dự kiến:
<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>
Chúng ta đã thiết lập thành công Cloud SWP để kiểm tra TLS và đánh giá logic applicationMatcher!
Thoát khỏi clienta.
18. Các bước dọn dẹp
Trong Cloud Shell, hãy xoá cổng SWP, chính sách bảo mật, chứng chỉ, phiên bản, Cloud NAT và 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
Xoá mạng con, quy tắc FW và VPC:
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. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình. Bạn đã định cấu hình và triển khai thành công Cloud Secure Web Proxy trên Google Cloud.
Nội dung đã đề cập
- Cloud SWP và lợi ích!