이미지 접근 관리
이미지 접근 관리 (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를 구성하려면:
- Docker Home 에 로그인하고 왼쪽 위 계정 드롭다운에서 조직을 선택해요.
- Docker Desktop, 다음 Image Access 를 선택해요.
- toggle 을 사용해 이미지 접근을 활성화해요.
- 허용할 이미지 유형을 선택해요:
- Organization images: 조직의 이미지 (기본적으로 항상 허용). 조직 구성원이 만든 공개·비공개 이미지일 수 있음.
- Community images: 다양한 사용자가 기여한 이미지로 보안 위험을 초래할 수 있음. Docker-Sponsored Open Source 이미지를 포함하며 기본적으로 꺼져 있음.
- Docker Verified Publisher Images: 안전한 공급망에 적합한 Verified Publisher 프로그램의 Docker 파트너 이미지.
- Docker Official Images: OS 리포지토리, Dockerfile 모범 사례, 즉시 사용 가능한 솔루션, 시기적절한 보안 업데이트를 제공하는 큐레이션된 Docker 저장소.
- Repository allowlist: 허용되어야 할 특정 저장소 목록. 다음 단계에서 구성.
- 이전 단계에서 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 작업에 적용돼요.
모범 사례
- 가장 제한적인 정책으로 시작해 정당한 비즈니스 요구에 따라 점차 확장해요:
- Docker Official Images와 Organization images로 시작
- 필요하면 상용 도구에 Docker Verified Publisher Images 추가
- 특정 검증된 사용 사례에 대해서만 커뮤니티 이미지를 신중히 평가
- 저장소 허용 목록은 아껴서 사용. 조직의 보안 검토 과정을 통해 철저히 검증·승인된 저장소만 추가
- 사용 패턴 모니터링: 개발자가 풀하려는 이미지를 검토하고, 추가 이미지 유형에 대한 정당한 요청을 식별하며, 승인된 이미지 범주를 정기적으로 감사하고, 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 구성을 제어해요.