보안 VM의 무결성 모니터링

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

시작하기 전에

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

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

무결성 확인 이벤트 보기

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

  1. Google Cloud Console 탐색 창에서 Monitoring을 선택합니다.
    Google Cloud Console로 이동

    이 Google Cloud 프로젝트의 Cloud Monitoring에 처음 액세스하면 Cloud Monitoring이 작업공간을 만듭니다. 일반적으로 이 프로세스는 자동으로 진행되며 몇 분 내에 완료됩니다. 작업공간을 선택하거나 작업공간을 만들라는 메시지가 표시되면 만들기를 선택합니다.

  2. Monitoring 탐색창에서 측정항목 탐색기를 클릭합니다.
  3. 측정항목 탭을 선택했는지 확인합니다.
  4. 리소스 유형 및 측정항목 찾기 라벨이 지정된 상자에서 클릭하고 메뉴에서 선택하거나 리소스 및 측정항목의 이름을 입력합니다. 다음 정보를 사용하여 이 텍스트 상자의 필드를 입력합니다.
    1. 리소스gce_instance를 선택하거나 입력합니다.
    2. 측정항목에 다음 측정항목 중 하나를 선택합니다.
      • Early Boot Validation: 마지막 부팅 시퀀스 중 초기 부팅 부분의 성공/실패 상태를 보여줍니다. 초기 부팅은 UEFI 펌웨어가 시작되어 부트로더에 제어권을 넘길 때까지의 부팅 시퀀스입니다.
      • Late Boot Validation: 마지막 부팅 시퀀스 중 후기 부팅 부분의 성공/실패 상태를 보여줍니다. 후기 부팅은 부트로더가 실행된 후 완료될 때까지의 부팅 시퀀스입니다. 여기에는 운영체제 커널을 로드하는 과정이 포함됩니다.
  5. 필터, 그룹화 기준, 애그리게이터 메뉴를 사용하여 데이터 표시 방법을 수정합니다. 예를 들어 리소스 또는 측정항목 라벨별로 그룹화할 수 있습니다. 자세한 내용은 측정항목 선택을 참조하세요.

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

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
}

다음 단계