다음을 통해 공유


맬웨어 검사에 대한 응답 설정

자동화된 응답을 설정하여 악성 파일을 이동 또는 제거하거나 정리 파일을 다른 대상으로 이동/수집합니다. 시나리오 아키텍처에 맞는 기본 응답 옵션을 선택합니다.

맬웨어 검사를 사용하면 다음 검사 결과 옵션을 사용하여 자동화 응답을 빌드할 수 있습니다.

  • 클라우드용 Defender 보안 경고
  • Event Grid 이벤트
  • Blob 인덱스 태그

실습 랩을 통해 스토리지용 Defender의 맬웨어 검사 기능을 살펴보는 것이 좋습니다. 검사 결과에 대한 대응 구성을 포함하여 맬웨어 검사를 포괄적으로 설정하고 테스트하는 방법에 대한 자세한 단계별 가이드는 Ninja 학습 지침을 따릅니다. 이는 고객이 클라우드용 Microsoft Defender를 익히고 해당 기능에 대한 실무 환경을 제공하는 데 도움이 되는 '랩' 프로젝트의 일부입니다.

응답을 자동화하는 데 사용할 수 있는 몇 가지 응답 옵션은 다음과 같습니다.

ABAC(특성 기반 액세스 제어)를 사용하여 검색되지 않은 파일 또는 악성 파일에 대한 액세스 차단

Microsoft Entra ABAC(특성 기반 액세스 제어) 권한 부여를 통해 악성 및 검색되지 않은 파일에 대한 액세스를 차단할 수 있습니다. 이를 통해 검사 결과에 따라 Blob에 대한 조건부 액세스를 설정하고 애플리케이션과 사용자가 검사된 깨끗한 파일에만 액세스할 수 있습니다.

다음 비디오의 지침에 따라 설정합니다.

악성 Blob 삭제 또는 이동

코드 또는 워크플로 자동화를 통해 악성 파일을 삭제하거나 격리로 이동할 수 있습니다.

삭제 또는 이동을 위한 환경 준비

  • 악성 파일 삭제 - 자동 삭제를 설정하기 전에 스토리지 계정에서 일시 삭제를 사용하도록 설정하는 것이 좋습니다. 가양성이 있거나 보안 전문가가 악성 파일을 조사하려는 경우 파일을 “삭제 취소”할 수 있습니다.

  • 악성 파일을 격리로 이동 - 파일을 "격리"로 간주되는 전용 스토리지 컨테이너 또는 스토리지 계정으로 이동할 수 있습니다. 보안 관리자 또는 SOC 분석가와 같은 특정 사용자만 이 전용 컨테이너 또는 스토리지 계정에 액세스할 수 있는 권한을 갖도록 할 수 있습니다.

자동화 설정

옵션 1: 클라우드용 Microsoft Defender 보안 경고를 기반으로 하는 논리 앱

논리 앱 기반 응답은 응답을 설정하는 간단한 코드 없는 접근 방식입니다. 그러나 응답 시간은 이벤트 중심 코드 기반 접근 방식보다 느립니다.

  1. Azure Portal을 사용하여 DeleteBlobLogicApp ARM(Azure Resource Manager) 템플릿을 배포합니다.

  2. 배포한 논리 앱을 선택합니다.

  3. 스토리지 계정에서 Blob을 삭제할 수 있도록 논리 앱에 역할 할당을 추가합니다.

    1. 측면 메뉴에서 ID로 이동하여 Azure 역할 할당을 선택합니다.

      검사 결과에 응답하기 위해 워크플로 자동화에 대한 역할 할당을 설정하는 방법을 보여 주는 스크린샷.

    2. Storage Blob 데이터 기여자 역할을 사용하여 구독 수준에서 역할 할당을 추가합니다.

    3. 클라우드용 Microsoft Defender 경고에 대한 워크플로 자동화를 만듭니다.

      1. Azure Portal에서 클라우드용 Microsoft Defender로 이동합니다.
      2. 측면 메뉴에서 워크플로 자동화로 이동합니다.
      3. 새 워크플로 추가: 경고 이름에 다음 포함 필드에서 스토리지 계정에 업로드된 악성 파일을 입력하고 작업 섹션에서 논리 앱을 선택합니다.
      4. 만들기를 실행합니다.

      검사 결과에 응답하기 위해 워크플로 자동화를 설정하는 방법을 보여 주는 스크린샷.

옵션 2: Event Grid 이벤트를 기반으로 하는 함수 앱

함수 앱은 응답 시간이 짧은 고성능을 제공합니다.

  1. 보호된 스토리지 계정과 동일한 리소스 그룹에 함수 앱을 만듭니다.

  2. 함수 앱 ID에 대한 역할 할당을 추가합니다.

    1. 측면 메뉴에서 ID로 이동하여 시스템 할당 ID 상태가 켜져있는지 확인하고 Azure 역할 할당을 선택합니다.

    2. Storage Blob 데이터 기여자 역할을 사용하여 구독 또는 스토리지 수준에서 역할 할당을 추가합니다.

  3. Event Grid 이벤트를 사용하고 Azure 함수를 엔드포인트 유형으로 연결합니다.

  4. Azure 함수 코드를 작성할 때 미리 만든 함수 샘플인 MoveMaliciousBlobEventTrigger를 사용하거나 다른 곳에서 Blob을 복사하는 고유한 코드를 작성한 다음, 원본에서 삭제할 수 있습니다.

각 검사 결과에 대해 다음 스키마에 따라 이벤트가 전송됩니다.

이벤트 메시지 구조

이벤트 메시지는 맬웨어 검사 결과에 대한 자세한 정보를 제공하는 키-값 쌍을 포함하는 JSON 개체입니다. 이벤트 메시지의 각 키에 대한 분석은 다음과 같습니다.

  • ID: 이벤트에 대한 고유 식별자입니다.

  • 주체: 스토리지 계정에서 검색된 Blob(파일)의 리소스 경로를 설명하는 문자열입니다.

  • 데이터: 이벤트에 대한 추가 정보를 포함하는 JSON 개체입니다.

    • correlationId: 동일한 검사와 관련된 여러 이벤트의 상관 관계를 지정하는 데 사용할 수 있는 고유 식별자입니다.

    • blobUri: 스토리지 계정에서 스캔한 Blob(파일)의 URI입니다.

    • eTag: 스캔한 Blob(파일)의 ETag입니다.

      • scanFinishedTimeUtc: 검사가 완료된 UTC 타임스탬프입니다.

      • scanResultType: 검사 결과(예: "악성" 또는 "위협 없음")입니다.

      • scanResultDetails: 검사 결과에 대한 세부 정보를 포함하는 JSON 개체입니다.

        1. malwareNamesFound: 스캔한 파일에 있는 맬웨어 이름의 배열입니다.

        2. sha256: 스캔한 파일의 SHA-256 해시입니다.

  • eventType: 이벤트 유형을 나타내는 문자열(이 경우 "Microsoft.Security.MalwareScanningResult")입니다.

  • dataVersion: 데이터 스키마의 버전 번호입니다.

  • metadataVersion: 메타데이터 스키마의 버전 번호입니다.

  • eventTime: 이벤트가 생성된 시점의 UTC 타임스탬프입니다.

  • 토픽: 이벤트가 속한 Event Grid 토픽의 리소스 경로입니다.

이벤트 메시지의 예는 다음과 같습니다.

{
  "id": "52d00da0-8f1a-4c3c-aa2c-24831967356b",
  "subject": "storageAccounts/<storage_account_name>/containers/app-logs-storage/blobs/EICAR - simulating malware.txt",
  "data": {
    "correlationId": "52d00da0-8f1a-4c3c-aa2c-24831967356b",
    "blobUri": "https://<storage_account_name>.blob.core.windows.net/app-logs-storage/EICAR - simulating malware.txt",
    "eTag": "0x8DB4C9327B08CBF",
    "scanFinishedTimeUtc": "2023-05-04T11:31:54.0481279Z",
    "scanResultType": "Malicious",
    "scanResultDetails": {
      "malwareNamesFound": [
        "DOS/EICAR_Test_File"
      ],
      "sha256": "275A021BBFB6489E54D471899F7DB9D1663FC695EC2FE2A2C4538AABF651FD0F"
    }
  },
  "eventType": "Microsoft.Security.MalwareScanningResult",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-05-04T11:31:54.048375Z",
  "topic": "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.EventGrid/topics/<event_grid_topic_name>"
}

이벤트 메시지의 구조를 이해하면 맬웨어 검사 결과에 대한 관련 정보를 추출하고 그에 따라 처리할 수 있습니다.

애플리케이션 및 데이터 흐름이 맬웨어 검사 결과를 인식하게 합니다.

맬웨어 검사는 거의 실시간으로 수행되며, 일반적으로 업로드 시간과 검사 시간 사이에는 약간의 시간 간격이 있습니다. 스토리지는 비컴퓨팅이므로 스토리지에서 악성 파일이 실행될 위험이 없습니다. 위험은 사용자 또는 애플리케이션이 악성 파일에 액세스하고 조직 전체에 분산하는 것입니다.

애플리케이션 및 데이터 흐름이 맬웨어 검색 결과를 인식하도록 하고, 파일이 검색되어 결과가 사용 및 작동되기 전에 파일에 액세스/처리할 수 있는 방법이 없는지 확인하는 몇 가지 방법이 있습니다.

애플리케이션은 검사 결과에 따라 데이터를 수집합니다.

옵션 1: 처리하기 전에 "인덱스 태그"를 확인하는 앱

수집된 데이터를 가져오는 한 가지 방법은 스토리지 계정에 액세스하는 모든 애플리케이션을 업데이트하는 것입니다. 각 애플리케이션은 각 파일에 대한 검사 결과를 확인하고 Blob 인덱스 태그 검사 결과가 위협 없음인 경우 애플리케이션은 Blob을 읽습니다.

옵션 2: Event Grid 이벤트의 웹후크에 애플리케이션 연결

Event Grid 이벤트의 웹후크에 애플리케이션을 연결하고 해당 이벤트를 사용하여 위협 없음 검색 결과를 가진 파일에 대한 관련 프로세스를 트리거할 수 있습니다. 웹후크 이벤트 배달크 및 엔드포인트 유효성 검사 사용에 대해 자세히 알아봅니다.

중간 스토리지 계정을 DMZ로 사용

신뢰할 수 없는 콘텐츠(DMZ)에 대한 중간 스토리지 계정을 설정하고 트래픽을 DMZ에 직접 업로드할 수 있습니다. 신뢰할 수 없는 스토리지 계정에서 맬웨어 검사를 사용하도록 설정하고 Event Grid 및 함수 앱을 연결하여 "위협 없음" 결과로 검색된 Blob만 대상 스토리지 계정으로 이동합니다.

중간 스토리지 계정을 DMZ로 설정하는 방법을 보여 주는 다이어그램.

다음 단계

스토리지용 Microsoft Defender의 맬웨어 검사 결과를 이해하는 방법을 알아봅니다.