Auf dieser Seite wird beschrieben, wie Sie in AML AI-Instanzen gespeicherte Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) verschlüsseln.
Übersicht
Alle Kundendaten in einer AML AI-Instanz werden mit einem CMEK-Schlüssel verschlüsselt. Sie verwalten den Schlüssel in Cloud Key Management Service (Cloud KMS) und steuern den Zugriff auf den Schlüssel mit Identity and Access Management. Wenn Sie den CMEK-Schlüssel vorübergehend deaktivieren oder dauerhaft löschen, kann nicht auf die mit diesem Schlüssel verschlüsselten Daten zugegriffen werden.
AML AI unterstützt CMEK nur über Cloud KMS. Google Default Encryption wird nicht unterstützt.
Mit CMEK können Sie mehr Aspekte des Lebenszyklus und der Verwaltung Ihrer Schlüssel steuern. Für den Cloud KMS-Dienst fallen aber zusätzliche Kosten an.
Cloud KMS kann im selben Google Cloud Projekt wie AML AI oder in einem separaten Projekt ausgeführt werden, in dem Sie Schlüssel für mehrere Projekte zentral verwalten.
Die Verschlüsselungskonfiguration wird beim Erstellen einer Instanz eingerichtet. Nachdem eine Instanz erstellt wurde, können Sie keinen anderen Cloud KMS-Schlüssel zuweisen. Sie können den Schlüssel weiterhin rotieren.
Weitere Informationen zu CMEK im Allgemeinen finden Sie in der Cloud KMS-Dokumentation.
Schutzniveaus
Mit Cloud KMS können Sie aus einer Vielzahl von Schutzstufen wählen, darunter:
- Softwareschlüssel
- Hardwaresicherheitsmodule (HSMs) mit Cloud HSM
CMEK Nicht alle Schutzstufen sind in allen Regionen verfügbar. Hinweis: AML AI unterstützt keine vom Kunden bereitgestellten Verschlüsselungsschlüssel (Customer Supplied Encryption Keys, CSEK) oder Cloud External Key Manager.
Kundendaten
Alle von AML AI verarbeiteten Kundendaten werden im Ruhezustand mit dem CMEK-Schlüssel verschlüsselt, der in der entsprechenden übergeordneten Instanz-Ressource angegeben ist. Dazu gehören alle Kundendaten, die mit AML AI-Ressourcen verknüpft sind, z. B. Datasets, Engine-Konfigurationen und Modelle. Alle temporären und persistenten Speicher von Kundendaten, einschließlich Kopien von Ein- und Ausgaben, generierten ML-Funktionen, Modell-Hyperparametern, Modellgewichten und Vorhersageergebnissen, werden mit dem CMEK-Schlüssel der entsprechenden Instanz verschlüsselt.
Die Definition von Kundendaten, die möglicherweise keine Ressourcenkennungen, Attribute oder andere Datenlabels enthalten, finden Sie in den dienstspezifischen Nutzungsbedingungen.
Ein- und Ausgabedaten verschlüsseln
Die AML AI-Verschlüsselungskonfiguration in einer Instanz wird nur für AML AI-Ressourcen und deren Daten verwendet. AML AI verwaltet nicht die Verschlüsselung von Ein- oder Ausgabedaten in Ihrem Google Cloud-Projekt. Wenn Sie möchten, dass diese Daten mit CMEK verschlüsselt werden, müssen Sie einen Cloud KMS-Schlüssel einrichten, der der von Ihnen für das BigQuery-Dataset konfigurierten Schlüssel-Schutzstufe entspricht. Sie können auch denselben Schlüssel wiederverwenden, der von AML AI verwendet wird.
Weitere Informationen zur Verschlüsselung in BigQuery
Schlüsselrotation
Die regelmäßige und automatische Schlüsselrotation wird empfohlen. Bei CMEK wird die Schlüsselrotation von Ihnen gesteuert. Wenn Sie einen Schlüssel rotieren, werden Daten, die mit früheren Schlüsselversionen verschlüsselt wurden, nicht automatisch mit der neuen Schlüsselversion verschlüsselt.
Eine einzelne AML AI-Ressource kann intern als mehrere Einheiten gespeichert werden. Wenn die Schlüsselversion während der Lebensdauer einer AML AI-Ressource rotiert wird, sind möglicherweise nicht alle Einheiten mit derselben Schlüsselversion verschlüsselt.
Wenn Sie einen Schlüssel rotieren, gibt es in AML AI keine Möglichkeit, eine erneute Verschlüsselung zu erzwingen oder festzustellen, ob ältere Schlüsselversionen sicher gelöscht werden können.
Weitere Informationen zur Schlüsselrotation mit Cloud KMS
Schlüssel erstellen und Berechtigungen gewähren
In der folgenden Anleitung wird beschrieben, wie Sie einen Schlüssel für eine Instanz erstellen und Berechtigungen zum Ver- und Entschlüsseln von Instanzdaten mit dem Schlüssel gewähren. Sie können einen Schlüssel verwenden, der direkt in Cloud KMS erstellt wurde, oder einen extern verwalteten Schlüssel, den Sie mit Cloud External Key Manager zur Verfügung stellen.
Im Google Cloud -Projekt, in dem Sie Ihre Schlüssel verwalten möchten:
Erstellen Sie mit der Methode
projects.locations.keyRings.create
einen Schlüsselbund. Der Speicherort des Cloud KMS-Schlüsselbunds muss mit dem Standort der Instanz übereinstimmen, die Sie verschlüsseln.REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
KMS_PROJECT_ID
: die Google Cloud Projekt-IDKMS_PROJECT_ID
für das Projekt, das den Schlüsselbund enthältLOCATION
: der Speicherort des Schlüsselbunds. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: eine benutzerdefinierte Kennung für den Schlüsselbund
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Führen Sie folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"PowerShell
Führen Sie folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand ContentSie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID", "createTime": "2023-03-14T15:52:55.358979323Z" }
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
KMS_PROJECT_ID
: die Google Cloud Projekt-IDKMS_PROJECT_ID
für das Projekt, das den Schlüsselbund enthältLOCATION
: der Speicherort des Schlüsselbunds. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: eine benutzerdefinierte Kennung für den Schlüsselbund
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud kms keyrings create KEY_RING_ID \ --project KMS_PROJECT_ID --location LOCATION
Windows (PowerShell)
gcloud kms keyrings create KEY_RING_ID ` --project KMS_PROJECT_ID --location LOCATION
Windows (cmd.exe)
gcloud kms keyrings create KEY_RING_ID ^ --project KMS_PROJECT_ID --location LOCATION
$
Erstellen Sie einen Schlüssel mit der Methode
projects.locations.keyRings.cryptoKeys
.REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
KMS_PROJECT_ID
: die Google Cloud Projekt-IDKMS_PROJECT_ID
für das Projekt, das den Schlüsselbund enthältLOCATION
: der Speicherort des Schlüsselbunds. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: die benutzerdefinierte Kennung für den SchlüsselbundKEY_ID
: eine benutzerdefinierte Kennung für den Schlüssel
JSON-Text der Anfrage:
{ "purpose": "ENCRYPT_DECRYPT" }
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' { "purpose": "ENCRYPT_DECRYPT" } 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://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_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:@' { "purpose": "ENCRYPT_DECRYPT" } '@ | 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://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand ContentSie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID", "primary": { "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1", "state": "ENABLED", "createTime": "2023-03-14T15:52:55.358979323Z", "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION", "generateTime": "2023-03-14T15:52:55.358979323Z" }, "purpose": "ENCRYPT_DECRYPT", "createTime": "2023-03-14T15:52:55.358979323Z", "versionTemplate": { "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION" }, "destroyScheduledDuration": "86400s" }
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
KMS_PROJECT_ID
: die Google Cloud Projekt-IDKMS_PROJECT_ID
für das Projekt, das den Schlüsselbund enthältLOCATION
: der Speicherort des Schlüsselbunds. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: die benutzerdefinierte Kennung für den SchlüsselbundKEY_ID
: eine benutzerdefinierte Kennung für den Schlüssel
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud kms keys create KEY_ID \ --keyring KEY_RING_ID \ --project KMS_PROJECT_ID \ --location LOCATION \ --purpose "encryption"
Windows (PowerShell)
gcloud kms keys create KEY_ID ` --keyring KEY_RING_ID ` --project KMS_PROJECT_ID ` --location LOCATION ` --purpose "encryption"
Windows (cmd.exe)
gcloud kms keys create KEY_ID ^ --keyring KEY_RING_ID ^ --project KMS_PROJECT_ID ^ --location LOCATION ^ --purpose "encryption"
$
Wenn Sie im AML AI-Projekt noch keine AML AI-Instanz erstellt haben, ist das AML AI-Dienstkonto noch nicht vorhanden. Erstellen Sie das Dienstkonto.
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
PROJECT_ID
: die Google Cloud Projekt-ID für das Projekt, in dem AML AI ausgeführt wird
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows (PowerShell)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Windows (cmd.exe)
gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
Weisen Sie dem AML AI-Dienstkonto die IAM-Rolle „CryptoKey-Verschlüsseler/Entschlüsseler“ (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) zu. Erteilen Sie diese Berechtigung für den von Ihnen erstellten Schlüssel.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
PROJECT_ID
: die Google Cloud Projekt-ID für das Projekt, in dem AML AI ausgeführt wirdKEY_ID
: die benutzerdefinierte Kennung für den SchlüsselLOCATION
: der Speicherort des Schlüsselbunds. Verwenden Sie eine der unterstützten Regionen.Standorte anzeigenus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: eine benutzerdefinierte Kennung für den SchlüsselbundPROJECT_NUMBER
: die Google Cloud Projektnummer für das Projekt, in dem AML AI ausgeführt wird
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \ --location LOCATION --keyring=KEY_RING_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows (PowerShell)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ` --location LOCATION --keyring=KEY_RING_ID ` --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ` --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Windows (cmd.exe)
gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^ --location LOCATION --keyring=KEY_RING_ID ^ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for key KEY_ID. bindings: - members: - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwYCq0Sq4Ho= version: 1
Weitere Informationen zu diesem Befehl finden Sie in der Dokumentation zu gcloud kms keys add-iam-policy-binding.
Sie können jetzt eine Instanz erstellen und dabei den Schlüssel für die Verschlüsselung angeben.
Zugriff entfernen
Es gibt verschiedene Möglichkeiten, den Zugriff auf den Schlüssel für die mit CMEK verschlüsselte Instanz zu entfernen:
- Widerrufen Sie die Rolle „Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler“ aus dem AML AI-Dienstkonto mithilfe der Google Cloud -Konsole oder der gcloud CLI.
- Deaktivieren Sie vorübergehend den CMEK-Schlüssel.
- Löschen Sie endgültig den CMEK-Schlüssel.
Wir empfehlen, die Berechtigungen des AML AI-Dienstkontos zu widerrufen, bevor Sie einen Schlüssel deaktivieren oder löschen. Die Änderung von Berechtigungen wird innerhalb von Sekunden wirksam, sodass Sie sofort nachvollziehen können, wie sich das Deaktivieren oder Löschen eines Schlüssels auswirkt.
Wenn Sie den Verschlüsselungsschlüssel für eine Instanz deaktivieren oder löschen, können Sie die mit der Instanz verknüpften Kundendaten nicht mehr verwenden oder abrufen. Auf alle in der Instanz gespeicherten Kundendaten kann dann nicht mehr zugegriffen werden. Dies gilt auch für Modelle, Engine-Konfigurationen, Backtest- und Vorhersageergebnisse. Nutzer mit einer beliebigen AML AI-Betrachterrolle können weiterhin Felder wie den Instanznamen oder die anderen Ressourcenfelder aufrufen, die beim Abrufen von AML AI-Ressourcen zurückgegeben werden.
Alle Vorgänge, bei denen Kundendaten verwendet oder exportiert werden, z. B. der Export von backtestResults
-Metadaten, schlagen fehl.
Nutzer mit der Rolle „AML AI-Administrator“ oder „Inhaber“ können die Instanz löschen.
CMEK-Organisationsrichtlinien
AML AI unterstützt keine CMEK-Organisationsrichtlinien. Für AML AI ist jedoch immer die Verwendung von CMEK erforderlich, unabhängig von der Organisationsrichtlinie constraints/gcp.restrictNonCmekServices
.
Interaktion mit VPC-SC
Wenn Sie AML AI in einem VPC-SC-Perimeter konfiguriert haben, muss der CMEK-Schlüssel weiterhin für das Dienstkonto zugänglich sein. Wenn sich der Schlüssel nicht im selben VPC-SC-Perimeter befindet, gibt es mehrere Möglichkeiten, dies zu erreichen, darunter:
- Ressource mit einer Regel für ausgehenden Traffic auf die Zulassungsliste setzen
- VPC-Perimeter-Peering verwenden