Enhanced Container Isolation 활성화

Enhanced Container Isolation 활성화 (Enable Enhanced Container Isolation)

개발자 생산성을 유지하면서 Docker Desktop을 보호하는 ECI를 켜고 제대로 작동하는지 검증하는 방법을 배워볼게요.

출처: 문서

본문

구독: Business 대상: 관리자

ECI는 개발자 생산성을 완전히 유지하면서 악성 컨테이너가 Docker Desktop을 침해하지 못하게 방지해요. 이 페이지는 Enhanced Container Isolation(ECI)을 켜고 제대로 작동하는지 검증하는 방법을 보여줘요.

사전 요구 사항

시작하기 전에 다음이 있어야 해요:

  • Docker Business 구독
  • (조직 전체 설정을 관리하는 관리자만) Enforced sign-in

Enhanced Container Isolation 활성화

개발자용

Docker Desktop 설정에서 ECI를 켜요:

  1. Docker Desktop에서 조직에 로그인해요. 조직에 Docker Business 구독이 있어야 해요.
  2. 기존 컨테이너를 모두 중지하고 제거해요:
$ docker stop $(docker ps -q)
$ docker rm $(docker ps -aq)
  1. Docker Desktop에서 Settings > General 로 이동해요.
  2. Use Enhanced Container Isolation 확인란을 선택해요.
  3. Apply and restart 를 선택해요.

중요: ECI는 기능을 켜기 전에 만든 컨테이너를 보호하지 않아요. ECI를 켜기 전에 기존 컨테이너를 제거해요.

관리자용

Settings Management를 사용해 Enhanced Container Isolation을 조직 전체로 구성해요.

  1. Docker Home 에 로그인하고 왼쪽 위 계정 드롭다운에서 조직을 선택해요.
  2. Docker Desktop, 다음 Settings Management 를 선택해요.
  3. 설정 정책을 만들거나 편집해요.
  4. Enhanced Container Isolation 을 Always enabled 로 설정해요.

JSON 파일 방식:

  1. admin-settings.json 파일을 만들고 다음을 추가해요:
{
     "configurationFileVersion": 2,
     "enhancedContainerIsolation": {
       "value": true,
       "locked": true
     }
}
  1. 필요에 따라 다음을 구성해요:
    • "value": true: 기본적으로 ECI를 켭니다 (필수)
    • "locked": true: 개발자가 ECI를 끄지 못하게 합니다
    • "locked": false: 개발자가 설정을 제어할 수 있게 합니다

구성 적용

ECI 설정이 적용되려면:

  • 새 설치: 사용자가 Docker Desktop을 실행하고 로그인
  • 기존 설치: 사용자가 Docker Desktop을 완전히 종료하고 다시 실행

중요: Docker Desktop 메뉴에서 재시작하는 것만으로는 충분하지 않아요. 사용자는 Docker Desktop을 완전히 종료하고 다시 열어야 해요.

Docker API 접근이 필요한 신뢰할 수 있는 이미지에 대한 Docker 소켓 마운트 권한 도 구성할 수 있어요.

Enhanced Container Isolation 활성 상태 검증

ECI를 켠 후 다음 방법으로 제대로 작동하는지 검증해요.

사용자 네임스페이스 매핑 확인

컨테이너를 실행하고 사용자 네임스페이스 매핑을 검사해요:

$ docker run --rm alpine cat /proc/self/uid_map

ECI가 켜져 있을 때:

0     100000      65536

이는 컨테이너 root 사용자(0)가 64K 사용자 ID 범위로 Docker Desktop VM의 비특권 사용자(100000)에 매핑됨을 보여줘요. 각 컨테이너는 격리를 위해 고유한 사용자 ID 범위를 얻어요.

ECI가 꺼져 있을 때:

0          0 4294967295

이는 컨테이너 root 사용자(0)가 VM root 사용자(0)에 직접 매핑되어 격리가 더 약함을 보여줘요.

컨테이너 런타임 확인

사용 중인 컨테이너 런타임을 검증해요:

$ docker inspect --format='{{.HostConfig.Runtime}}' <container_name>

ECI가 켜져 있으면 sysbox-runc로, 꺼져 있으면 runc로 반환돼요.

보안 제한 테스트

ECI 보안 제한이 활성화되어 있는지 검증해요.

네임스페이스 공유 테스트:

$ docker run -it --rm --pid=host alpine

ECI가 켜져 있으면 Sysbox 컨테이너가 호스트와 네임스페이스를 공유할 수 없다는 오류로 이 명령이 실패해요.

Docker 소켓 접근 테스트:

$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock alpine

ECI가 켜져 있으면 신뢰할 수 있는 이미지에 대한 Docker 소켓 예외를 구성하지 않았다면 이 명령이 실패해요.

강제된 ECI에서 사용자가 보는 것

관리자가 Settings Management를 통해 Enhanced Container Isolation을 강제하면:

  • Docker Desktop 설정에서 Use Enhanced Container Isolation 설정이 켜진 것처럼 보여요.
  • "locked": true로 설정하면 설정이 잠기고 회색으로 표시돼요.
  • 모든 새 컨테이너가 자동으로 Linux 사용자 네임스페이스를 사용해요.
  • 기존 개발 워크플로우는 수정 없이 계속 작동해요.
  • 사용자는 docker inspect 출력에서 컨테이너 런타임으로 sysbox-runc를 봐요.

다음 단계

  • Docker 소켓 예외 및 고급 설정 구성 을 검토해요.
  • Enhanced Container Isolation 제한 사항 을 검토해요.

더 알아보기 (Learn more)