위험 요소: 배포됨

배포된 모든 코드는 애플리케이션 및 비즈니스에 대한 악용 리스크를 높입니다.

어떤 코드가 어디에 배포되어 있는지 이해하면 실행 중인 코드로부터 리스크 표면적을 줄이는 해결 전략을 채택할 수 있습니다.

통합 유형

배포됨(Deployed) 리스크 요인은 Kubernetes 커넥터, Snyk 런타임 센서(Runtime Sensor) 및 타사 통합과 함께 작동합니다.

Kubernetes 커넥터

Snyk은 Kubernetes 클러스터에서 실행 중인 이미지와 생성된 Snyk Container 프로젝트 간의 일치 여부를 확인하여 컨테이너 이미지가 배포되었는지 확인합니다.

Snyk은 Kubernetes 상태 정보를 사용하여 실행 중인 Docker 이미지 식별자를 추출합니다. Kubernetes 컨테이너의 상태에는 Kubernetes 런타임에 의해 실행 중인 이미지 이름이 포함되어 있습니다. 알려진 Docker 이미지 데이터베이스에서 일치하는 이름을 찾기 위해 검색을 수행합니다. 이미지 이름이 일치하면 Snyk은 이 정보를 그래프로 표시할 수 있습니다. 그래프는 이미지와 컨테이너 간의 관계를 보여줍니다.

배포된 이미지의 취약점
배포된 이미지의 취약점

Kubernetes는 이미지 관리 방식에 대해 매우 구체적arrow-up-right입니다. Snyk은 Snyk이 알고 있는 이미지를 매핑하기 위해 동일한 논리를 사용합니다. Snyk Container로 이미지를 스캔할 때마다 Snyk은 이미지 이름과 이미지 ID에 대한 정보를 수집합니다. Snyk은 이 정보를 사용하여 이미지를 Kubernetes의 정보와 매핑합니다.

circle-info

Snyk은 Kubernetes와의 일관성을 보장하기 위해 Kubernetesarrow-up-rightDocker 이미지arrow-up-right에 대해 문서화된 명명 표준을 준수합니다.

명명 표준
명명 표준

다음 예시들을 고려해 보십시오.

Kubernetes 매니페스트에 사용자가 제공한 이름
매핑에 사용된 이름
변경 여부 (예/아니요)

gcr.io/my-company/my-app:production

gcr.io/my-company/my-app:production

아니요

gcr.io/my-company/my-app:latest

gcr.io/my-company/my-app:latest

아니요

gcr.io/my-company/my-app

gcr.io/my-company/my-app:latest

예 - latest 태그가 추가됨

my-app

docker.io/my-app/my-app:latest

예 - 기본 Docker 공개 레지스트리로 설정되고 latest 태그가 추가됨

매핑은 다음 우선순위를 사용하며, 첫 번째 단계는 적어도 하나의 Snyk Container 프로젝트에 대해 통과해야 하고 후속 단계에서 매핑을 추가로 검증합니다.

  1. 이미지 이름 일치 (예: gcr.io/my-company/my-app:latest).

  2. 이미지 다이제스트(digest) 일치.

  3. 이미지 다이제스트별로 Snyk Container 프로젝트 그룹화.

다음 예시들을 고려해 보십시오.

예시 1: Snyk Container CLI 사용

결과: 이미지 매핑 성공 및 리스크 요인 적용

이미지 매핑됨
이미지 매핑됨

컨테이너 이미지는 Snyk Container CLI만 사용하여 스캔되며, 레지스트리를 포함한 이미지의 전체 이름을 참조합니다. Snyk은 이미지가 빌드된 후 클러스터에 배포되기 전에 이 작업을 수행할 것을 권장합니다.

스캔 예시는 다음과 같습니다.

$ snyk container monitor gcr.io/my-company/my-app:latest

이미지는 다음 매니페스트 예시와 함께 Kubernetes 클러스터에 배포됩니다.

spec:

containers:

- name: my-app

image: gcr.io/my-company/my-app:latest

이를 통해 Insights는 이미지 이름을 성공적으로 매핑하고 이 Snyk Container 프로젝트와 연관된 모든 이슈에 배포됨(Deployed) 리스크 요인을 적용할 수 있습니다.

예시 2: Snyk Container CLI 및 컨테이너 레지스트리 사용

결과: 이미지 매핑 성공 및 리스크 요인 적용

이름 매핑
이름 매핑

컨테이너 이미지는 컨테이너 레지스트리를 생략한 부분 이름(partial name)을 참조하여 스캔됩니다.

스캔 예시는 다음과 같습니다.

$ snyk container monitor my-app:latest

이름이 일치하지 않으므로 Insights는 이 프로젝트를 매핑할 수 없습니다.

이미지는 다음 매니페스트 예시와 함께 Kubernetes 클러스터에 배포됩니다.

spec:

containers:

- name: my-app

image: gcr.io/my-company/my-app:latest

또한 동일한 이미지가 컨테이너 레지스트리에 의해 스캔됩니다.

이는 레지스트리를 포함한 이미지의 전체 이름으로 프로젝트를 생성하여 매핑이 가능하게 합니다.

여기에는 이미지 다이제스트도 포함됩니다.

그러면 Insights는 모든 Snyk Container 프로젝트를 이미지 다이제스트별로 그룹화할 수 있으며, 컨테이너 레지스트리 프로젝트를 통해 부분 이름을 가진 CLI 프로젝트에 대한 배포 매핑이 가능해집니다.

이를 통해 Insights는 두 Snyk Container 프로젝트를 모두 성공적으로 매핑하고 해당 프로젝트와 연관된 모든 이슈에 배포됨(Deployed) 리스크 요인을 적용할 수 있습니다.

circle-info

Snyk은 CLI 명령에서 항상 이미지의 전체 이름을 지정할 것을 권장합니다. 그렇게 할 수 없는 경우, Snyk은 두 번째 통합을 사용하여 동일한 이미지를 스캔할 것을 권장합니다.

Snyk 런타임 센서 (Snyk Runtime Sensor)

Snyk 런타임 센서는 Kubernetes 클러스터 내의 활성 컨테이너를 지속적으로 모니터링하여 배포됨(Deployed) 리스크 요인을 적용합니다. 이는 실시간 Kubernetes 이벤트를 캡처하고 매시간 클러스터 상태의 스냅샷을 찍어 수행됩니다. 이러한 실시간 데이터와 스냅샷은 현재 어떤 이미지가 배포되어 있는지 식별하는 데 도움이 됩니다. 이 정보를 Snyk 프로젝트 및 알려진 취약점과 비교함으로써, Snyk 런타임 센서는 배포된 리스크를 정확하게 평가합니다. 이를 통해 보안 인사이트가 최신 상태를 유지하고 현재 배포 환경을 반영하도록 보장합니다.

타사 통합

배포됨(Deployed) 리스크 요인은 외부 소스의 데이터와 함께 Kubernetes 클러스터의 실시간 모니터링을 통해 타사 통합으로 확장됩니다. 이를 통해 다양한 환경에서 배포된 리스크를 포괄적으로 평가할 수 있습니다. 타사 도구와 통합함으로써 Snyk은 다양한 소스의 취약점을 교차 참조하여 배포된 리스크 요인이 가장 정확하고 현재의 위협 환경을 반영하도록 보장할 수 있습니다. 이러한 총체적인 접근 방식을 통해 Snyk은 실행 가능한 인사이트를 제공하고 모든 통합 플랫폼에서 강력한 보안 태세를 유지할 수 있습니다.

Snyk Insights 배포됨(Deployed) 리스크 요인에 대한 기술적 세부 정보

Kubernetes 커넥터는 Kubernetes 이벤트를 지속적으로 모니터링합니다. 이러한 이벤트는 Snyk 플랫폼으로 계속 스트리밍됩니다.

정기적인 일정(매시간)에 따라 데이터 파이프라인은 클러스터 상태의 조정을 수행하여 스냅샷을 생성합니다. 이 스냅샷은 클러스터에서 어떤 이미지가 실행되고 있는지 판단하는 데 사용됩니다.

동일한 간격으로 데이터 파이프라인은 모든 Snyk 프로젝트와 데이터 소스의 스냅샷을 찍어 패키지와 이미지를 추정합니다. 이 스냅샷은 특정 고객에 대해 어떤 이미지와 패키지가 Snyk에 알려져 있는지 판단하는 데 사용됩니다.

그 다음 두 스냅샷이 비교되고, 해당 시점의 배포된 사실을 결정하기 위해 증거 그래프(evidence graphs)가 생성됩니다.

Last updated