보호된 VM

보안 설정된 VM은 Compute Engine VM 인스턴스의 검증 가능한 무결성을 제공하므로, 부팅 또는 커널 수준의 멀웨어루트킷으로 인한 침해로부터 인스턴스의 안전을 보장합니다. 보안 설정된 VM의 검증 가능한 무결성은 안전한 부팅, vTPM(virtual Trusted Platform Module)이 지원되는 신중한 부팅, 무결성 모니터링 등을 통해 얻을 수 있습니다.

보안 설정된 VM은 보호된 클라우드 이니셔티브의 첫 번째 제품입니다. 보호된 클라우드 이니셔티브는 검증 가능한 무결성을 보장하고 데이터 유출을 방지하는 vTPM 실딩 또는 실링과 같은 기능을 제공하여 모든 Google Cloud Platform(GCP)을 위한 더욱 안전한 기반을 마련하는 데 목적이 있습니다.

안전한 부팅

안전한 부팅에서는 모든 부팅 구성요소의 디지털 서명을 확인하고 서명 확인에 실패할 경우 부팅 프로세스를 중단하여 시스템에서 인증된 소프트웨어만 실행하도록 보장합니다.

보안 설정된 VM 인스턴스는 Google 인증 기관으로 서명 및 확인된 펌웨어를 실행하여 인스턴스의 펌웨어가 수정되지 않았음을 확인하고 안전한 부팅의 신뢰 루트를 구축합니다. 안전한 부팅에서는 UEFI(Unified Extensible Firmware Interface) 2.3.1 펌웨어를 사용해 시스템 펌웨어, 시스템 부팅 로더, 로드되는 모든 바이너리의 서명을 위해 소프트웨어 제조업체에서 사용되는 키를 안전하게 저장합니다. 부팅 시퀀스가 진행되는 동안 UEFI 펌웨어에서는 승인된 키의 데이터베이스를 바탕으로 각 부팅 구성요소의 디지털 서명을 확인합니다. 정상적으로 서명되지 않았거나 아예 서명이 없는 부팅 구성요소는 모두 실행이 허용되지 않습니다.

이러한 경우, VM 인스턴스에서 GCP Console에 오류 상태를 표시하고 VM 인스턴스의 직렬 콘솔 로그에는 실패한 부팅 옵션에 대한 설명과 함께 UEFI: Failed to load imageStatus: Security Violation 문자열이 포함된 항목이 있습니다. 실패 문제를 해결하려면 보안 설정된 VM 옵션 수정의 안내에 따라 안전한 부팅을 사용 중지하고 VM 인스턴스를 부팅해 문제를 진단 및 해결한 후 안전한 부팅을 다시 사용 설정하면 됩니다.

vTPM(Virtual Trusted Platform Module)

vTPM은 가상화된 신뢰할 수 있는 플랫폼 모듈로서 키 및 인증서 등 시스템 액세스 인증에 사용하는 객체를 보호하는 데 사용할 수 있는 특수한 컴퓨터 칩입니다. 보안 설정된 VM vTPM은 TPM(Trusted Computing Group) 라이브러리 사양 2.0과 완벽하게 호환되며 FIPS 140-2 L1 인증을 받은 BoringSSL을 사용합니다.

보안 설정된 VM vTPM에서는 무결성 정책 기준이라 하는 알려진 정상 부팅 기준을 만드는 데 필요한 측정을 수행하여 신중한 부팅을 사용 설정합니다. 무결성 정책 기준은 이후 VM 부팅의 측정과 비교해 변경된 사항이 있는지 확인하는 데 사용됩니다.

vTPM을 사용해 실딩 또는 실링으로 비밀번호를 보호할 수도 있습니다. vTPM을 이 같은 용도로 사용하는 방법을 보여주는 Go 언어의 예는 GitHub의 Go-TPM 프로젝트를 참조하세요.

신중한 부팅

신중한 부팅 중에는 아래 그림과 같이 각 구성요소(예: 펌웨어, 부트로더, 커널)의 해시가 로드되는 구성요소로 생성되고 해당 해시는 이후 이미 로드된 구성요소의 해시와 연결되어 다시 해시 처리됩니다.

신중한 부팅 프로세스

이 정보로 로드된 구성요소와 로드 순서를 알 수 있습니다.

VM 인스턴스를 처음으로 부팅하면 신중한 부팅에서 첫 번째 측정 세트를 바탕으로 무결성 정책 기준을 만들고 이 데이터를 안전하게 저장합니다. 이후 VM 인스턴스가 부팅될 때마다 측정을 다시 수행해 다음 재부팅 시까지 안전한 메모리에 저장합니다. 이 2개의 측정 세트를 통해 지원되는 무결성 모니터링으로 VM 인스턴스의 부팅 시퀀스에 변경사항이 있는지 확인할 수 있습니다.

무결성 모니터링

무결성 모니터링은 VM 인스턴스의 상태를 파악하고 결정을 내리도록 도와줍니다.

무결성 모니터링에서는 플랫폼 구성 등록(PCR)을 사용해 무결성 정책 기준(알려진 정상 부팅 시퀀스) 및 최근 부팅 시퀀스의 구성요소와 구성요소 로드 순서에 대한 정보를 저장하는 신중한 부팅에 의해 생성된 측정을 사용합니다.

무결성 모니터링은 최신 부팅 측정을 무결성 정책 기준과 비교하고 일치 여부에 따라 이전 부팅 시퀀스와 이후 부팅 시퀀스로 이루어진 한 쌍의 성공/실패 결과를 반환합니다. 이전 부팅은 UEFI 펌웨어가 시작되어 부트로더에 제어권을 넘길 때까지의 부팅 시퀀스입니다. 이후 부팅은 부트로더에서 운영체제 커널에 제어권을 넘길 때까지의 부팅 시퀀스입니다. 최신 부팅 시퀀스의 이전 또는 이후 부팅 중 하나라도 기준과 일치하지 않으면 무결성 확인에 실패하게 됩니다.

예를 들어 VM 인스턴스에 시스템 업데이트를 적용해 실패가 예상되는 경우 무결성 정책 기준을 업데이트해야 합니다. 무결성 정책 기준을 업데이트하면 기준이 최근 부팅 시퀀스에서 캡처된 측정으로 설정됩니다. 예상된 상황이 아니라면 VM 인스턴스를 중지하고 실패 원인을 조사해야 합니다.

Stackdriver Monitoring에서 무결성 보고서를 보고 무결성 실패에 대한 알림을 설정할 수 있습니다. 무결성 모니터링 결과의 세부정보를 Stackdriver Logging에서 검토할 수 있습니다. 자세한 내용은 보안 설정된 VM 인스턴스의 무결성 모니터링을 참조하세요.

무결성 모니터링 이벤트

보안 설정된 VM은 다음과 같은 이벤트 유형의 로그 항목을 생성합니다.

  • clearTPMEvent: vTPM이 삭제되어 저장되어 있던 비밀번호가 모두 삭제되었는지 식별합니다. 보안 설정된 VM에는 어떤 측면으로도 영향을 미치지 않으므로 vTPM(Virtual Trusted Platform Module)의 설명대로 vTPM을 사용해 민감한 데이터를 실딩하는 경우 이것만 신경 쓰면 됩니다.
  • earlyBootReportEvent: 이전 부팅 시퀀스 무결성 확인에 성공했는지 여부를 식별하고 확인을 위해 비교된 기준 및 최근 부팅 시퀀스의 PCR 값에 대한 세부정보를 제공합니다.
  • lateBootReportEvent: 이후 부팅 시퀀스 무결성 확인에 성공했는지 여부를 식별하고 확인을 위해 비교된 기준 및 최근 부팅 시퀀스의 PCR 값에 대한 세부정보를 제공합니다.
  • setShieldedVmIntegrityPolicy: 무결성 정책 기준을 업데이트할 때마다 로깅합니다.
  • shutdownEvent: VM 인스턴스가 중지될 때마다 로깅합니다.
  • startupEvent: VM 인스턴스가 시작될 때마다 로깅합니다. 이 이벤트에서 주목해야 할 정보는 인스턴스가 다시 시작된 횟수를 식별하는 bootCounter 값입니다.
  • updateShieldedVmConfig: 보안 설정된 VM 옵션 중 하나를 사용 설정 또는 사용 중지할 때마다 로깅합니다.

로그에 표시되는 일반적인 이벤트 진행 과정은 startupEvent, earlyBootReportEvent, lateBootReportEvent, shutdownEvent이며 동일한 VM 인스턴스 부팅 시퀀스의 설명으로 식별되도록 모두 같은 bootCounter 값이 사용됩니다.

VM 인스턴스의 무결성 실패가 예상되어 무결성 정책 기준을 업데이트하는 경우 새로운 무결성 정책 기준 측정을 설명하는 earlyBootReportEventlateBootReportEvent 이벤트가 추가로 표시됩니다. 다음 예에서는 예상 시퀀스를 보여줍니다.

  • startupEvent
  • earlyBootReportEvent: 원래 기준과 최신 부팅 시퀀스(성공)를 비교합니다.
  • lateBootReportEvent: 원래 기준과 최신 부팅 시퀀스(실패)를 비교합니다.
  • setShieldedVmIntegrityPolicy: 무결성 정책 기준을 업데이트하여 기준을 최신 부팅 시퀀스에서 캡처된 측정으로 설정합니다.
  • earlyBootReportEvent: 새 기준과 최신 부팅 시퀀스(성공)를 비교합니다.
  • lateBootReportEvent: 새 기준과 최신 부팅 시퀀스(실패)를 비교합니다.

기간

earlyBootReportEvent

earlyBootReportEvent의 중요한 정보는 다음 섹션과 요소가 포함된 earlyBootReportEvent 섹션에 있습니다.

  • actualMeasurements: 최신 부팅 시퀀스의 플랫폼 구성 등록(PCR) 값을 포함합니다. PCR 값에서는 최신 부팅 시퀀스에서 사용한 부팅 구성요소 및 구성요소 로드 순서를 식별하며 VM 인스턴스 부팅 시퀀스에 변경사항이 있었는지 확인하기 위해 이 값을 무결성 정책 기준(값은 policyMeasurements 섹션에서 캡처)과 비교합니다. actualMeasurements 섹션에는 다음 요소가 포함되어 있습니다.

    • 0: 펌웨어 구성요소 관련 정보가 담긴 PCR0 값을 포함합니다. 이 PCR은 구현되지 않으며 대신 정적 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 1: UEFI 부팅 관리자 코드 및 부팅 시도 관련 정보가 담긴 PCR4 값을 포함합니다.
    • 2: 디스크의 GUID 파티션 테이블 관련 정보가 담긴 PCR5 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 3: 인스턴스의 안전한 부팅 정책 관련 정보가 담긴 PCR7 값을 포함합니다.
  • policyEvaluationPassed: 부팅 시퀀스의 특정 섹션이 무결성 정책 기준 확인을 통과했는지 여부를 식별합니다.

  • policyMeasurements: 무결성 정책 기준의 PCR 값을 포함합니다. policyMeasurements 섹션에는 다음 요소가 포함되어 있습니다.

    • 0: 펌웨어 구성요소 관련 정보가 담긴 PCR0 값을 포함합니다. 이 PCR은 구현되지 않으며 대신 정적 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 1: UEFI 부팅 관리자 코드 및 부팅 시도 관련 정보가 담긴 PCR4 값을 포함합니다.
    • 2: 인스턴스의 안전한 부팅 정책 관련 정보가 담긴 PCR7 값을 포함합니다.

earlyBootReportEvent PCR 값을 사용하여 부팅 무결성 확인 실패를 진단하는 방법에 대해서는 부팅 무결성 확인 실패의 원인 파악을 참조하세요.

lateBootReportEvent

lateBootReportEvent의 중요한 정보는 다음 섹션과 요소가 포함된 lateBootReportEvent 섹션에 있습니다.

  • actualMeasurements: 최신 부팅 시퀀스의 플랫폼 구성 등록(PCR) 값을 포함합니다. PCR 값에서는 최신 부팅 시퀀스에서 사용한 부팅 구성요소 및 구성요소 로드 순서를 식별하며 VM 인스턴스 부팅 시퀀스에 변경사항이 있었는지 확인하기 위해 이 값을 무결성 정책 기준(값은 policyMeasurements 섹션에서 캡처)과 비교합니다. actualMeasurements 섹션에는 다음 요소가 포함되어 있습니다.

    • 0: 펌웨어 구성요소 관련 정보가 담긴 PCR0 값을 포함합니다. 이 PCR은 구현되지 않으며 대신 정적 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 1: UEFI 부팅 관리자 코드 및 부팅 시도 관련 정보가 담긴 PCR4 값을 포함합니다.
    • 2: 디스크의 GUID 파티션 테이블 관련 정보가 담긴 PCR5 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 3: 인스턴스의 안전한 부팅 정책 관련 정보가 담긴 PCR7 값을 포함합니다.
    • 4: BitLocker Drive Encryption 액세스 제어 관련 정보가 담긴 PCR11 값을 포함합니다.
    • 5: 데이터 이벤트 관련 정보가 담긴 PCR12 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 6: Windows 커널 및 부팅 드라이버 관련 정보가 담긴 PCR13 값을 포함합니다.
    • 7: Windows 부팅 권한 관련 정보가 담긴 PCR14 값을 포함합니다.
  • policyEvaluationPassed: 부팅 시퀀스의 특정 섹션이 무결성 정책 기준 확인을 통과했는지 여부를 식별합니다.

  • policyMeasurements: 무결성 정책 기준의 PCR 값을 포함합니다. policyMeasurements 섹션에는 다음 요소가 포함되어 있습니다.

    • 0: 펌웨어 구성요소 관련 정보가 담긴 PCR0 값을 포함합니다. 이 PCR은 구현되지 않으며 대신 정적 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 1: UEFI 부팅 관리자 코드 및 부팅 시도 관련 정보가 담긴 PCR4 값을 포함합니다.
    • 2: 인스턴스의 안전한 부팅 정책 관련 정보가 담긴 PCR7 값을 포함합니다.
    • 3: BitLocker Drive Encryption 액세스 제어 관련 정보가 담긴 PCR11 값을 포함합니다.
    • 4: Windows 커널 및 부팅 드라이버 관련 정보가 담긴 PCR13 값을 포함합니다.
    • 5: Windows 부팅 권한 관련 정보가 담긴 PCR14 값을 포함합니다.

lateBootReportEvent PCR 값을 사용하여 부팅 무결성 확인 실패를 진단하는 방법에 대해서는 부팅 무결성 확인 실패의 원인 파악을 참조하세요.

Linux

earlyBootReportEvent

earlyBootReportEvent의 중요한 정보는 다음 섹션과 요소가 포함된 earlyBootReportEvent 섹션에 있습니다.

  • actualMeasurements: 최신 부팅 시퀀스의 플랫폼 구성 등록(PCR) 값을 포함합니다. PCR 값에서는 최신 부팅 시퀀스에서 사용한 부팅 구성요소 및 구성요소 로드 순서를 식별하며 VM 인스턴스 부팅 시퀀스에 변경사항이 있었는지 확인하기 위해 이 값을 무결성 정책 기준(값은 policyMeasurements 섹션에서 캡처)과 비교합니다. actualMeasurements 섹션에는 다음 요소가 포함되어 있습니다.

    • 0: 펌웨어 구성요소 관련 정보가 담긴 PCR0 값을 포함합니다. 이 PCR은 구현되지 않으며 대신 정적 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 1: 운영체제 shim 관련 정보가 담긴 PCR4 값을 포함합니다.
    • 2: 디스크의 GUID 파티션 테이블 관련 정보가 담긴 PCR5 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 3: 인스턴스의 안전한 부팅 정책 관련 정보가 담긴 PCR7 값을 포함합니다.
  • policyEvaluationPassed: 부팅 시퀀스의 특정 섹션이 무결성 정책 기준 확인을 통과했는지 여부를 식별합니다.

  • policyMeasurements: 무결성 정책 기준의 PCR 값을 포함합니다. policyMeasurements 섹션에는 다음 요소가 포함되어 있습니다.

    • 0: 펌웨어 구성요소 관련 정보가 담긴 PCR0 값을 포함합니다. 이 PCR은 구현되지 않으며 대신 정적 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 1: 운영체제 shim 관련 정보가 담긴 PCR4 값을 포함합니다.
    • 2: 인스턴스의 안전한 부팅 정책 관련 정보가 담긴 PCR7 값을 포함합니다.

earlyBootReportEvent PCR 값을 사용하여 부팅 무결성 확인 실패를 진단하는 방법에 대해서는 부팅 무결성 확인 실패의 원인 파악을 참조하세요.

lateBootReportEvent

lateBootReportEvent의 중요한 정보는 다음 섹션과 요소가 포함된 lateBootReportEvent 섹션에 있습니다.

  • actualMeasurements: 최신 부팅 시퀀스의 플랫폼 구성 등록(PCR) 값을 포함합니다. PCR 값에서는 최신 부팅 시퀀스에서 사용한 부팅 구성요소 및 구성요소 로드 순서를 식별하며 VM 인스턴스 부팅 시퀀스에 변경사항이 있었는지 확인하기 위해 이 값을 무결성 정책 기준(값은 policyMeasurements 섹션에서 캡처)과 비교합니다. actualMeasurements 섹션에는 다음 요소가 포함되어 있습니다.

    • 0: 펌웨어 구성요소 관련 정보가 담긴 PCR0 값을 포함합니다. 이 PCR은 구현되지 않으며 대신 정적 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 1: 두 번째 단계의 부트로더 및 커널 관련 정보가 담긴 PCR4 값을 포함합니다.
    • 2: 디스크의 GUID 파티션 테이블 관련 정보가 담긴 PCR5 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 3: 인스턴스의 안전한 부팅 정책 관련 정보가 담긴 PCR7 값을 포함합니다.
  • policyEvaluationPassed: 부팅 시퀀스의 특정 섹션이 무결성 정책 기준 확인을 통과했는지 여부를 식별합니다.

  • policyMeasurements: 무결성 정책 기준의 PCR 값을 포함합니다. policyMeasurements 섹션에는 다음 요소가 포함되어 있습니다.

    • 0: 펌웨어 구성요소 관련 정보가 담긴 PCR0 값을 포함합니다. 이 PCR은 구현되지 않으며 대신 정적 값을 포함합니다. 무결성 정책 기준을 바탕으로 최신 부팅 시퀀스를 확인할 때는 사용되지 않습니다.
    • 1: 두 번째 단계의 부트로더 및 커널 관련 정보가 담긴 PCR4 값을 포함합니다.
    • 2: 인스턴스의 안전한 부팅 정책 관련 정보가 담긴 PCR7 값을 포함합니다.

lateBootReportEvent PCR 값을 사용하여 부팅 무결성 확인 실패를 진단하는 방법에 대해서는 부팅 무결성 확인 실패의 원인 파악을 참조하세요.

Cloud Identity and Access Management 승인

보안 설정된 VM에서는 승인을 위해 Cloud IAM을 사용합니다.

보안 설정된 VM 작업에 사용되는 Compute Engine 권한은 다음과 같습니다.

  • compute.instances.updateShieldedVmConfig: 사용자가 VM 인스턴스의 보안 설정된 VM 옵션을 변경할 수 있습니다.
  • compute.instances.setShieldedVmIntegrityPolicy: 사용자가 VM 인스턴스의 무결성 정책 기준을 업데이트할 수 있습니다.

보안 설정된 VM 권한이 부여되는 Compute Engine 역할은 다음과 같습니다.

  • roles/compute.instanceAdmin.v1
  • roles/compute.securityAdmin

보안 설정된 VM 권한을 커스텀 역할에 부여할 수도 있습니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...