Afgeschermde VM

Afgeschermde VM biedt verifieerbare integriteit van uw VM-instanties met Compute Engine, zodat u erop kunt rekenen dat de kernel of het opstartproces uw instanties niet is besmet met malware of rootkits. De verifieerbare integriteit van afgeschermde VM's wordt bereikt door het gebruik van veilig opstarten, een opstartproces met meting via een virtueel vertrouwde platformmodule (vTPM) en integriteitscontrole.

Afgeschermde VM is het eerste onderdeel van de afgeschermde cloud. De afgeschermde cloud moet een nog veiligere basis vormen voor het gehele Google Cloud Platform (GCP) door gebruikers verifieerbare integriteit en functies als vTPM-afscherming of verzegeling te bieden, waarmee gegevensonderschepping beter kan worden voorkomen.

Veilig opstarten

Veilig opstarten zorgt ervoor dat het systeem alleen authentieke software uitvoert door de digitale handtekening van alle opstartcomponenten te verifiëren en het opstartproces te stoppen als de handtekeningverificatie mislukt.

Afgeschermde VM-instanties voeren firmware uit die is ondertekend en geverifieerd met behulp van de certificeringsinstantie van Google, zodat kan worden gegarandeerd dat de firmware van de instantie ongewijzigd is en de vertrouwensbasis voor veilig opstarten tot stand kan komen. De Unified Extensible Firmware Interface (UEFI) 2.3.1-firmware beheert veilig de certificaten met de sleutels die door de softwarefabrikanten worden gebruikt om de systeemfirmware, de bootloader van het systeem en alle binaire bestanden die worden geladen te ondertekenen. Afgeschermde VM-instanties gebruiken UEFI-firmware.

Elke keer dat er wordt opgestart, controleert de UEFI-firmware de digitale handtekening van elke opstartcomponent op basis van de beveiligde opslag van goedgekeurde sleutels. Elke opstartcomponent die niet correct is ondertekend of helemaal niet is ondertekend, mag niet worden uitgevoerd.

Als dit gebeurt, wordt er een foutstatus in de GCP-console van de VM-instantie weergegeven en bevat het logboek van de seriële console van de VM-instantie een vermelding met de tekenreeksen UEFI: Kan afbeelding niet laden en Status: Beveiligingsfout, samen met een beschrijving van de opstartoptie die mislukt is. Om deze problemen op te lossen, schakelt u Veilig opstarten uit aan de hand van de instructies in Opties voor afgeschermde VM's aanpassen, zodat u de VM-instantie kunt opstarten, het probleem kunt diagnosticeren en oplossen en vervolgens Veilig opstarten opnieuw kunt inschakelen.

Virtuele vertrouwde platformmodule (Virtual Trusted Platform Module, vTPM)

Een vTPM is een virtuele vertrouwde platformmodule, een gespecialiseerde computerchip die u kunt gebruiken om objecten, zoals sleutels en certificaten, te beveiligen die u gebruikt om de toegang tot uw systeem te verifiëren. De afgeschermde VM vTPM werkt probleemloos met de bibliotheekspecificatie Trusted Computing Group (TPM) 2.0 en maakt gebruik van BoringSSL, die gevalideerd is voor FIPS 140-2 L1.

De afgeschermde VM vTPM maakt opstartproces met meting mogelijk door de metingen uit te voeren die nodig zijn om een bekende goede opstartbasislijn te maken, die we de basislijn van het integriteitsbeleid noemen. De basislijn van het integriteitsbeleid wordt gebruikt om metingen van daaropvolgende VM-opstartprocessen te vergelijken, zodat kan worden vastgesteld of er iets is gewijzigd.

U kunt de vTPM ook gebruiken om geheimen te beschermen door middel van afscherming of verzegeling. Zie het project Go-TPM op GitHub waar aan de hand van Go-taalvoorbeelden wordt geïllustreerd hoe u een vTPM voor dit doel gebruikt.

Opstartproces met meting

Tijdens het opstartproces met meting wordt van elke component (bijvoorbeeld de firmware, bootloader of kernel) een hash gemaakt terwijl de component wordt geladen. Die hash wordt vervolgens samengevoegd en opnieuw gehasht met de hashes van componenten die al zijn geladen, zoals hieronder geïllustreerd:

Opstartproces met meting.

Met deze informatie kunnen zowel de componenten die zijn geladen als hun laadvolgorde worden geïdentificeerd.

De eerste keer dat u een VM-instantie opstart, stelt het opstartproces met meting de basislijn van het integriteitsbeleid samen uit de eerste reeks van deze metingen en slaat deze gegevens veilig op. Elke keer dat de VM-instantie daarna wordt opgestart, worden deze metingen opnieuw geregistreerd en opgeslagen in beveiligd geheugen tot de volgende keer dat de instantie wordt opgestart. Met deze twee metingen is integriteitscontrole mogelijk. Integriteitscontrole kunt u gebruiken om te bepalen of er veranderingen zijn opgetreden in het opstartproces van een VM-instantie.

Integriteitscontrole

Dankzij integriteitscontrole kunt u meer inzicht krijgen in en betere beslissingen nemen over de status van uw VM-instanties.

Integriteitscontrole is afhankelijk van de metingen die zijn gemaakt door opstartproces met meting, dat platformconfiguratieregisters (PCR's) gebruikt om informatie over de componenten en de laadvolgorde van componenten op te slaan van zowel de basislijn van het integriteitsbeleid (een bekend goed opstartproces) als van het meest recente opstartproces.

Bij integriteitscontrole worden de meest recente opstartmetingen vergeleken met de basislijn van het integriteitsbeleid en worden resultaten over het slagen/mislukken geretourneerd, afhankelijk van of deze wel of niet overeenkomen. Er worden resultaten geretourneerd voor het begin van het opstartproces en voor het eind van het opstartproces. Het begin van het opstartproces is het opstartproces vanaf het begin van de UEFI-firmware totdat deze de besturing overdraagt aan de bootloader. Het eind van het opstartproces is het opstartproces van de bootloader totdat deze de besturing overdraagt aan de kernel van het besturingssysteem. Als een van de onderdelen van het meest recente opstartproces niet overeenkomt met de basislijn, krijgt u een integriteitsvalidatiefout.

Als de fout wordt verwacht, bijvoorbeeld als u een systeemupdate op die VM-instantie heeft toegepast, moet u de basislijn van het integriteitsbeleid updaten. Bij het updaten van de basislijn van het integriteitsbeleid wordt de basislijn ingesteld op basis van de metingen die zijn vastgelegd tijdens het meest recente opstartproces. Als de fout niet wordt verwacht, moet u die VM-instantie afsluiten en de oorzaak van de fout onderzoeken.

U kunt integriteitsrapporten bekijken in Stackdriver Monitoring en waarschuwingen instellen voor integriteitsfouten. U kunt de details van resultaten van integriteitscontroles bekijken in Stackdriver Logging. Zie Integriteit controleren op afgeschermde VM-instanties voor meer informatie.

Integriteitscontroles

Afgeschermde VM maakt logboekitems voor de volgende typen gebeurtenissen:

  • clearTPMEvent: Geeft aan of de vTPM is gewist, waardoor de daarin opgeslagen geheimen zijn verwijderd. Dit heeft geen invloed op enig aspect van de afgeschermde VM, dus u geeft hier alleen aandacht aan als u de vTPM gebruikt om gevoelige gegevens af te schermen zoals beschreven in Virtuele vertrouwde platformmodule (vTPM).
  • earlyBootReportEvent: Geeft aan of de integriteitscontrole aan het begin van het opstartproces is geslaagd en geeft details over de PCR-waarden van de basislijn en van het meest recente opstartproces die zijn vergeleken om dit vast te stellen.
  • lateBootReportEvent: Geeft aan of de integriteitscontrole aan het eind van het opstartproces is geslaagd en geeft details over de PCR-waarden van de basislijn en van het meest recente opstartproces die zijn vergeleken om dit vast te stellen.
  • setShieldedInstanceIntegrityPolicy: Wordt geregistreerd elke keer dat u de basislijn van het integriteitsbeleid updatet.
  • shutdownEvent: Wordt geregistreerd elke keer dat de VM-instantie wordt afgesloten.
  • startupEvent: Wordt geregistreerd elke keer dat de VM-instantie wordt opgestart. De interessante informatie bij deze gebeurtenis is de waarde bootCounter die aangeeft hoe vaak deze instantie opnieuw is opgestart.
  • updateShieldedInstanceConfig: Wordt geregistreerd elke keer dat u een van de afgeschermde VM-opties in- of uitschakelt.

De typische gebeurtenisvolgorde die u ziet in de logboeken, is startupEvent, earlyBootReportEvent, lateBootReportEvent en uiteindelijk shutdownEvent, allemaal met dezelfde bootCounter-waarde om ze te identificeren als hetzelfde opstartproces van de VM-instantie.

Als u de basislijn van het integriteitsbeleid updatet naar aanleiding van een verwachte integriteitsfout in een VM-instantie, ziet u de aanvullende gebeurtenissen earlyBootReportEvent en lateBootReportEvent die de nieuwe metingen voor de basislijn van het integriteitsbeleid beschrijven. In het volgende voorbeeld wordt het verwachte proces beschreven:

  • startupEvent
  • earlyBootReportEvent die de oorspronkelijke basislijn vergelijkt met het laatste opstartproces (slaagt)
  • lateBootReportEvent die de oorspronkelijke basislijn vergelijkt met het laatste opstartproces (mislukt)
  • setShieldedInstanceIntegrityPolicy bij het updaten van de basislijn van het integriteitsbeleid wordt de basislijn ingesteld op basis van de metingen die zijn vastgelegd tijdens het meest recente opstartproces
  • earlyBootReportEvent die de nieuwe basislijn vergelijkt met het laatste opstartproces (slaagt)
  • lateBootReportEvent die de nieuwe basislijn vergelijkt met het laatste opstartproces (slaagt)

Windows

earlyBootReportEvent

De belangrijke informatie in earlyBootReportEvent bevindt zich in de sectie earlyBootReportEvent, die de volgende secties en elementen bevat:

  • actualMeasurements: Bevat de waarden voor het platformconfiguratieregister (PCR) voor het laatste opstartproces. De PCR-waarden bepalen wat de opstartonderdelen zijn en in welke volgorde deze worden geladen op basis van het laatste opstartproces. Dit zijn ook de waarden die worden vergeleken met de basislijn van het integriteitsbeleid (waarvan de waarden worden vastgelegd in de sectie policyMeasurements) om te bepalen of het opstartproces van de VM-instantie is gewijzigd. De sectie actualMeasurements bevat de volgende elementen:

    • 0: Bevat de waarde voor PCR0, die informatie over firmwarecomponenten bevat. Deze PCR is niet geïmplementeerd en bevat in plaats daarvan een statische waarde. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 1: Bevat de waarde voor PCR4, die informatie bevat over de UEFI-opstartmanagercode en opstartpogingen.
    • 2: Bevat de waarde voor PCR5, die informatie bevat over de GUID-partitietabel van de schijf. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 3: Bevat de waarde voor PCR7, die informatie bevat over het beleid voor veilig opstarten van de instantie.
  • policyEvaluationPassed: Geeft aan of de opgegeven sectie van het opstartproces is geverifieerd aan de hand van de basislijn van het integriteitsbeleid.

  • policyMeasurements: Bevat de PCR-waarden voor de basislijn van het integriteitsbeleid. De sectie policyMeasurements bevat de volgende elementen:

    • 0: Bevat de waarde voor PCR0, die informatie over firmwarecomponenten bevat. Deze PCR is niet geïmplementeerd en bevat in plaats daarvan een statische waarde. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 1: Bevat de waarde voor PCR4, die informatie bevat over de UEFI-opstartmanagercode en opstartpogingen.
    • 2: Bevat de waarde voor PCR7, die informatie bevat over het beleid voor veilig opstarten van de instantie.

Zie De oorzaak van mislukte validatie van de opstartintegriteit vaststellen voor meer informatie over hoe u PCR-waarden van earlyBootReportEvent gebruikt om een diagnose uit te voeren van een validatiefout van de opstartintegriteit.

lateBootReportEvent

De belangrijke informatie in lateBootReportEvent bevindt zich in de sectie lateBootReportEvent, die de volgende secties en elementen bevat:

  • actualMeasurements: Bevat de waarden voor het platformconfiguratieregister (PCR) voor het laatste opstartproces. De PCR-waarden bepalen wat de opstartonderdelen zijn en in welke volgorde deze worden geladen op basis van het laatste opstartproces. Dit zijn ook de waarden die worden vergeleken met de basislijn van het integriteitsbeleid (waarvan de waarden worden vastgelegd in de sectie policyMeasurements) om te bepalen of het opstartproces van de VM-instantie is gewijzigd. De sectie actualMeasurements bevat de volgende elementen:

    • 0: Bevat de waarde voor PCR0, die informatie over firmwarecomponenten bevat. Deze PCR is niet geïmplementeerd en bevat in plaats daarvan een statische waarde. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 1: Bevat de waarde voor PCR4, die informatie bevat over de UEFI-opstartmanagercode en opstartpogingen.
    • 2: Bevat de waarde voor PCR5, die informatie bevat over de GUID-partitietabel van de schijf. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 3: Bevat de waarde voor PCR7, die informatie bevat over het beleid voor veilig opstarten van de instantie.
    • 4: Bevat de waarde voor PCR11, die informatie over toegangscontrole voor schijfversleuteling met BitLocker bevat.
    • 5: Bevat de waarde voor PCR12, die informatie over gegevensgebeurtenissen bevat. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 6: Bevat de waarde voor PCR13, die informatie over de kernel en opstartprogramma's van Windows bevat.
    • 7: Bevat de waarde voor PCR14, die informatie over opstartautoriteiten van Windows bevat.
  • policyEvaluationPassed: Geeft aan of de opgegeven sectie van het opstartproces is geverifieerd aan de hand van de basislijn van het integriteitsbeleid.

  • policyMeasurements: Bevat de PCR-waarden voor de basislijn van het integriteitsbeleid. De sectie policyMeasurements bevat de volgende elementen:

    • 0: Bevat de waarde voor PCR0, die informatie over firmwarecomponenten bevat. Deze PCR is niet geïmplementeerd en bevat in plaats daarvan een statische waarde. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 1: Bevat de waarde voor PCR4, die informatie bevat over de UEFI-opstartmanagercode en opstartpogingen.
    • 2: Bevat de waarde voor PCR7, die informatie bevat over het beleid voor veilig opstarten van de instantie.
    • 3: Bevat de waarde voor PCR11, die informatie over toegangscontrole voor schijfversleuteling met BitLocker bevat.
    • 4: Bevat de waarde voor PCR13, die informatie over de kernel en opstartprogramma's van Windows bevat.
    • 5: Bevat de waarde voor PCR14, die informatie over opstartautoriteiten van Windows bevat.

Zie De oorzaak van een mislukte validatie van de opstartintegriteit vaststellen voor meer informatie over hoe u lateBootReportEvent PCR-waarden gebruikt om een diagnose uit te voeren van een validatiefout van de opstartintegriteit.

Linux

earlyBootReportEvent

De belangrijke informatie in earlyBootReportEvent bevindt zich in de sectie earlyBootReportEvent, die de volgende secties en elementen bevat:

  • actualMeasurements: Bevat de waarden voor het platformconfiguratieregister (PCR) voor het laatste opstartproces. De PCR-waarden bepalen wat de opstartonderdelen zijn en in welke volgorde deze worden geladen op basis van het laatste opstartproces. Dit zijn ook de waarden die worden vergeleken met de basislijn van het integriteitsbeleid (waarvan de waarden worden vastgelegd in de sectie policyMeasurements) om te bepalen of het opstartproces van de VM-instantie is gewijzigd. De sectie actualMeasurements bevat de volgende elementen:

    • 0: Bevat de waarde voor PCR0, die informatie over firmwarecomponenten bevat. Deze PCR is niet geïmplementeerd en bevat in plaats daarvan een statische waarde. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 1: Bevat de waarde voor PCR4, die informatie over de shim van het besturingssysteem bevat.
    • 2: Bevat de waarde voor PCR5, die informatie bevat over de GUID-partitietabel van de schijf. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 3: Bevat de waarde voor PCR7, die informatie bevat over het beleid voor veilig opstarten van de instantie.
  • policyEvaluationPassed: Geeft aan of de opgegeven sectie van het opstartproces is geverifieerd aan de hand van de basislijn van het integriteitsbeleid.

  • policyMeasurements: Bevat de PCR-waarden voor de basislijn van het integriteitsbeleid. De sectie policyMeasurements bevat de volgende elementen:

    • 0: Bevat de waarde voor PCR0, die informatie over firmwarecomponenten bevat. Deze PCR is niet geïmplementeerd en bevat in plaats daarvan een statische waarde. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 1: Bevat de waarde voor PCR4, die informatie over de shim van het besturingssysteem bevat.
    • 2: Bevat de waarde voor PCR7, die informatie bevat over het beleid voor veilig opstarten van de instantie.

Zie De oorzaak van mislukte validatie van de opstartintegriteit vaststellen voor meer informatie over hoe u PCR-waarden van earlyBootReportEvent gebruikt om een diagnose uit te voeren van een validatiefout van de opstartintegriteit.

lateBootReportEvent

De belangrijke informatie in lateBootReportEvent bevindt zich in de sectie lateBootReportEvent, die de volgende secties en elementen bevat:

  • actualMeasurements: Bevat de waarden voor het platformconfiguratieregister (PCR) voor het laatste opstartproces. De PCR-waarden bepalen wat de opstartonderdelen zijn en in welke volgorde deze worden geladen op basis van het laatste opstartproces. Dit zijn ook de waarden die worden vergeleken met de basislijn van het integriteitsbeleid (waarvan de waarden worden vastgelegd in de sectie policyMeasurements) om te bepalen of het opstartproces van de VM-instantie is gewijzigd. De sectie actualMeasurements bevat de volgende elementen:

    • 0: Bevat de waarde voor PCR0, die informatie over firmwarecomponenten bevat. Deze PCR is niet geïmplementeerd en bevat in plaats daarvan een statische waarde. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 1: Bevat de waarde voor PCR4, die informatie bevat over de tweede bootloader en de kernel.
    • 2: Bevat de waarde voor PCR5, die informatie bevat over de GUID-partitietabel van de schijf. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 3: Bevat de waarde voor PCR7, die informatie bevat over het beleid voor veilig opstarten van de instantie.
  • policyEvaluationPassed: Geeft aan of de opgegeven sectie van het opstartproces is geverifieerd aan de hand van de basislijn van het integriteitsbeleid.

  • policyMeasurements: Bevat de PCR-waarden voor de basislijn van het integriteitsbeleid. De sectie policyMeasurements bevat de volgende elementen:

    • 0: Bevat de waarde voor PCR0, die informatie over firmwarecomponenten bevat. Deze PCR is niet geïmplementeerd en bevat in plaats daarvan een statische waarde. Deze PCR wordt niet gebruikt bij de vergelijking van het laatste opstartproces met de basislijn van het integriteitsbeleid.
    • 1: Bevat de waarde voor PCR4, die informatie bevat over de tweede bootloader en de kernel.
    • 2: Bevat de waarde voor PCR7, die informatie bevat over het beleid voor veilig opstarten van de instantie.

Zie De oorzaak van een mislukte validatie van de opstartintegriteit vaststellen voor meer informatie over hoe u lateBootReportEvent PCR-waarden gebruikt om een diagnose uit te voeren van een validatiefout van de opstartintegriteit.

Cloud IAM-autorisatie (Identity and Access Management)

Afgeschermde VM gebruikt Cloud IAM voor autorisatie.

Afgeschermde VM-bewerkingen gebruiken de volgende Compute Engine-rechten:

  • compute.instances.updateShieldedInstanceConfig: hiermee kan de gebruiker de afgeschermde VM-opties voor een VM-instantie wijzigen.
  • compute.instances.setShieldedInstanceIntegrityPolicy: stelt de gebruiker in staat de basislijn van het integriteitsbeleid voor een VM-instantie te updaten.
  • compute.instances.getShieldedInstanceIdentity: hiermee kan de gebruiker bij de vTPM informatie ophalen over de goedkeuringssleutel.

Afgeschermde VM-rechten worden toegewezen aan de volgende Compute Engine-rollen:

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

U kunt ook afgeschermde VM-rechten toewijzen aan custom rollen.

Beperkingen van het organisatiebeleid voor afgeschermde VM

U kunt de beperking constraints/compute.requireShieldedVm van het organisatiebeleid instellen op True om te vereisen dat VM-instanties met Compute Engine die in uw organisatie zijn gemaakt afgeschermde VM-instanties zijn.

Meer informatie over het instellen van de beperking constraints/compute.requireShieldedVm bij het gebruik van Booleaanse beperkingen in organisatiebeleid. U moet een beheerder van het organisatiebeleid zijn om een beperking in te stellen.

Volgende stappen

Was deze pagina nuttig? Laat ons weten hoe goed we u hebben geholpen:

Feedback verzenden over...