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를 켜요:
- Docker Desktop에서 조직에 로그인해요. 조직에 Docker Business 구독이 있어야 해요.
- 기존 컨테이너를 모두 중지하고 제거해요:
$ docker stop $(docker ps -q)
$ docker rm $(docker ps -aq)
- Docker Desktop에서 Settings > General 로 이동해요.
- Use Enhanced Container Isolation 확인란을 선택해요.
- Apply and restart 를 선택해요.
중요: ECI는 기능을 켜기 전에 만든 컨테이너를 보호하지 않아요. ECI를 켜기 전에 기존 컨테이너를 제거해요.
관리자용
Settings Management를 사용해 Enhanced Container Isolation을 조직 전체로 구성해요.
- Docker Home 에 로그인하고 왼쪽 위 계정 드롭다운에서 조직을 선택해요.
- Docker Desktop, 다음 Settings Management 를 선택해요.
- 설정 정책을 만들거나 편집해요.
- Enhanced Container Isolation 을 Always enabled 로 설정해요.
JSON 파일 방식:
admin-settings.json파일을 만들고 다음을 추가해요:
{
"configurationFileVersion": 2,
"enhancedContainerIsolation": {
"value": true,
"locked": true
}
}
- 필요에 따라 다음을 구성해요:
"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 제한 사항 을 검토해요.