Standardmäßig verschlüsselt Google Cloud Daten im inaktiven Zustand automatisch mit von Google verwalteten Verschlüsselungsschlüsseln. Wenn Sie bestimmte Compliance- oder behördliche Anforderungen in Bezug auf die Schlüssel zum Schutz Ihrer Daten haben, können Sie für Ihre Datasets der Cloud Healthcare API vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden. Anstatt die Verschlüsselungsschlüssel zum Schutz Ihrer Daten von Google verwalten zu lassen, werden Ihre Cloud Healthcare API-Datasets mit einem Schlüssel verschlüsselt, den Sie in Cloud Key Management Service (Cloud KMS) selbst erstellen, steuern und verwalten.
Weitere Informationen zu CMEKs im Allgemeinen, einschließlich wann und warum sie aktiviert werden sollten, finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).
Hinweise
Entscheiden Sie, ob sich Ihr Cloud Healthcare API-Dataset und Cloud KMS im selben Google Cloud-Projekt oder in verschiedenen Projekten befinden sollen. Weitere Informationen finden Sie unter Aufgabentrennung.
Für die Dokumentation werden die folgenden Konventionen verwendet:
PROJECT_ID
: die Cloud Healthcare API-Projekt-IDKMS_PROJECT_ID
: die Projekt-ID, in der Cloud KMS ausgeführt wird. Diese kann mitPROJECT_ID
identisch sein.
Weitere Informationen zu Google Cloud-Projekt-IDs und -Projektnummern finden Sie unter Projekte identifizieren.
Beschränkungen
- Sie können Cloud KMS-Schlüssel nur beim Erstellen eines Cloud Healthcare API-Datasets verwenden. Sie können Cloud KMS-Schlüssel für einen vorhandenen Cloud Healthcare API-Datensatz nicht aktivieren, ändern oder deaktivieren.
- In CMEK-verschlüsselten Datasets werden nur FHIR-, DICOM- und HL7v2-Speicher unterstützt. Der CMEK-Schutz gilt für DICOM-, FHIR- und HL7v2-Speicher im Datensatz und deren Ressourcen.
- CMEK-verschlüsselte Ressourcen können nicht de-identifiziert werden.
CMEK-Vorgänge
Cloud KMS-Schlüssel werden verwendet, wenn eine CMEK-verschlüsselte Ressource erstellt, gelesen, aktualisiert oder gelöscht wird, sowie für betriebliche Aufgaben wie die Abrechnung oder die Verfügbarkeit des Schlüssels.
Überlegungen zu externen Schlüsseln
Informationen zum Schutz von Daten in Google Cloud mit Schlüsseln, die Sie in einem unterstützten System für die externe Schlüsselverwaltung verwalten, finden Sie unter Cloud External Key Manager.
Wenn Sie Schlüssel verlieren, die Sie außerhalb von Google Cloud verwalten, kann Google Ihre Daten nicht wiederherstellen.
Nichtverfügbarkeit von Schlüsseln und Datenverlust
Wenn ein Dataset mit einem Schlüssel verschlüsselt ist und dieser Schlüssel nicht verfügbar ist und bleibt, deaktiviert die Cloud Healthcare API das Dataset und löscht es schließlich. Manchmal ist ein Schlüssel nicht verfügbar, wenn er deaktiviert oder gelöscht wurde oder wenn aufgrund widerrufener Berechtigungen kein Zugriff darauf möglich ist. Dieses Verhalten tritt jedoch auf, wenn der Schlüssel aus irgendeinem Grund nicht verfügbar ist. Das Schutzniveau des Schlüssels oder ob es sich um einen externen Schlüssel handelt, hat keinen Einfluss auf dieses Verhalten. Externe Schlüssel können auch unvorhersehbar nicht verfügbar sein. Beispielsweise können Verbindungsprobleme zwischen Ihren Google Cloud-Ressourcen und Ihrem EKM auftreten.
Im Folgenden wird beschrieben, wie die Schlüsselverfügbarkeit geprüft und ein Datensatz deaktiviert und gelöscht werden kann:
Nachdem ein CMEK-verschlüsseltes Cloud Healthcare API-Dataset erstellt wurde, prüft die Cloud Healthcare API alle fünf Minuten den Status des Schlüssels, um sicherzustellen, dass er verfügbar ist. Ist der Schlüssel nicht verfügbar, unterstützt die Cloud Healthcare API Anfragen an den Datensatz bis zu eine Stunde lang weiter.
Wenn die Cloud Healthcare API nach einer Stunde immer noch keine Verbindung zu Cloud KMS herstellen kann, wird der Cloud Healthcare API-Dataset als Schutzmaßnahme deaktiviert. Wenn Sie das Cloud Healthcare API-Dataset wieder aktivieren möchten, wenden Sie sich an Ihren Kundenbetreuer.
Wenn diese Option deaktiviert ist, können Sie nur
datasets.get
- unddatasets.delete
-Anfragen an den Cloud Healthcare API-Datensatz senden. Andere Anfragen schlagen mit dem Fehler400 FAILED_PRECONDITION
fehl.Wenn der Cloud Healthcare API-Datensatz länger als 30 Tage nicht verfügbar ist, wird er endgültig gelöscht. Alle DICOM-, FHIR- und HL7v2-Speicher im Dataset und die zugehörigen Daten werden ebenfalls gelöscht. Wenn sie gelöscht wurden, können diese Daten nicht wiederhergestellt werden.
Schlüsselerstellung
In den folgenden Abschnitten wird beschrieben, wie Sie einen Cloud KMS-Schlüsselbund und einen Schlüssel erstellen. Es werden nur symmetrische Verschlüsselungsschlüssel von Cloud KMS unterstützt.
Unterstützte Standorte
Cloud KMS-Schlüssel sind an den Standorten der Cloud Healthcare API verfügbar. Erstellen Sie den Schlüsselbund an einem Standort, der der Region oder dem multiregionalen Standort Ihres Cloud Healthcare API-Datasets entspricht.
Für jedes multiregionale Cloud Healthcare API-Dataset muss ein multiregionaler Schlüsselbund an einem übereinstimmenden Speicherort verwendet werden. Beispiel: Ein Cloud Healthcare API-Dataset in der Region
us
muss mit einem Schlüsselbund aus der Regionus
und ein Cloud Healthcare API-Dataset in der Regioneu
mit einem Schlüsselbund aus der Regioneurope
geschützt werden.Für regionale Cloud Healthcare API-Datasets müssen übereinstimmende regionale Schlüssel verwendet werden. Beispiel: Ein Cloud Healthcare API-Dataset in der Region
asia-northeast1
muss mit einem Schlüsselbund aus der Regionasia-northeast1
geschützt werden.Sie können die Region
global
nicht verwenden, wenn Sie CMEK für ein Cloud Healthcare API-Dataset konfigurieren.
Weitere Informationen finden Sie unter Standorte der Cloud Healthcare API und Cloud KMS-Standorte.
Schlüsselbund und Schlüssel erstellen
Führen Sie in dem Google Cloud-Projekt, in dem Cloud KMS ausgeführt wird, die folgenden Schritte aus:
Berechtigungen zum Verschlüsseln und Entschlüsseln erteilen
Wenn Sie Ihre Cloud Healthcare API-Daten mit einem Cloud KMS-Schlüssel schützen möchten, weisen Sie dem Cloud Healthcare-Dienst-Agent-Dienstkonto die Rolle CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter
) für diesen Schlüssel zu. Eine Anleitung finden Sie unter CMEK-Berechtigungen für Datensätze.
Nachdem Sie dem Dienstkonto die Rolle zugewiesen haben, kann die Cloud Healthcare API CMEK-verschlüsselte Ressourcen verschlüsseln und entschlüsseln. Ihre Anwendungen müssen beim Lesen oder Schreiben von Daten keine Schlüssel angeben. Die Cloud Healthcare API übernimmt die Verschlüsselung.
Wenn ein Anfragesteller ein Objekt liest oder schreibt, das mit einem Cloud KMS-Schlüssel verschlüsselt ist, greift er wie gewohnt auf das Objekt zu. Während der Anfrage verschlüsselt oder entschlüsselt der Dienst-Agent das angeforderte Objekt automatisch, sofern beide der folgenden Bedingungen erfüllt sind:
- Der Dienst-Agent hat weiterhin die erforderlichen Berechtigungen.
- Der Schlüssel ist verfügbar und aktiviert.
CMEK-verschlüsseltes Cloud Healthcare API-Dataset erstellen
In den folgenden Beispielen wird gezeigt, wie Sie ein CMEK-verschlüsseltes Dataset erstellen.
Sie müssen beim Erstellen des Datensatzes eine Cloud KMS-Schlüsselressourcen-ID angeben. Bei diesem Schlüssel ist die Groß-/Kleinschreibung zu beachten. Er hat das folgende Format:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Informationen zum Abrufen der Ressourcen-IDs Ihrer Cloud KMS-Schlüssel finden Sie unter Cloud KMS-Ressourcen-ID abrufen.
Console
Rufen Sie in der Google Cloud Console die Seite Browser auf.
Klicken Sie auf add_box Dataset erstellen. Die Seite Dataset erstellen wird angezeigt.
Geben Sie im Feld Name eine Kennzeichnung für das Dataset ein. Beachten Sie dabei die Anforderungen an Zeichen und Größen.
Wählen Sie einen der folgenden Standorttypen aus:
Region Das Dataset befindet sich dauerhaft in einer Google Cloud-Region. Geben Sie nach der Auswahl dieser Option einen Standort in das Feld Region ein oder wählen Sie ihn aus.
Mehrere Regionen Das Dataset befindet sich dauerhaft an einem Standort, der mehrere Google Cloud-Regionen umfasst. Geben Sie nach der Auswahl dieser Option einen multiregionalen Standort in das Feld Mehrere Regionen ein oder wählen Sie ihn aus.
Wählen Sie im Bereich Verschlüsselung einen der folgenden Verschlüsselungstypen aus:
Von Google verwalteter Verschlüsselungsschlüssel: Die Standardverschlüsselungsmethode. Verwenden Sie diese Methode, wenn Google die Verschlüsselungsschlüssel verwalten soll, die Ihre Daten in diesem Cloud Healthcare API-Dataset schützen.
Cloud KMS-Schlüssel: Verwenden Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK).
Klicken Sie auf Erstellen. Die Seite Browser wird angezeigt. Das neue Dataset wird in der Liste der Datasets angezeigt.
gcloud
Erstellen Sie das Dataset mit dem Befehl gcloud healthcare datasets create
.
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
DATASET_ID
: Eine Kennung, die den zulässigen Zeichen und Größenanforderungen für Datasets unterliegt.LOCATION
: ein unterstützter Standort für das DatasetKEY_RESOURCE_ID
: die Ressourcen-ID für einen Cloud KMS-Schlüssel im Formatprojects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud healthcare datasets create DATASET_ID \ --location=LOCATION \ --encryption-key=KEY_RESOURCE_ID
Windows (PowerShell)
gcloud healthcare datasets create DATASET_ID ` --location=LOCATION ` --encryption-key=KEY_RESOURCE_ID
Windows (cmd.exe)
gcloud healthcare datasets create DATASET_ID ^ --location=LOCATION ^ --encryption-key=KEY_RESOURCE_ID
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Create request issued for: [DATASET_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete... Created dataset [DATASET_ID].
REST
Erstellen Sie das Dataset mit der Methode
datasets.create
.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
ist die ID Ihres Google Cloud-ProjektsDATASET_ID
: Eine Kennung, die den zulässigen Zeichen und Größenanforderungen für Datasets unterliegt.LOCATION
: ein unterstützter Standort für das DatasetKEY_RESOURCE_ID
: die Ressourcen-ID für einen Cloud KMS-Schlüssel im Formatprojects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
JSON-Text der Anfrage:
{ "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:cat > request.json << 'EOF' { "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } } EOF
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID"PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen
request.json
. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:@' { "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID" | Select-Object -Expand ContentAPIs Explorer
Kopieren Sie den Anfragetext und öffnen Sie die Referenzseite für Methoden. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Fügen Sie den Anfragetext in dieses Tool ein, füllen Sie alle Pflichtfelder aus und klicken Sie auf Ausführen.
OPERATION_ID
. Sie benötigen diesen Wert im nächsten Schritt.Mit der Methode
projects.locations.datasets.operations.get
können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
ist die ID Ihres Google Cloud-ProjektsLOCATION
ist der Standort des DatasetsDATASET_ID
ist die Dataset-IDOPERATION_ID
: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Führen Sie folgenden Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.
"done": true
enthält, ist der lang andauernde Vorgang abgeschlossen.
Ermitteln, ob ein Datensatz durch Cloud KMS geschützt ist
Für jeden der von Ihnen erstellten Schlüssel oder Schlüssel, die Ihre Cloud Healthcare API-Datasets schützen, können Sie mithilfe der Schlüsselnutzungsaufzeichnung sehen, welche Ressourcen dieser Schlüssel schützt. Weitere Informationen finden Sie unter Nutzung von Schlüsseln ansehen.
Schlüsselrotation
Cloud KMS unterstützt sowohl die automatische als auch die manuelle Schlüsselrotation auf eine neue Version.
Wenn Sie einen Schlüssel rotieren, hat das folgende Auswirkungen:
- Cloud Healthcare API-Datasets, die nach der Schlüsselrotation erstellt wurden, verwenden die neue Schlüsselversion für die Verschlüsselung und alle Vorgänge.
- Ressourcen in einem vorhandenen Datenpool, die mit dem Schlüssel verschlüsselt sind, werden nicht automatisch mit der neuen Primärschlüsselversion neu verschlüsselt.
Damit die Verschlüsselung funktioniert, müssen alle Schlüsselversionen verfügbar sein. Andernfalls wird das Cloud Healthcare API-Dataset deaktiviert und alle Anfragen an das Dataset schlagen fehl. Weitere Informationen finden Sie unter Hinweise zu externen Schlüsseln und Deaktivierte Datensätze und dauerhaftes Löschen von Datensätzen.
Cloud Healthcare API-Zugriff auf den Cloud KMS-Schlüssel entfernen
Sie haben die Kontrolle über Ihre Schlüssel und können Berechtigungen für den Schlüssel deaktivieren, löschen oder widerrufen, damit die Cloud Healthcare API nicht auf CMEK-verschlüsselte Daten zugreifen kann. Wenn Sie einen Schlüssel oder eine Schlüsselversion löschen, die mit einem Cloud Healthcare API-Dataset verknüpft ist, gehen alle mit diesem Schlüssel oder dieser Schlüsselversion verschlüsselten Daten dauerhaft verloren.
Es gibt eine Verzögerung zwischen der Deaktivierung eines Schlüssels oder einer Schlüsselversion und dem Zeitpunkt, zu dem er nicht mehr verwendet werden kann. Außerdem gibt es eine Verzögerung zwischen dem Widerruf der Berechtigungen des Dienstkontos des Cloud Healthcare-Dienst-Agents für den Schlüssel und dem Zeitpunkt, zu dem kein Zugriff mehr darauf möglich ist. Weitere Informationen finden Sie unter Konsistenz von Cloud KMS-Ressourcen.
Daten in eine CMEK-fähige Instanz exportieren und importieren
Wenn Ihre Daten während eines Exportvorgangs mit einem vom Kunden verwalteten Schlüssel verschlüsselt bleiben sollen, müssen Sie vor Beginn des Exports einen CMEK für das Speicherziel festlegen. Es gibt keine besonderen Anforderungen oder Einschränkungen für den Import von Daten in ein CMEK-verschlüsseltes Dataset, wenn der Import aus einem nicht CMEK-verschlüsselten oder CMEK-verschlüsselten Speicher erfolgt.
Beschränkungen
- Key Access Justifications mit Cloud External Key Manager werden nicht unterstützt.
- Pro Projekt sind innerhalb eines Zeitraums von 30 Tagen maximal 10 CMEK-Datasets zulässig. Dieses Kontingent wird durch den Kontingentmesswert
cmek_datasets
erzwungen. - VPC Service Controls mit CMEK werden nicht unterstützt.
- CMEK-Organisationsrichtlinien werden nicht unterstützt.
Preise
Datasets werden unabhängig davon gleich abgerechnet, ob sie mit CMEK verschlüsselt sind. Weitere Informationen finden Sie unter Preise für die Cloud Healthcare API.
Ihnen werden von Cloud KMS sowohl die Kosten für den Schlüssel als auch alle kryptografischen Vorgänge für diesen Schlüssel in Rechnung gestellt. Diese Vorgänge werden ausgeführt, wenn die Cloud Healthcare API den Schlüssel für die Verschlüsselung oder Entschlüsselung verwendet. Wir gehen davon aus, dass diese Kosten auf Basis der erwarteten Anzahl kryptografischer Vorgänge, die von der Cloud Healthcare API generiert werden, minimal sind. Weitere Informationen finden Sie unter Cloud KMS – Preise.
Cloud KMS-Kontingente und Cloud Healthcare API
Wenn Sie CMEK in der Cloud Healthcare API verwenden, können Ihre Projekte Kontingente für kryptografische Cloud KMS-Anfragen verbrauchen. CMEK-verschlüsselte Cloud Healthcare API-Datasets und ihre DICOM-, FHIR- und HL7v2-Speicher belegen diese Kontingente für alle Vorgänge mit Ausnahme von datasets.get
. Ver- und Entschlüsselungsvorgänge über CMEK-Schlüssel wirken sich nur dann auf Cloud KMS-Kontingente aus, wenn Sie Hardware- (Cloud HSM) oder externe Schlüssel (Cloud EKM) verwenden.
Weitere Informationen finden Sie unter Cloud KMS-Kontingente.
Nächste Schritte
- Weitere Informationen zu CMEKs im Allgemeinen, einschließlich wann und warum sie aktiviert werden sollten, finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).