보안 VM의 무결성 모니터링

이 주제에서는 Cloud Monitoring을 사용하여 무결성 모니터링이 사용 설정된 보안 VM 인스턴스의 부팅 무결성을 모니터링하고 무결성 확인 실패의 원인을 파악하며 무결성 정책 기준을 업데이트하는 방법에 대해 설명합니다.

Monitoring을 사용하여 VM 부팅 무결성 모니터링

Cloud Monitoring을 사용하여 무결성 확인 이벤트를 확인하고 이벤트 알림을 설정하며, Cloud Logging을 사용하여 이벤트의 세부정보를 검토합니다.

무결성 확인 이벤트 보기

측정항목 탐색기를 사용하여 모니터링 리소스의 측정항목을 확인하려면 다음을 수행하세요.

  1. Google Cloud 콘솔의 탐색 패널에서 Monitoring을 선택한 후 측정항목 탐색기를 선택합니다.

    측정항목 탐색기로 이동

  2. 측정항목 요소에서 측정항목 선택 메뉴를 펼치고 필터 표시줄에 Boot Validation을 입력한 후 하위 메뉴를 사용하여 특정 리소스 유형과 측정항목을 선택합니다.
    1. 활성 리소스 메뉴에서 VM 인스턴스를 선택합니다.
    2. 활성 측정항목 카테고리 메뉴에서 인스턴스를 선택합니다.
    3. 활성 측정항목 메뉴에서 Early Boot Validation 또는 Late Boot Validation을 선택합니다.
      • Early Boot Validation: 마지막 부팅 시퀀스 중 초기 부팅 부분의 성공/실패 상태를 보여줍니다. 초기 부팅은 UEFI 펌웨어가 시작되어 부트로더에 제어권을 넘길 때까지의 부팅 시퀀스입니다.
      • Late Boot Validation: 마지막 부팅 시퀀스 중 후기 부팅 부분의 성공/실패 상태를 보여줍니다. 후기 부팅은 부트로더가 실행된 후 완료될 때까지의 부팅 시퀀스입니다. 여기에는 운영체제 커널을 로드하는 과정이 포함됩니다.
    4. 적용을 클릭합니다.
  3. 디스플레이에서 시계열을 삭제하려면 필터 요소를 사용합니다.

  4. 시계열을 조합하려면 집계 요소의 메뉴를 사용합니다. 예를 들어 VM의 CPU 사용률을 영역에 따라 표시하려면 첫 번째 메뉴를 평균으로, 두 번째 메뉴를 영역으로 설정합니다.

    집계 요소의 첫 번째 메뉴가 집계되지 않음으로 설정되면 모든 시계열이 표시됩니다. 집계 요소 기본 설정은 선택한 측정항목 유형에 따라 결정됩니다.

  5. 하루에 샘플 하나를 보고하는 할당량과 기타 측정항목의 경우 다음을 수행합니다.
    1. 표시 창에서 위젯 유형누적 막대 그래프로 설정합니다.
    2. 기간을 최소 1주일로 설정합니다.

무결성 확인 이벤트 알림 설정

VM 인스턴스에서 부팅 확인에 실패할 경우 알림을 받으려면 Early Boot ValidationLate Boot Validation 측정항목의 값에 대한 알림을 설정합니다. 알림에 대한 자세한 내용은 알림 소개를 참조하세요.

무결성 확인 이벤트 세부정보 보기

  1. VM 인스턴스 페이지로 이동
  2. 인스턴스 ID를 클릭하여 VM 인스턴스 세부정보 페이지를 엽니다.
  3. 로그에서 Cloud Logging을 클릭합니다.
  4. 검토하려는 earlyBootReportEvent 또는 lateBootReportEvent 로그 항목을 찾습니다.
  5. 로그 항목 > jsonPayload > earlyBootReportEvent 또는 lateBootReportEvent 중 해당하는 항목을 펼칩니다. 해당 섹션 내에서 policyEvaluationPassed 요소는 부팅 시퀀스의 특정 섹션이 무결성 정책 기준에 따른 확인을 통과했는지 여부를 나타냅니다.
  6. actualMeasurements 섹션과 이 섹션 내의 번호가 매겨진 요소를 펼쳐 최근 부팅 시퀀스에서 저장된 플랫폼 구성 등록(PCR) 값을 확인합니다. PCR 값은 번호가 매겨진 요소 내의 value 요소에 저장됩니다. PCR 값은 최근 부팅 시퀀스에 사용된 부팅 구성요소와 구성요소 로드 순서를 식별하며, 이 값을 무결성 정책 기준과 비교하면 VM 인스턴스 부팅 시퀀스에 변경사항이 있는지 확인할 수 있습니다. PCR이 나타내는 정보에 대한 자세한 내용은 무결성 모니터링 이벤트를 참조하세요.
  7. policyMeasurements 섹션을 펼쳐 무결성 정책 기준에 대해 저장된 PCR 값을 확인합니다.

무결성 확인 이벤트에 대한 응답 자동화

Cloud Logging 로그를 내보낸 후 이를 Cloud Functions 같은 다른 서비스에서 처리하여 부팅 확인 이벤트에 대한 응답을 자동화할 수 있습니다. 자세한 내용은 라우팅 및 스토리지 개요무결성 확인 실패에 대한 응답 자동화를 참조하세요.

부팅 무결성 확인 실패의 원인 확인

  1. VM 인스턴스 페이지로 이동
  2. 인스턴스 ID를 클릭하여 VM 인스턴스 세부정보 페이지를 엽니다.
  3. 로그에서 Cloud Logging을 클릭합니다.
  4. 가장 최근의 earlyBootReportEventlateBootReportEvent 로그 항목을 찾아 어느 항목의 policyEvaluationPassed 값이 false인지 확인합니다.
  5. 로그 항목 > jsonPayload > earlyBootReportEvent 또는 lateBootReportEvent 중 해당하는 항목을 펼칩니다.
  6. actualMeasurementspolicyMeasurements 섹션과 이러한 섹션 내의 번호가 매겨진 요소를 펼쳐 각각 최근 부팅 시퀀스에서 저장된 플랫폼 구성 등록(PCR) 값과 무결성 정책 기준을 확인합니다. PCR 값은 최근 부팅 시퀀스와 무결성 정책 기준에 사용된 부팅 구성요소와 구성요소 로드 순서를 식별합니다.
  7. actualMeasurements 섹션과 policyMeasurements 섹션의 PCR 값을 비교하여 최근 부팅 시퀀스와 무결성 정책 기준 사이에 변동이 발생했는지 확인합니다. 비교 결과 값이 상이한 것으로 나타나는 요소가 확인 실패의 원인이 되는 문제입니다. 이러한 섹션의 요소 번호는 PCR 번호와 일치하는 경우가 거의 없으며 actualMeasurementspolicyMeasurements에서 비슷하게 번호가 매겨진 요소가 서로 다른 PCR을 나타낼 수도 있습니다. 예를 들어 Windows와 Linux 모두의 초기 부팅 시퀀스에서 actualMeasurements3 요소와 policyMeasurements2 요소는 모두 PCR7을 나타냅니다.

  8. 무결성 모니터링 이벤트를 검사하여 변경된 PCR이 나타내는 사항을 확인하고 이것이 예상된 변경사항인지 조사합니다.

무결성 정책 기준 업데이트

초기 무결성 정책 기준은 인스턴스 생성 시 암시적으로 신뢰할 수 있는 부팅 이미지에서 파생됩니다. 이 기준을 업데이트하면 현재 인스턴스 구성을 사용하여 무결성 정책 기준이 업데이트됩니다. 기준을 업데이트할 때는 VM 인스턴스가 실행되고 있어야 합니다.

인스턴스 구성에서 커널 업데이트 또는 커널 드라이버 설치와 같은 계획된 부팅 관련 변경사항이 발생한 후에는 이로 인해 무결성 확인에 실패하게 되므로 기준을 업데이트해야 합니다. 예기치 않은 무결성 검증 실패가 발생한 경우 실패 이유를 조사하고 필요하다면 인스턴스를 중지할 준비가 되어 있어야 합니다.

무결성 정책 기준을 업데이트하려면 setShieldedInstanceIntegrityPolicy 권한이 있어야 합니다.

무결성 정책 기준을 업데이트하려면 다음 절차를 따르세요.

gcloud

--shielded-learn-integrity-policy 플래그와 함께 compute instances update 명령어를 사용하여 VM 인스턴스의 무결성 정책 기준을 업데이트합니다.

다음 예시에서는 my-instance VM 인스턴스의 무결성 정책 기준을 재설정합니다.

gcloud compute instances update my-instance \
    --shielded-learn-integrity-policy

API

setShieldedInstanceIntegrityPolicy 메서드와 함께 updateAutoLearnPolicy 요청 본문 항목을 사용하여 VM 인스턴스의 무결성 정책 기준을 업데이트합니다.

다음 예시에서는 VM 인스턴스의 무결성 정책 기준을 재설정합니다.

PATCH https://compute.googleapis.com/compute/alpha/projects/my-project/zones/us-central1-b/instances/my-instance/setShieldedInstanceIntegrityPolicy?key={YOUR_API_KEY}
{
  "updateAutoLearnPolicy": true
}

다음 단계