9.1 Những khía cạnh chính của bảo mật mạng Docker
Trong bài giảng này, tụi mình sẽ xem qua những khía cạnh chính của bảo mật mạng Docker, các khuyến nghị và thực hành tốt nhất để bảo vệ container và dữ liệu của bạn.
Những khía cạnh chính của bảo mật mạng Docker
- Cách ly container
- Kiểm soát truy cập
- Mã hóa dữ liệu
- Giám sát và kiểm tra
- Cập nhật và vá lỗi
9.2 Cách ly container
Cách ly container là bước đầu tiên để đảm bảo bảo mật mạng Docker. Điều này giúp giảm thiểu tác động từ các lỗ hổng tiềm ẩn và ngăn chặn truy cập trái phép giữa các container.
Sử dụng mạng tùy chỉnh
Tạo các mạng tùy chỉnh để cách ly container, giới hạn tương tác của chúng chỉ với các dịch vụ cần thiết.
docker network create --driver bridge my_secure_network
Trong Docker Compose, bạn có thể định nghĩa mạng tùy chỉnh cho từng dịch vụ.
version: '3.8'
services:
web:
image: nginx:latest
networks:
- my_secure_network
app:
image: myapp:latest
networks:
- my_secure_network
networks:
my_secure_network:
driver: bridge
Sử dụng quy tắc giữa container
Docker cho phép đặt các quy tắc giữa container để quản lý tương tác giữa các container ở cấp độ mạng.
docker network connect --link <source_container>:<alias> <target_network> <container_name>
Ví dụ:
docker network connect --link container1:c1 multi-host-network container2
9.3 Kiểm soát truy cập
Kiểm soát truy cập quan trọng để ngăn chặn truy cập trái phép vào container và mạng.
Giới hạn truy cập vào cổng
Hãy giới hạn truy cập vào các cổng được công bố, sử dụng địa chỉ IP và các quy tắc firewall.
docker run -d -p 127.0.0.1:8080:80 --name my_secure_container nginx
Sử dụng vai trò và chính sách
Sử dụng vai trò và chính sách truy cập để hạn chế quyền của người dùng quản lý container và mạng.
docker run -d --user <uid>:<gid> my_secure_container
9.4 Mã hóa dữ liệu
Mã hóa dữ liệu giúp bảo vệ thông tin nhạy cảm cả khi dữ liệu ở trạng thái tĩnh và khi truyền tải.
Mã hóa dữ liệu ở trạng thái tĩnh
Sử dụng mã hóa hệ thống tệp cho các volume được container sử dụng.
docker run -d --name my_secure_container --mount
type=volume,source=my_volume,destination=/data,volume-driver=local,volume-opt=o=bind,volume-opt=device=/mnt/secure_data nginx
Mã hóa dữ liệu khi truyền tải
Sử dụng TLS để mã hóa dữ liệu truyền giữa các container và các dịch vụ bên ngoài.
docker run -d -p 443:443 --name my_secure_container -v /path/to/cert.pem:/etc/nginx/cert.pem -v
/path/to/key.pem:/etc/nginx/key.pem nginx
9.5 Giám sát và kiểm toán
Giám sát và kiểm toán cho phép theo dõi hoạt động của container và mạng, phát hiện các mối đe dọa tiềm tàng và phản hồi kịp thời.
Log và metric
Thu thập log và metric của container để phân tích và giám sát.
docker logs <container_name>
Sử dụng các công cụ giám sát như Prometheus và Grafana để theo dõi trạng thái của container và mạng.
Kiểm toán
Bật kiểm toán để theo dõi hành động của người dùng và các thay đổi cấu hình của container và mạng.
docker events
9.6 Cập nhật và bản vá
Các bản cập nhật và bản vá thường xuyên giúp bảo vệ container và mạng khỏi những lỗ hổng đã biết.
Cập nhật Docker
Theo dõi các bản cập nhật của Docker và cài đặt phiên bản mới kịp thời.
sudo apt-get update
sudo apt-get install docker-ce
Cập nhật image
Thường xuyên cập nhật image của container lên các phiên bản mới nhất có chứa bản vá bảo mật.
docker pull nginx:latest
9.7 Ví dụ về các thực hành tốt nhất
Ví dụ 1: Tạo các mạng biệt lập
Tạo các mạng biệt lập cho từng thành phần của ứng dụng của bạn.
docker network create --driver bridge frontend_network
docker network create --driver bridge backend_network
Chạy các container trong các mạng tương ứng.
docker run -d --name frontend --network frontend_network nginx
docker run -d --name backend --network backend_network myapp
Ví dụ 2: Giới hạn truy cập vào các cổng
Hạn chế truy cập vào các cổng của container chỉ cho các địa chỉ IP cần thiết và các host cần thiết.
docker run -d -p 192.168.1.100:8080:80 --name restricted_container nginx
Ví dụ 3: Sử dụng TLS để mã hóa
Cấu hình các container để sử dụng TLS nhằm bảo vệ dữ liệu khi truyền tải.
docker run -d -p 443:443 --name tls_container -v /path/to/cert.pem:/etc/nginx/cert.pem -v
/path/to/key.pem:/etc/nginx/key.pem nginx
GO TO FULL VERSION