도커(Docker) 컨테이너 보안

안상운·2024년 8월 21일

Docker

목록 보기
5/14
post-thumbnail

9. 컨테이너 보안

컨테이너 보안을 생각할때 생각해 보아야할 두가지 사항이 있다.

컨테이너 이미지 보안: 공격자에 의해 공격당할 수 있는 어떤 취약점이 있는가?
컨테이너 런타임 보안: 공격자가 컨테이너를 성공적으로 손상시킨 경우 무엇을 할 수 있습니까? 외곽으로 이동하는 것이 얼마나 어려울까?

Image Sercurity

  1. 공격 영역을 작게 유지해라
    최소한의 기본 이미지를 사용하여 설치된 구성 요소 수를 줄여 취약점 발생 가능성을 줄인다. ChainGuard는 보안 기본 이미지를 위한 좋은 소스.

  2. 필요없는 컴포넌트를 포함하지 않는다.
    도커파일 내에서 production 시간에 필요 하지 않는 component를 배제한다.

  3. 다단계 빌드를 활용한다.
    빌드 프로세스 중에 필요한 구성 요소에 대해 다단계 빌드를 사용한다. 하지만 런타임에는 필요하지 않는다.

  4. 취약점을 위해 이미지를 스캔하라.
    Snyk (built into Docker)나 Trivy (from Aqua Security)같은 도구를 이용하여 잠재적인 취약점을 스캔한다.

  5. root user에서 실행하는것을 피해라.
    리눅스 사용자에게 최소한의 권한을 주어서 컨테이너를 실행해야한다.

  6. 이미지안에 민감한 정보를 저장하지 마라
    이미지를 공개된 것처럼 처리하고 민감한 데이터는 런타임에 삽입한다.

  7. 암호화 방식으로 이미지에 서명하라.
    이미지에 서명하여 출처를 증명하고 무결성을 보장.

  8. 기본 이미지를 고정해라
    버그 수정을 자동으로 통합하되 주요 변경 사항을 방지하려면 기본 이미지를 최소한 마이너 버전 번호에 고정해라.

Runtime Security

  1. 사용자 네임스페이스 재매핑 사용
    Enable the user namespace remap option in Docker daemon (dockerd) to separate container user namespaces from the host system.

  2. 파일 시스템을 read-only로 설정
    컨테이너의 파일 시스템을 read-only로 설정 해서 쓰기 접근을 허용하지 않게 한다.

  3. 필요에 따라 기능 제거 및 추가
    cap_drop 옵션을 사용하여 모든 기능을 제거한 다음 필요한 기능을 다시 추가.

  4. CPU와 memory 제한
    서비스 거부 상황을 방지하기 위해서 CPU와 memory 사용을 제한.

  5. seccomp 또는 AppArmor 프로필 설정
    추가 보안 계층을 위해 보안 옵션을 활용하여 seccomp 또는 AppArmor 프로필을 설정.

0개의 댓글