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