Giới thiệu
Trong bài viết này, chúng ta sẽ khám phá cách thiết lập quy tắc tường lửa cho Google Cloud VPC với mục tiêu là tài khoản dịch vụ. Quy tắc này cho phép bạn áp dụng các quy tắc tường lửa cho tất cả các phiên bản máy ảo (VM) chạy với một tài khoản dịch vụ cụ thể, bất kể tên hay thẻ của chúng. Điều này rất hữu ích khi quản lý quyền truy cập dựa trên danh tính khối lượng công việc thay vì các thẻ tĩnh.
Mục lục
- Giới thiệu
- Bước 1: Tạo phiên bản VM
- Bước 2: Tạo quy tắc tường lửa Ingress
- Bước 3: Truy cập ứng dụng đã triển khai trên VM
- Bước 4: Dọn dẹp
- Các thực tiễn tốt nhất
- Những cạm bẫy phổ biến
- Mẹo hiệu suất
- Khắc phục sự cố
- Câu hỏi thường gặp
Bước 1: Tạo phiên bản VM
Để bắt đầu, chúng ta sẽ tạo một phiên bản VM và tải lên kịch bản khởi động nginx-webserver.sh để triển khai một máy chủ web Nginx. Dưới đây là nội dung của kịch bản:
bash
#!/bin/bash
sudo apt install -y telnet
sudo apt install -y nginx
sudo systemctl enable nginx
sudo chmod -R 755 /var/www/html
HOSTNAME=$(hostname)
sudo echo "<!DOCTYPE html> <html>
<body style='background-color:rgb(250, 210, 210);'>
<h1>Chào mừng đến với Latchu@DevOps - WebVM App1 </h1>
<p><strong>Hostname VM:</strong> $HOSTNAME</p>
<p><strong>Địa chỉ IP VM:</strong> $(hostname -I)</p>
<p><strong>Phiên bản ứng dụng:</strong> V1</p>
<p>Nền tảng Google Cloud - Demo</p>
</body></html>" | sudo tee /var/www/html/index.html
Tạo VM trong subnet tùy chỉnh:
Chạy lệnh sau để tạo một phiên bản VM:
bash
gcloud compute instances create myvm3-service-accounts \
--zone=us-central1-a \
--machine-type=e2-micro \
--network-interface=subnet=mysubnet1 \
--metadata-from-file=startup-script=nginx-webserver.sh
Xác minh phiên bản:
Sau khi tạo xong, bạn có thể xác minh các phiên bản bằng lệnh sau:
bash
gcloud compute instances list
Kiểm tra quyền truy cập trước quy tắc tường lửa:
Trước khi thiết lập quy tắc tường lửa, chúng ta sẽ kiểm tra quyền truy cập:
bash
telnet <ĐỊA_CHỈ_IP_CÔNG_KHAI> 80 # Nên thất bại
curl <ĐỊA_CHỈ_IP_CÔNG_KHAI> # Nên thất bại
Nhận xét: Quyền truy cập bị từ chối → chưa có quy tắc ingress cho cổng 80.
Bước 2: Tạo quy tắc tường lửa Ingress
Để tạo quy tắc tường lửa, bạn truy cập vào VPC Networks → vpc2-custom → FIREWALLS → THÊM QUY TẮC TƯỜNG LỬA.
- Tên: fw-ingress-80-service-accounts
- Mô tả: Cho phép lưu lượng đến cổng 80 cho tất cả các phiên bản với tài khoản dịch vụ đã chỉ định
- Mạng: vpc2-custom
- Độ ưu tiên: 1000
- Hướng: Ingress
- Hành động khi khớp: Cho phép
- Mục tiêu: Tài khoản dịch vụ đã chỉ định
- Phạm vi tài khoản dịch vụ: Trong dự án này
- Tài khoản dịch vụ mục tiêu: Tài khoản dịch vụ mặc định của Compute Engine (hoặc bất kỳ SA tùy chỉnh nào)
- Bộ lọc nguồn: Dải IPv4
- Dải IPv4 nguồn: 0.0.0.0/0
- Giao thức và cổng: TCP → 80
Nhấn Tạo để hoàn tất.
Bước 3: Truy cập ứng dụng đã triển khai trên VM
Sau khi tạo quy tắc tường lửa, hãy kiểm tra lại danh sách VM:
bash
gcloud compute instances list
Kiểm tra quyền truy cập sau quy tắc tường lửa:
Chạy các lệnh sau để kiểm tra:
bash
telnet <ĐỊA_CHỈ_IP_CÔNG_KHAI> 80 # Nên kết nối
curl <ĐỊA_CHỈ_IP_CÔNG_KHAI> # Nên hiển thị trang HTML
Truy cập qua trình duyệt:
Mở trình duyệt và nhập địa chỉ:
http://<ĐỊA_CHỈ_IP_CÔNG_KHAI>
Nhận xét: Ứng dụng có thể truy cập được vì VM đang sử dụng tài khoản dịch vụ phù hợp với quy tắc tường lửa.
Bước 4: Dọn dẹp
Sau khi hoàn tất thử nghiệm, bạn có thể dọn dẹp bằng cách xóa quy tắc tường lửa và phiên bản VM:
bash
# Xóa quy tắc tường lửa
gcloud compute firewall-rules delete fw-ingress-80-service-accounts
# Xóa VM
gcloud compute instances delete myvm3-service-accounts \
--zone=us-central1-a --delete-disks=all
✅ Bài học chính:
- Tất cả các phiên bản: Nhanh chóng và rộng nhưng không an toàn.
- Thẻ mục tiêu: Tốt hơn cho việc nhóm khối lượng công việc theo chức năng.
- Tài khoản dịch vụ: Dựa trên danh tính, linh hoạt hơn, tốt nhất cho môi trường đám mây nơi các khối lượng công việc tự động kế thừa tài khoản dịch vụ.
Các thực tiễn tốt nhất
- Xác định rõ ràng các quy tắc tường lửa: Đảm bảo rằng các quy tắc tường lửa của bạn được xác định rõ ràng và cụ thể cho từng loại tài khoản dịch vụ, giúp dễ dàng quản lý và bảo mật.
- Ghi chú và tài liệu: Ghi chú rõ ràng về từng quy tắc tường lửa để dễ dàng theo dõi và bảo trì sau này.
Những cạm bẫy phổ biến
- Quy tắc tường lửa quá rộng: Tránh việc tạo ra các quy tắc tường lửa quá rộng, điều này có thể gây ra lỗ hổng bảo mật cho hệ thống.
- Không kiểm tra trước khi tạo: Luôn kiểm tra quyền truy cập trước khi triển khai quy tắc tường lửa mới để tránh gián đoạn dịch vụ.
Mẹo hiệu suất
- Giám sát lưu lượng truy cập: Sử dụng các công cụ giám sát để theo dõi lưu lượng truy cập đến và đi từ các VM của bạn.
- Tối ưu hóa quy tắc tường lửa: Xem xét việc tối ưu hóa các quy tắc tường lửa của bạn để giảm thiểu độ trễ và cải thiện hiệu suất tổng thể.
Khắc phục sự cố
- Không thể truy cập ứng dụng: Nếu bạn không thể truy cập ứng dụng, hãy kiểm tra lại quy tắc tường lửa và đảm bảo rằng tài khoản dịch vụ đã được chỉ định đúng.
- Lỗi kết nối: Nếu bạn gặp lỗi kết nối, hãy đảm bảo rằng cổng đã được mở và không có quy tắc nào chặn lưu lượng đến.
Câu hỏi thường gặp
- Quy tắc tường lửa là gì?
Quy tắc tường lửa là các quy định được thiết lập để quản lý lưu lượng truy cập đến và đi từ các VM trong Google Cloud. - Tại sao nên sử dụng tài khoản dịch vụ?
Tài khoản dịch vụ giúp quản lý quyền truy cập dựa trên danh tính, linh hoạt và dễ dàng hơn so với các thẻ tĩnh. - Có cách nào để kiểm tra quy tắc tường lửa không?
Bạn có thể sử dụng các lệnh gcloud để liệt kê và kiểm tra các quy tắc tường lửa đã tạo.
Bằng cách làm theo các bước trong bài viết này, bạn sẽ có thể thiết lập và quản lý các quy tắc tường lửa cho Google Cloud VPC một cách hiệu quả và an toàn.