이미지 접근 관리

이미지 접근 관리 (Image Access Management)

관리자가 개발자가 Docker Hub에서 풀할 수 있는 이미지 유형을 제어해 신뢰할 수 없는 커뮤니티 이미지 사용을 방지하는 방법을 배워볼게요.

출처: 문서

본문

Image Access Management는 관리자가 개발자가 Docker Hub에서 풀할 수 있는 이미지 유형을 제어할 수 있게 해줘요. 이는 개발자가 조직에 보안 위험을 초래할 수 있는 신뢰할 수 없는 커뮤니티 이미지를 실수로 사용하는 것을 방지해요.

Image Access Management로 접근을 제한할 수 있는 것:

  • Docker Official Images: Docker가 유지하는 정리된 큐레이션 이미지
  • Docker Verified Publisher Images: 신뢰할 수 있는 상용 게시자의 이미지
  • Organization images: 조직의 비공개 저장소
  • Community images: 개별 개발자의 공개 이미지

또한 저장소 허용 목록(repository allowlist)을 사용해 다른 모든 접근 제어를 우회하는 특정 저장소를 승인할 수 있어요.

Image Access Management를 사용해야 하는 사람?

Image Access Management는 개발자가 신뢰할 수 있는 컨테이너 이미지만 사용하도록 보장해 공급망 공격을 방지하는 데 도움이 돼요. 예를 들어 새 애플리케이션을 빌드하는 개발자가 구성 요소로 악성 커뮤니티 이미지를 실수로 사용할 수 있는데, Image Access Management는 승인된 이미지 유형에만 접근을 제한해 이를 방지해요.

일반적인 보안 시나리오:

  • 유지 관리되지 않거나 악성 커뮤니티 이미지의 사용 방지
  • 개발자가 검증된 공식 기본 이미지만 사용하도록 보장
  • 상용 타사 이미지 접근 제어
  • 개발 팀 전체에서 일관된 보안 표준 유지

다음의 경우 저장소 허용 목록을 사용해요:

  • 특정 검증된 커뮤니티 이미지에 대한 접근 부여
  • 공식 범주에 속하지 않는 필수 타사 도구 허용
  • 특정 비즈니스 요구 사항에 대한 일반 이미지 접근 정책 예외 제공

사전 요구 사항

Image Access Management를 구성하기 전에 다음을 해야 해요:

  • Enforce sign-in. Image Access Management는 사용자가 조직 자격 증명으로 Docker Desktop에 로그인할 때만 적용돼요.
  • 인증에 개인 액세스 토큰(PAT) 사용 (조직 액세스 토큰은 지원되지 않음)
  • Docker Business 구독 보유

이미지 접근 구성

참고: Image Access Management는 조직 구성원에게 기본적으로 꺼져 있어요. 조직 소유자는 정책 설정과 무관하게 항상 모든 이미지에 접근할 수 있어요.

Image Access Management를 구성하려면:

  1. Docker Home 에 로그인하고 왼쪽 위 계정 드롭다운에서 조직을 선택해요.
  2. Docker Desktop, 다음 Image Access 를 선택해요.
  3. toggle 을 사용해 이미지 접근을 활성화해요.
  4. 허용할 이미지 유형을 선택해요:
    • Organization images: 조직의 이미지 (기본적으로 항상 허용). 조직 구성원이 만든 공개·비공개 이미지일 수 있음.
    • Community images: 다양한 사용자가 기여한 이미지로 보안 위험을 초래할 수 있음. Docker-Sponsored Open Source 이미지를 포함하며 기본적으로 꺼져 있음.
    • Docker Verified Publisher Images: 안전한 공급망에 적합한 Verified Publisher 프로그램의 Docker 파트너 이미지.
    • Docker Official Images: OS 리포지토리, Dockerfile 모범 사례, 즉시 사용 가능한 솔루션, 시기적절한 보안 업데이트를 제공하는 큐레이션된 Docker 저장소.
    • Repository allowlist: 허용되어야 할 특정 저장소 목록. 다음 단계에서 구성.
  5. 이전 단계에서 Repository allowlist 가 활성화되었다면 허용 목록에 특정 저장소를 추가하거나 제거할 수 있어요:
    • 저장소를 추가하려면 Repository allowlist 섹션에서 Add repositories to allowlist 를 선택하고 화면의 지침을 따라요.
    • 저장소를 제거하려면 Repository allowlist 섹션에서 옆의 휴지통 아이콘을 선택해요.

허용 목록의 저장소는 이전 단계에서 구성한 이미지 유형 제한과 무관하게 모든 조직 구성원이 접근할 수 있어요.

제한이 적용된 후 조직 구성원은 권한 페이지를 읽기 전용 형식으로 볼 수 있어요.

접근 제한 검증

Image Access Management를 구성한 후 제한이 올바르게 작동하는지 테스트해요.

개발자가 허용된 이미지 유형을 풀할 때:

$ docker pull nginx  # Docker Official Image
# Docker Official Images가 허용되면 풀 성공

개발자가 차단된 이미지 유형을 풀할 때:

$ docker pull someuser/custom-image  # Community image
Error response from daemon: image access denied: community images not allowed

이미지 접근 제한은 풀, FROM 지시문을 사용하는 빌드, Docker Compose 서비스를 포함한 모든 Docker Hub 작업에 적용돼요.

모범 사례

  • 가장 제한적인 정책으로 시작해 정당한 비즈니스 요구에 따라 점차 확장해요:
    1. Docker Official Images와 Organization images로 시작
    2. 필요하면 상용 도구에 Docker Verified Publisher Images 추가
    3. 특정 검증된 사용 사례에 대해서만 커뮤니티 이미지를 신중히 평가
    4. 저장소 허용 목록은 아껴서 사용. 조직의 보안 검토 과정을 통해 철저히 검증·승인된 저장소만 추가
  • 사용 패턴 모니터링: 개발자가 풀하려는 이미지를 검토하고, 추가 이미지 유형에 대한 정당한 요청을 식별하며, 승인된 이미지 범주를 정기적으로 감사하고, Docker Desktop 애널리틱스를 사용해 사용 패턴을 모니터링해요.
  • 저장소 허용 목록 정기 검토: 허용 목록의 저장소를 주기적으로 감사해 여전히 필요하고 신뢰할 수 있는지 확인하고, 더 이상 필요 없거나 관리되지 않는 항목을 제거해요.

범위 및 우회 고려 사항

  • Image Access Management는 Docker Hub 이미지에 대한 접근만 제어해요. 다른 레지스트리의 이미지는 이러한 정책의 영향을 받지 않아요. 다른 레지스트리에 대한 접근 제어에는 Registry Access Management 를 사용해요.
  • 사용자는 Docker Desktop에서 로그아웃하거나(로그인 강제가 없는 경우), 제한되지 않는 다른 레지스트리의 이미지를 사용하거나, 레지스트리 미러·프록시를 사용해 Image Access Management를 우회할 수 있어요. 종합적인 제어를 위해 sign-in을 강제하고 Registry Access Management와 결합해요.
  • 이미지 제한은 Dockerfile FROM 지시문에 적용되고, 제한된 이미지를 사용하는 Docker Compose 서비스는 실패하며, 중간 이미지가 제한되면 멀티 스테이지 빌드가 영향을 받을 수 있고, 다양한 이미지 유형을 사용하는 CI/CD 파이프라인이 영향을 받을 수 있어요.

다음 단계

  • 보안 제어 계층화: Image Access Management는 Registry Access Management 와 함께 사용하면 가장 잘 작동해요(개발자가 접근할 수 있는 레지스트리 제어). Enhanced Container Isolation 은 런타임에 컨테이너를 보호하고, Settings Management 는 Docker Desktop 구성을 제어해요.

더 알아보기 (Learn more)