2.7. 안전하게 컨테이너 레지스트리 사용
컨테이너 레지스트리는 컨테이너 이미지를 다음에 저장합니다.
- 다른 사용자가 이미지에 액세스하도록 허용
- 이미지를 여러 버전의 이미지를 포함할 수 있는 리포지토리로 구성
- 선택적으로 다른 인증 방법을 기반으로 이미지에 대한 액세스를 제한하거나 공개적으로 사용 가능하게 합니다.
많은 사람과 조직이 이미지를 공유하는 Quay.io 및 Docker Hub와 같은 공용 컨테이너 레지스트리가 있습니다. Red Hat Registry에서는 지원되는 Red Hat 및 파트너 이미지를 제공하는 반면, Red Hat Ecosystem Catalog에서는 해당 이미지에 관한 자세한 설명 및 상태 점검을 제공합니다. 고유 레지스트리를 관리하기 위해 Red Hat Quay와 같은 컨테이너 레지스트리를 구매할 수 있습니다.
보안 관점에서 일부 레지스트리는 컨테이너의 상태를 확인하고 향상시키는 특수 기능을 제공합니다. 예를 들어, Red Hat Quay에서는 Clair 보안 스캐너를 사용한 컨테이너 취약성 스캔, GitHub 및 기타 위치에서 소스 코드가 변경될 때 이미지를 자동으로 재구성하는 빌드 트리거 및 역할 기반 액세스 제어(RBAC)를 사용하여 이미지에 대한 액세스를 보호하는 기능을 제공합니다.
2.7.1. 컨테이너의 출처를 알고 있습니까?
다운로드 및 배포된 컨테이너 이미지의 콘텐츠를 스캔하고 추적하는 데 사용할 수 있는 툴이 있습니다. 그러나 컨테이너 이미지의 공용 소스가 많이 있습니다. 공용 컨테이너 레지스트리를 사용하는 경우 신뢰할 수 있는 소스를 사용하여 보호 계층을 추가할 수 있습니다.
2.7.2. 불변의 인증된 컨테이너
불변 컨테이너를 관리할 때는 보안 업데이트를 사용하는 것이 특히 중요합니다. 불변 컨테이너는 실행 중에 변경되지 않는 컨테이너입니다. 불변 컨테이너를 배포할 때 하나 이상의 바이너리를 대체하기 위해 실행 중인 컨테이너로 들어가지 않습니다. 운영 관점에서 컨테이너를 변경하는 대신 업데이트된 컨테이너 이미지를 재빌드하고 재배포하여 컨테이너를 교체합니다.
Red Hat 인증 이미지는 다음과 같습니다.
- 플랫폼 구성 요소 또는 계층에 알려진 취약점이 없음
- 베어 메탈에서 클라우드까지 전체 RHEL 플랫폼에서 호환 가능
- Red Hat에서 지원
알려진 취약점 목록은 지속적으로 늘어나므로 시간 경과에 따라 배포된 컨테이너 이미지의 콘텐츠와 새로 다운로드한 이미지의 콘텐츠를 추적해야 합니다. RHSA(Red Hat Security Advisories)를 사용하여 Red Hat 인증 컨테이너 이미지에서 새로 발견된 문제를 경고하고 업데이트된 이미지로 안내할 수 있습니다. 또는 Red Hat Ecosystem Catalog로 이동하여 각 Red Hat 이미지에 관한 기타 보안 관련 문제를 조회할 수 있습니다.
2.7.3. Red Hat Registry 및 Ecosystem Catalog에서 컨테이너 가져오기
Red Hat에서는 Red Hat Ecosystem Catalog의 컨테이너 이미지 섹션에서 Red Hat 제품 및 파트너 제품의 인증된 컨테이너 이미지를 나열합니다. 해당 카탈로그에서 CVE, 소프트웨어 패키지 목록 및 상태 점수를 포함하여 각 이미지의 세부 정보를 볼 수 있습니다.
Red Hat 이미지는 실제로 공개 컨테이너 레지스트리(registry.access.redhat.com
) 및 인증된 레지스트리(registry.redhat.io
)로 표시되는 Red Hat Registry에 저장됩니다. 둘 다 기본적으로 동일한 컨테이너 이미지 세트를 포함하며 registry.redhat.io
에는 Red Hat 서브스크립션 인증서로 인증해야 하는 추가 이미지가 포함됩니다.
Red Hat에서 컨테이너 콘텐츠에 취약점이 있는지 모니터링하고 정기적으로 업데이트합니다. Red Hat에서 glibc, DROWN 또는 Dirty Cow에 대한 수정 사항과 같은 보안 업데이트를 릴리스하면 영향을 받는 컨테이너 이미지도 다시 빌드되어 Red Hat Registry에 푸시됩니다.
Red Hat에서는 상태 색인
을 사용하여 Red Hat Ecosystem Catalog를 통해 제공되는 각 컨테이너의 보안 위험을 반영합니다. 컨테이너에서는 Red Hat과 에라타 프로세스에서 제공하는 소프트웨어를 사용하므로 오래되어 해지된 컨테이너는 안전하지 않은 반면 새로운 컨테이너는 더 안전합니다.
컨테이너의 수명을 설명하기 위해 Red Hat Ecosystem Catalog에서는 평가 시스템을 사용합니다. 최신 등급은 이미지에 사용 가능한 가장 오래되고 가장 심각한 보안 정오표 수치입니다. "A"는 "F"보다 최신입니다. 이 평가 시스템에 관한 자세한 내용은 Red Hat Ecosystem Catalog 내부에서 사용되는 컨테이너 상태 색인 등급을 참조하십시오.
Red Hat 소프트웨어와 관련된 보안 업데이트 및 취약점에 관한 자세한 내용은 Red Hat 제품 보안 센터를 확인하십시오. Red Hat Security Advisories를 확인하여 특정 권고와 CVE를 검색하십시오.
2.7.4. OpenShift Container Registry
OpenShift Container Platform에는 컨테이너 이미지를 관리하는 데 사용할 수 있는 플랫폼의 통합 구성요소로 실행되는 프라이빗 레지스트리인 OpenShift Container Registry가 포함되어 있습니다. OpenShift Container Registry에서는 누가 어떤 컨테이너 이미지를 가져오고 푸시하는지 관리할 수 있는 역할 기반 액세스 제어를 제공합니다.
OpenShift Container Platform에서는 Red Hat Quay와 같이 이미 사용 중인 다른 프라이빗 레지스트리와의 통합도 지원합니다.
추가 리소스
2.7.5. Red Hat Quay를 사용하여 컨테이너 저장
Red Hat Quay는 Red Hat에서 제공하는 엔터프라이즈급 컨테이너 레지스트리 제품입니다. Red Hat Quay의 개발은 업스트림 프로젝트 Quay를 통해 수행됩니다. Red Hat Quay는 온프레미스 또는 Quay.io에서 호스팅된 Red Hat Quay 버전을 통해 배포할 수 있습니다.
Red Hat Quay의 보안 관련 기능은 다음과 같습니다.
- 타임 머신: 오래된 태그가 있는 이미지가 설정된 기간이 지난 후 만료되거나 사용자가 선택한 만료 시간에 따라 만료될 수 있습니다.
- 리포지토리 미러링: 회사 방화벽 뒤에서 Red Hat Quay에 공용 리포지토리를 호스팅하는 등의 보안상의 이유 또는 성능상의 이유로 다른 레지스트리를 미러링하여 레지스트리를 사용하는 위치에 더 가깝게 유지할 수 있습니다.
- 작업 로그 스토리지: Red Hat Quay 로깅 출력을 Elasticsearch 스토리지 또는 Splunk 에 저장하여 나중에 검색하고 분석할 수 있습니다.
- Clair: 각 컨테이너 이미지의 출처를 기반으로 다양한 Linux 취약점 데이터베이스에 대해 이미지를 스캔합니다.
- 내부 인증: 기본 로컬 데이터베이스를 사용하여 Red Hat Quay에 대한 RBAC 인증을 처리하거나 LDAP, Keystone(OpenStack), JWT 사용자 정의 인증 또는 외부 애플리케이션 토큰 인증 중에서 선택합니다.
- 외부 인증(OAuth): GitHub, GitHub Enterprise 또는 Google 인증에서 Red Hat Quay에 대한 인증을 허용합니다.
- 액세스 설정: 도커, rkt, 익명 액세스, 사용자 생성 계정, 암호화된 클라이언트 비밀번호 또는 접두사 사용자 이름 자동 완성에서 Red Hat Quay에 액세스할 수 있도록 토큰을 생성합니다.
OpenShift Container Platform과 Red Hat Quay는 지속적으로 통합되며, 특히 흥미로운 OpenShift Container Platform Operators가 여러 개 있습니다. Quay Bridge Operator 를 사용하면 내부 OpenShift 이미지 레지스트리를 Red Hat Quay로 교체할 수 있습니다. Red Hat Quay Container Security Operator 를 사용하면 Red Hat Quay 레지스트리에서 가져온 OpenShift Container Platform에서 실행되는 이미지의 취약점을 확인할 수 있습니다.