9.1 Docker 네트워크 보안 주요 측면
이번 강의에서는 Docker 네트워크 보안의 주요 측면, 권장 사항 및 컨테이너와 데이터를 보호하기 위한 모범 사례들을 살펴볼 거야.
Docker 네트워크 보안의 주요 측면
- 컨테이너 분리
- 접근 제어
- 데이터 암호화
- 모니터링 및 감사
- 업데이트 및 패치
9.2 컨테이너 격리
컨테이너 격리는 Docker 네트워크 보안을 제공하기 위한 첫 번째 단계야. 이 기능은 잠재적인 취약점 영향을 최소화하고 컨테이너 간의 무단 접근을 방지하는 데 도움을 줘.
사용자 정의 네트워크 사용
컨테이너를 격리하기 위해 사용자 정의 네트워크를 만들어서 필요한 서비스와의 상호작용만 제한적으로 허용하도록 해.
docker network create --driver bridge my_secure_network
Docker Compose에서는 각 서비스에 대해 사용자 정의 네트워크를 정의할 수 있어.
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는 네트워크 수준에서 컨테이너 간 상호작용을 관리하기 위한 규정을 설정할 수 있게 해줘.
docker network connect --link <source_container>:<alias> <target_network> <container_name>
예제:
docker network connect --link container1:c1 multi-host-network container2
9.3 접근 제어
접근 제어는 컨테이너와 네트워크에 대한 무단 접근을 방지하기 위해 중요해.
포트 접근 제한
IP 주소와 방화벽 규칙을 사용해서 공개된 포트에 대한 접근을 제한해.
docker run -d -p 127.0.0.1:8080:80 --name my_secure_container nginx
역할과 정책 사용
컨테이너와 네트워크를 관리하는 사용자의 권한을 제한하기 위해 역할과 접근 정책을 사용해.
docker run -d --user <uid>:<gid> my_secure_container
9.4 데이터 암호화
데이터 암호화는 데이터가 보관 중이거나 전송 중일 때 기밀 데이터를 보호하는 데 도움을 줘.
보관 중 데이터 암호화
컨테이너에서 사용하는 볼륨에 파일 시스템 암호화를 사용해.
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를 사용해.
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 모니터링 및 감사
모니터링 및 감사는 컨테이너와 네트워크의 활동을 추적하고, 잠재적인 위협을 찾아 대응할 수 있게 도와줘.
로그와 메트릭
컨테이너의 로그와 메트릭을 수집해서 분석하고 모니터링해.
docker logs <container_name>
Prometheus나 Grafana 같은 모니터링 툴을 사용해서 컨테이너와 네트워크 상태를 추적해봐.
감사
사용자 활동과 컨테이너 및 네트워크 설정 변경을 추적하려면 감사를 활성화해야 해.
docker events
9.6 업데이트 및 패치
정기적인 업데이트와 패치로 컨테이너와 네트워크를 알려진 취약점으로부터 보호할 수 있어.
Docker 업데이트
Docker 업데이트를 확인하고 새로운 버전을 제때 설치해줘.
sudo apt-get update
sudo apt-get install docker-ce
이미지 업데이트
컨테이너 이미지를 최신 버전으로 정기적으로 업데이트해서 보안 수정 사항을 포함시키자.
docker pull nginx:latest
9.7 모범 사례 예제
예제 1: 격리된 네트워크 생성
앱의 각 구성 요소에 대해 격리된 네트워크를 생성해봐.
docker network create --driver bridge frontend_network
docker network create --driver bridge backend_network
해당 네트워크에 컨테이너를 실행시키면 돼.
docker run -d --name frontend --network frontend_network nginx
docker run -d --name backend --network backend_network myapp
예제 2: 포트 접근 제한
컨테이너 포트에 접근 권한을 필요한 IP 주소와 호스트로 제한해봐.
docker run -d -p 192.168.1.100:8080:80 --name restricted_container nginx
예제 3: 암호화를 위한 TLS 사용
데이터 전송을 보호하기 위해 컨테이너에 TLS를 설정해.
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