CodeGym /課程 /Docker SELF /Docker 網路安全基礎

Docker 網路安全基礎

Docker SELF
等級 18 , 課堂 3
開放

9.1 Docker 網路安全的主要面向

在這堂課裡,我們會看一下 Docker 網路安全的主要面向、建議以及一些確保容器和數據安全的最佳實踐方法。

Docker 網路安全的主要面向

  1. 容器隔離
  2. 訪問控制
  3. 資料加密
  4. 監控與審計
  5. 更新與補丁

9.2 容器隔離

容器隔離是確保 Docker 網路安全的第一步。它能幫助減少潛在漏洞的影響,並防止容器之間未經授權的訪問。

使用自定義網路

創建自定義網路來實現容器隔離,從而限制它們之間的交互僅包括必要的服務。

Terminal

docker network create --driver bridge my_secure_network

在 Docker Compose 中,你可以為每個服務定義自定義網路。

Yaml

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

使用跨容器規則

Docker 允許設置跨容器規則來管理容器之間的網路層面交互。

Terminal

docker network connect --link <source_container>:<alias> <target_network> <container_name>

範例:

Terminal

docker network connect --link container1:c1 multi-host-network container2

9.3 訪問控制

訪問控制對於防止未經授權的訪問容器和網絡非常重要。

限制端口訪問

使用 IP 地址和防火牆規則限制對公開端口的訪問。

Terminal

docker run -d -p 127.0.0.1:8080:80 --name my_secure_container nginx

使用角色和策略

使用角色和訪問策略來限制管理容器和網絡用戶的權限。

Terminal

docker run -d --user <uid>:<gid> my_secure_container

9.4 資料加密

資料加密可以幫助保護靜態以及傳輸中的敏感資料。

靜態資料的加密

請對容器使用的文件系統進行加密。

Terminal

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

傳輸資料的加密

使用 TLS 對容器與外部服務之間傳輸的資料進行加密。

Terminal

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 監控與審計

監控與審計可以追蹤容器和網路的活動,識別潛在威脅並做出反應。

日誌和指標

收集容器的日誌和指標以便於分析和監控。

Terminal

docker logs <container_name>

使用監控工具,例如 Prometheus 和 Grafana,來追蹤容器和網路的狀態。

審計

啟用審計來追蹤用戶操作和容器及網路配置的變更。

Terminal

docker events

9.6 更新與修補

定期進行更新與修補可以幫助保護容器和網路免受已知漏洞的威脅。

更新 Docker

關注 Docker 的更新,及時安裝新版本。

Terminal

sudo apt-get update

sudo apt-get install docker-ce

更新映像檔

定期將容器映像檔更新到包含安全性修補的最新版本。

Terminal

docker pull nginx:latest

9.7 最佳實踐示例

示例 1: 創建隔離的網路

為你的應用程式的每個組件創建隔離的網路。

Terminal

docker network create --driver bridge frontend_network

docker network create --driver bridge backend_network

在相應的網路中啟動容器。

Terminal

docker run -d --name frontend --network frontend_network nginx

docker run -d --name backend --network backend_network myapp

示例 2: 限制端口訪問

限制訪問容器端口僅授權必要的 IP 地址和主機。

Terminal

docker run -d -p 192.168.1.100:8080:80 --name restricted_container nginx

示例 3: 使用 TLS 進行加密

配置容器使用 TLS 來保護傳輸中的數據。

Terminal

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
1
問卷/小測驗
Docker Swarm,等級 18,課堂 3
未開放
Docker Swarm
Docker Swarm
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION