Cloud Storage에 업로드된 파일의 멀웨어 검사 자동화

Last reviewed 2023-05-17 UTC

이 참조 아키텍처는 트로이 목마, 바이러스, 기타 악성 코드와 같은 멀웨어의 파일 평가를 자동화하는 데 유용한 이벤트 기반 파이프라인을 빌드하는 방법을 보여줍니다. 대부분의 앱에서 Cloud Storage에 업로드된 다수의 파일을 수동으로 평가하는 작업은 시간이 오래 걸릴 있습니다. 프로세스를 자동화하면 시간을 절약하고 효율성을 개선할 수 있습니다.

이 아키텍처의 파이프라인은 오픈소스 바이러스 백신 엔진인 ClamAV와 함께 Google Cloud 제품을 사용합니다. 또한 Linux 컨테이너에서 주문형 검사를 수행하는 다른 멀웨어 방지 엔진을 사용할 수 있습니다. 이 아키텍처에서 ClamAV는 Cloud Run에서 호스팅되는 Docker 컨테이너에서 실행됩니다. 또한 파이프라인은 Cloud Logging에 로그 항목을 쓰고 Cloud Monitoring에 측정항목을 기록합니다.

아키텍처

다음 다이어그램은 아키텍처 개요를 보여줍니다.

멀웨어 검사 파이프라인의 아키텍처

아키텍처는 다음 파이프라인을 보여줍니다.

  • 사용자가 업로드한 파일 검사 파이프라인으로, 업로드된 파일에 멀웨어가 포함되어 있는지 확인합니다.
  • ClamAV 멀웨어 데이터베이스 미러 업데이트 파이프라인: ClamAV가 사용하는 멀웨어 데이터베이스의 최신 미러를 유지합니다.

파이프라인에 대한 자세한 내용은 다음 섹션을 참조하세요.

사용자 업로드 파일 스캔 파이프라인

파일 스캔 파이프라인은 다음과 같이 작동합니다.

  1. 최종 사용자가 검사되지 않은 Cloud Storage 버킷에 파일을 업로드합니다.
  2. Eventarc 서비스는 이 업로드 이벤트를 포착하고 Cloud Run 서비스에 이 새 파일을 알립니다.
  3. Cloud Run 서비스는 검사되지 않은 Cloud Storage 버킷에서 새 파일을 다운로드하여 ClamAV 멀웨어 스캐너로 전달합니다.
  4. 멀웨어 검사 결과에 따라 서비스는 다음 작업 중 하나를 수행합니다.
    • ClamAV가 파일이 정상임을 선언하면 검사되지 않은 Cloud Storage 버킷에서 클린 Cloud Storage 버킷으로 이동합니다.
    • ClamAV에서 파일에 멀웨어가 포함되어 있다고 선언하면 스캔되지 않은 Cloud Storage 버킷에서 격리된 Cloud Storage 버킷으로 이동합니다.
  5. 이 서비스는 이러한 작업의 결과를 Logging 및 Monitoring에 보고하여 관리자가 조치를 취할 수 있도록 합니다.

ClamAV 멀웨어 데이터베이스 미러링 업데이트 파이프라인

ClamAV 멀웨어 데이터베이스 미러 업데이트 파이프라인은 Cloud Storage에서 데이터베이스의 최신 비공개 로컬 미러를 유지합니다. 이렇게 하면 ClamAV 공개 데이터베이스가 업데이트당 한 번만 액세스하여 더 작은 차등 업데이트 파일을 다운로드하고 전체 데이터베이스는 다운로드하지 않으므로 비율 제한이 방지됩니다.

이 파이프라인은 다음과 같이 작동합니다.

  1. Cloud Scheduler 작업은 2시간마다 트리거되도록 구성됩니다. 이는 ClamAV freshclam 서비스에서 사용하는 기본 업데이트 확인 간격과 동일합니다. 이 작업은 Cloud Run 서비스에 HTTP POST 요청을 수행하여 멀웨어 데이터베이스 미러를 업데이트하도록 지시합니다.
  2. Cloud Run 인스턴스는 멀웨어 데이터베이스 미러를 Cloud Storage 버킷에서 로컬 파일 시스템으로 복사합니다.
  3. 그런 다음 인스턴스에서 ClamAV CVDUpdate 도구를 실행하여 사용 가능한 차등 업데이트를 다운로드하고 데이터베이스 미러에 적용합니다.
  4. 그런 다음 업데이트된 멀웨어 데이터베이스 미러를 다시 Cloud Storage 버킷으로 복사합니다.

시작 시 Cloud Run 인스턴스에서 실행되는 ClamAV refreshclam 서비스는 Cloud Storage에서 멀웨어 데이터베이스를 다운로드합니다. 또한 런타임 중에 이 서비스는 Cloud Storage 버킷에서 사용 가능한 데이터베이스 업데이트를 정기적으로 확인하고 다운로드합니다.

설계 고려사항

다음 가이드라인은 신뢰성, 비용, 운영 효율성에 대한 조직의 요구사항을 충족하는 아키텍처를 개발하는 데 도움이 될 수 있습니다.

신뢰성

효과적인 스캔을 위해 ClamAV 멀웨어 스캐너는 멀웨어 서명에 대해 최신 데이터베이스를 유지해야 합니다. ClamAV 서비스는 스테이트리스(Stateless) 서비스인 Cloud Run을 사용하여 실행됩니다. 서비스 인스턴스를 시작할 때 ClamAV는 항상 수백 MB의 최신 전체 멀웨어 데이터베이스를 다운로드해야 합니다.

ClamAV용 공개 멀웨어 데이터베이스는 다운로드 속도를 제한하는 콘텐츠 배포 네트워크(CDN)에서 호스팅됩니다. 여러 인스턴스가 시작되고 전체 데이터베이스를 다운로드하려고 하면 비율 제한이 트리거될 수 있습니다. 이렇게 하면 Cloud Run에서 사용하는 외부 IP 주소가 24시간 동안 차단됩니다. 이렇게 하면 ClamAV 서비스가 시작되지 않을 뿐만 아니라 멀웨어 데이터베이스 업데이트 다운로드가 방지됩니다.

또한 Cloud Run은 외부 IP 주소의 공유 풀을 사용합니다. 따라서 다른 프로젝트의 멀웨어 검사 인스턴스에서 다운로드하는 것은 CDN에서 단일 주소에서 오는 것으로 간주하여 차단을 트리거합니다.

비용 최적화

이 아키텍처에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.

운영 효율성

감염된 파일에 대해 로그 기반 알림을 트리거하려면 Logging의 로그 항목을 사용하면 됩니다. 하지만 이러한 알림 설정은 이 아키텍처에서 다루지 않습니다.

배포

이 아키텍처를 배포하려면 Cloud Storage에 업로드된 파일에 대해 자동 멀웨어 검사 배포를 참조하세요.

다음 단계