Geschützte Ressourcen mit Cloud KMS Autokey erstellen

Auf dieser Seite erfahren Sie, wie Sie geschützte Ressourcen mit Schlüsseln erstellen, die von Cloud KMS Autokey für die Verschlüsselung erstellt wurden. Weitere Informationen zu Autokey finden Sie unter Autokey.

Hinweise

Bevor Sie geschützte Ressourcen mit Autokey erstellen können, müssen Sie die folgenden Vorbereitungsschritte ausführen:

  1. Wenn Sie im Autokey-Ordner noch kein Ressourcenprojekt haben, müssen Sie ein Projekt erstellen, um die zu erstellenden Ressourcen darin abzulegen.
  2. Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Cloud KMS Autokey User (roles/cloudkms.autokeyUser) für den Ordner oder das Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Erstellen geschützter Ressourcen mit Autokey benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

  3. Außerdem benötigen Sie Berechtigungen zum Erstellen von Ressourcen im Autokey-Ordner oder in einem Ressourcenprojekt im Ordner. Weitere Informationen zu den Berechtigungen, die zum Erstellen der einzelnen Ressourcen erforderlich sind, finden Sie in der dienstspezifischen Dokumentation. Sie finden diese Dokumentation, indem Sie den Dienst in der Tabelle mit CMEK-Integrationen suchen und den Link für den Ressourcentyp aufrufen, den Sie erstellen möchten.

Autokey mit Compute Engine-Ressourcen verwenden

Autokey erstellt einen neuen Schlüssel für jedes Laufwerk, Image und Maschinen-Image am selben Speicherort wie die zu erstellende Ressource.

Autokey erstellt keine neuen Schlüssel für Snapshots. Für Snapshots sollte derselbe Schlüssel verwendet werden, der auch für die Verschlüsselung des Laufwerks verwendet wurde. Wenn Sie einen Snapshot mit der Google Cloud Console erstellen, wird der vom Laufwerk verwendete Verschlüsselungsschlüssel automatisch auf den Snapshot angewendet. Wenn Sie einen Snapshot mit der gcloud CLI, Terraform oder der Compute Engine API erstellen, müssen Sie den Schlüssel angeben, mit dem das Laufwerk verschlüsselt wurde, und den Snapshot mit diesem Schlüssel verschlüsseln.

Weitere Informationen zur Verwendung von CMEK mit Snapshots finden Sie unter Snapshot von einem mit CMEK verschlüsselten Laufwerk erstellen.

Geschützte Compute Engine-Ressource erstellen

Console

So erstellen Sie ein Laufwerk:

  1. Rufen Sie in der Google Cloud Console die Seite Laufwerke auf.

    Zur Seite „Laufwerke“

  2. Klicken Sie auf Laufwerk erstellen und geben Sie die Attribute für das neue Laufwerk ein.

  3. Wählen Sie unter Verschlüsselung die Option Cloud KMS-Schlüssel aus.

  4. Wählen Sie unter Schlüsseltyp die Option Cloud KMS mit Autokey aus und klicken Sie dann auf Neuen Schlüssel anfordern. Sie werden per Nachricht darüber informiert, wenn der Schlüssel erstellt wurde und einsatzbereit ist.

  5. Klicken Sie auf Erstellen, um das Laufwerk anzulegen.

Sie können ein ähnliches Verfahren anwenden, um geschützte VM-Instanzen, Images und Maschinen-Image-Ressourcen zu erstellen.

Terraform

Im folgenden Terraform-Beispiel wird ein Schlüssel-Handle erstellt und der zurückgegebene Schlüssel wird verwendet, um eine neue nichtflüchtige Laufwerkressource zu schützen:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "KEY_HANDLE"
  location               = "LOCATION"
  resource_type_selector = "compute.googleapis.com/Disk"
}

resource "google_compute_disk" "persistent_disk" {
  project = "RESOURCE_PROJECT_ID"
  name    = "DISK_NAME"
  type    = "pd-ssd"
  zone    = "ZONE"
  size    = 30
  physical_block_size_bytes = 4096
  disk_encryption_key {
    kms_key_self_link = google_kms_key_handle.my_key_handle.kms_key
  }
}

Ersetzen Sie Folgendes:

  • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
  • KEY_HANDLE: eine ID, die für den Schlüssel-Handle verwendet werden soll.
  • LOCATION: der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
  • DISK_NAME: durch den Namen des neuen Laufwerks.
  • ZONE: die Zone der geschützten Ressource. Dies muss eine Zone innerhalb des Speicherorts sein, an dem Sie die Ressource erstellen. Wenn Sie die Ressource beispielsweise am Standort us-central1 erstellen, könnte die Zone us-central1-a sein.

In Cloud KMS können Sie keine KeyHandle-Ressourcen löschen. Wenn Sie ein Erstellen-und-Vernichten-Muster verwenden, wird beim Versuch, einen KeyHandle neu zu erstellen, ein ALREADY_EXISTS-Fehler ausgegeben. Sie können dieses Problem vermeiden, indem Sie eine zuvor erstellte KeyHandle importieren. Weitere Informationen finden Sie auf dieser Seite unter Muster in Terraform erstellen und löschen.

API

  1. Erstellen Sie einen neuen Cloud KMS-Schlüssel, indem Sie eine KeyHandle erstellen:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Ersetzen Sie Folgendes:

    • USER_PROJECT: das Projekt, dem die mit dieser Anfrage verbundenen Kosten in Rechnung gestellt werden.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • LOCATION: Der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
    • RESOURCE_TYPE: Der Typ der Ressource, die Sie erstellen möchten, z. B. compute.googleapis.com/Disk.

    Die Ausgabe sieht in etwa so aus:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Notieren Sie sich die OPERATION_ID aus der Ausgabe. Sie benötigen diesen Wert, um die Ressourcen-ID des erstellten Schlüssels abzurufen.

  2. Suchen Sie den Cloud KMS-Schlüssel, der mit dem Schlüssel-Handle verknüpft ist:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Ersetzen Sie Folgendes:

    • USER_PROJECT: das Projekt, dem die mit dieser Anfrage verbundenen Kosten in Rechnung gestellt werden.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • LOCATION: Der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
    • OPERATION_ID: Die Kennung der Schlüssel-Handle-Anfrage aus der Ausgabe des vorherigen Schritts.

    Die Ausgabe sieht in etwa so aus:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    Der Wert des Elements kmsKey in der Ausgabe ist die vollständige Ressourcen-ID des Schlüssels, der von Autokey für diese Ressource erstellt wurde. Sie können diese Ressourcen-ID wie die Ressourcen-ID für jede andere Cloud KMS-Ressource verwenden.

  3. Erstellen Sie mit dem Befehl gcloud compute disks create und dem Flag --kms-key ein verschlüsseltes Laufwerk:

    gcloud compute disks create DISK_NAME \
      --kms-key projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME
    

    Ersetzen Sie Folgendes:

    • DISK_NAME: durch den Namen des neuen Laufwerks.
    • KEY_PROJECT_ID: die Projekt-ID des Schlüsselprojekts.
    • LOCATION: der Speicherort, an dem Sie die Ressource erstellen möchten.
    • KEY_NAME: Der Name des Schlüssels, der in der Ausgabe des vorherigen Schritts zurückgegeben wurde.

Autokey mit Cloud Storage-Ressourcen verwenden

Autokey erstellt einen neuen Schlüssel am selben Speicherort wie der Bucket. Der von Autokey erstellte Schlüssel wird als Standardschlüssel des Buckets zugewiesen.

Autokey erstellt keine Schlüssel für Objekte. Standardmäßig verwenden Objekte, die in einem Bucket erstellt werden, den Standardschlüssel des Buckets. Wenn Sie ein Objekt mit einem anderen Schlüssel als dem Standardschlüssel des Buckets verschlüsseln möchten, können Sie einen CMEK manuell erstellen und beim Erstellen des Objekts verwenden.

Wenn Sie den einem Bucket zugewiesenen Standardschlüssel ändern möchten, können Sie jeden vorhandenen CMEK verwenden, einschließlich von Autokey erstellter Schlüssel.

Geschützte Cloud Storage-Ressource erstellen

Console

  1. Rufen Sie in der Google Cloud Console die Seite Bucket erstellen auf.

    Zur Seite „Bucket erstellen“

  2. Folgen Sie der Anleitung zum Erstellen eines neuen Buckets bis zum Abschnitt Auswählen, wie Objektdaten geschützt werden sollen.

  3. Maximieren Sie unter Festlegen, wie Objektdaten geschützt werden sollen den Bereich Datenverschlüsselung und wählen Sie dann Cloud KMS-Schlüssel aus.

  4. Wählen Sie unter Schlüsseltyp die Option Cloud KMS mit Autokey aus und klicken Sie dann auf Neuen Schlüssel anfordern. Sie werden per Nachricht darüber informiert, wenn der Schlüssel erstellt wurde und einsatzbereit ist.

  5. Klicken Sie auf Erstellen, um die Erstellung des Buckets abzuschließen.

Terraform

Im folgenden Terraform-Beispiel wird ein Schlüssel-Handle erstellt und der zurückgegebene Schlüssel wird verwendet, um einen neuen Speicher-Bucket zu schützen:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "KEY_HANDLE"
  location               = "LOCATION"
  resource_type_selector = "storage.googleapis.com/Bucket"
}

resource "google_storage_bucket" "simple_bucket_name" {
  name                        = "BUCKET_NAME"
  location                    = "LOCATION"
  force_destroy               = true
  project                     = "RESOURCE_PROJECT_ID"
  uniform_bucket_level_access = true
  encryption {
    default_kms_key_name      = google_kms_key_handle.my_key_handle.kms_key
  }
}

Ersetzen Sie Folgendes:

  • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
  • KEY_HANDLE: eine ID, die für den Schlüssel-Handle verwendet werden soll.
  • LOCATION: der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
  • BUCKET_NAME: der Name des neuen Buckets.

In Cloud KMS können Sie keine KeyHandle-Ressourcen löschen. Wenn Sie ein Erstellen-und-Vernichten-Muster verwenden, wird beim Versuch, einen KeyHandle neu zu erstellen, ein ALREADY_EXISTS-Fehler ausgegeben. Sie können dieses Problem vermeiden, indem Sie eine zuvor erstellte KeyHandle importieren. Weitere Informationen finden Sie auf dieser Seite unter Muster in Terraform erstellen und löschen.

API

  1. Erstellen Sie einen neuen Cloud KMS-Schlüssel, indem Sie eine KeyHandle erstellen:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Ersetzen Sie Folgendes:

    • USER_PROJECT: das Projekt, dem die mit dieser Anfrage verbundenen Kosten in Rechnung gestellt werden.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • LOCATION: Der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
    • RESOURCE_TYPE: Der Typ der Ressource, die Sie erstellen möchten, z. B. storage.googleapis.com/Bucket.

    Die Ausgabe sieht in etwa so aus:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Notieren Sie sich die OPERATION_ID aus der Ausgabe. Sie benötigen diesen Wert, um die Ressourcen-ID des erstellten Schlüssels abzurufen.

  2. Suchen Sie den Cloud KMS-Schlüssel, der mit dem Schlüssel-Handle verknüpft ist:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Ersetzen Sie Folgendes:

    • USER_PROJECT: das Projekt, dem die mit dieser Anfrage verbundenen Kosten in Rechnung gestellt werden.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • LOCATION: Der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
    • OPERATION_ID: Die Kennung der Schlüssel-Handle-Anfrage aus der Ausgabe des vorherigen Schritts.

    Die Ausgabe sieht in etwa so aus:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    Der Wert des kmsKey-Elements in der Ausgabe ist die vollständige Ressourcen-ID des Schlüssels, der von Autokey für diese Ressource erstellt wurde. Sie können diese Ressourcen-ID wie die Ressourcen-ID für jede andere Cloud KMS-Ressource verwenden.

  3. Erstellen Sie mit dem Befehl gcloud storage buckets create und dem Flag --default-encryption-key einen verschlüsselten Bucket:

    gcloud storage buckets create gs://BUCKET_NAME \
        --location=LOCATION \
        --default-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME
    

    Ersetzen Sie Folgendes:

    • BUCKET_NAME: der Name des neuen Buckets. Der Bucket-Name muss den Anforderungen für Bucket-Namen entsprechen.
    • LOCATION: der Speicherort, an dem Sie den Bucket erstellen möchten.
    • KEY_PROJECT_ID: die Projekt-ID des Schlüsselprojekts.
    • LOCATION: der Speicherort, an dem Sie die Ressource erstellen möchten.
    • KEY_NAME: Der Name des Schlüssels, der in der Ausgabe des vorherigen Schritts zurückgegeben wurde.

Autokey mit BigQuery-Ressourcen verwenden

Cloud KMS ist in mehreren BigQuery-Versionen verfügbar. Achten Sie darauf, dass die von Ihnen verwendete BigQuery-Version mit Cloud KMS kompatibel ist, bevor Sie versuchen, BigQuery-Ressourcen mit Autokey zu schützen. Weitere Informationen zu BigQuery-Versionen finden Sie unter BigQuery-Versionen.

Für jeden neuen Datensatz erstellt Autokey einen neuen Schlüssel am selben Speicherort wie die Ressource selbst. Dieser Schlüssel wird zum Standardschlüssel des Datensatzes.

Autokey erstellt keine Schlüssel für Tabellen, Abfragen, temporäre Tabellen oder Modelle. Standardmäßig sind diese Ressourcen durch den Standardschlüssel des Datensatzes geschützt. Wenn Sie eine Ressource in einem Datensatz mit einem anderen Schlüssel als dem Standardschlüssel des Datensatzes schützen möchten, können Sie einen CMEK manuell erstellen und diesen Schlüssel beim Erstellen der Ressource verwenden.

Verwenden Sie für Abfragen und temporäre Tabellen, die sich nicht in einem Dataset befinden, die Standardschlüssel des Projekts. Verwenden Sie für jeden Speicherort im Projekt, der BigQuery-Ressourcen enthält, einen anderen Standardschlüssel. Weitere Informationen zur Verwendung von Projekt-Standardschlüsseln finden Sie unter Projekt-Standardschlüssel festlegen.

Weitere Informationen zur Verwendung von CMEK mit BigQuery finden Sie unter Vom Kunden verwaltete Cloud KMS-Schlüssel.

Geschützte BigQuery-Ressource erstellen

Console

Bevor Sie versuchen, ein BigQuery-Dataset mit Autokey zu erstellen, müssen Sie die erforderlichen Berechtigungen haben. Weitere Informationen zum Erstellen von Datasets finden Sie unter Datasets erstellen.

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Folgen Sie der Anleitung zum Erstellen eines Datensatzes bis zu Erweiterte Optionen > Verschlüsselung.

  3. Wählen Sie unter Verschlüsselung die Option Cloud KMS-Schlüssel aus.

  4. Wählen Sie unter Schlüsseltyp die Option Cloud KMS mit Autokey aus und klicken Sie dann auf Neuen Schlüssel anfordern. Sie werden per Nachricht darüber informiert, wenn der Schlüssel erstellt wurde und einsatzbereit ist.

  5. Klicken Sie auf Dataset erstellen, um das Dataset fertigzustellen.

Terraform

Im folgenden Terraform-Beispiel wird ein Schlüssel-Handle erstellt und der zurückgegebene Schlüssel verwendet, um einen neuen Datensatz zu schützen:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "test-key-handle"
  location               = "LOCATION"
  resource_type_selector = "bigquery.googleapis.com/Dataset"
}

resource "google_bigquery_dataset" "dataset" {
  project                     = "RESOURCE_PROJECT_ID"
  dataset_id                  = "DATASET_ID"
  friendly_name               = "DATASET_NAME"
  description                 = "DATASET_DESCRIPTION"
  location                    = "LOCATION"
  default_table_expiration_ms = 3600000

  default_encryption_configuration {
    kms_key_name = google_kms_key_handle.my_key_handle.kms_key
  }
}

Ersetzen Sie Folgendes:

  • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
  • LOCATION: der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
  • DATASET_ID: Die ID, die für das neue Dataset verwendet werden soll.
  • DATASET_NAME: Ein nutzerfreundlicher Name für das neue Dataset.
  • DATASET_DESCRIPTION: eine Beschreibung für das neue Dataset.

In Cloud KMS können Sie keine KeyHandle-Ressourcen löschen. Wenn Sie ein Erstellen-und-Vernichten-Muster verwenden, wird beim Versuch, einen KeyHandle neu zu erstellen, ein ALREADY_EXISTS-Fehler ausgegeben. Sie können dieses Problem vermeiden, indem Sie eine zuvor erstellte KeyHandle importieren. Weitere Informationen finden Sie auf dieser Seite unter Muster in Terraform erstellen und löschen.

API

  1. Erstellen Sie einen neuen Cloud KMS-Schlüssel, indem Sie eine KeyHandle erstellen:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Ersetzen Sie Folgendes:

    • USER_PROJECT: das Projekt, dem die mit dieser Anfrage verbundenen Kosten in Rechnung gestellt werden.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • LOCATION: Der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
    • RESOURCE_TYPE: Der Typ der Ressource, die Sie erstellen möchten, z. B. bigquery.googleapis.com/Dataset.

    Die Ausgabe sieht in etwa so aus:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Notieren Sie sich die OPERATION_ID aus der Ausgabe. Sie benötigen diesen Wert, um die Ressourcen-ID des erstellten Schlüssels abzurufen.

  2. Suchen Sie den Cloud KMS-Schlüssel, der mit dem Schlüssel-Handle verknüpft ist:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Ersetzen Sie Folgendes:

    • USER_PROJECT: das Projekt, dem die mit dieser Anfrage verbundenen Kosten in Rechnung gestellt werden.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • LOCATION: Der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
    • OPERATION_ID: Die Kennung der Schlüssel-Handle-Anfrage aus der Ausgabe des vorherigen Schritts.

    Die Ausgabe sieht in etwa so aus:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    Der Wert des kmsKey-Elements in der Ausgabe ist die vollständige Ressourcen-ID des Schlüssels, der von Autokey für diese Ressource erstellt wurde. Sie können diese Ressourcen-ID wie die Ressourcen-ID für jede andere Cloud KMS-Ressource verwenden.

  3. Erstellen Sie mit dem Befehl bq mk und dem Flag --destination_kms_key ein verschlüsseltes Dataset.

    bq --location=LOCATION mk \
        --dataset \
        --default_kms_key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME \
        --default_table_expiration=TABLE_EXPIRATION \
        --description="DATASET_DESCRIPTION" \
        RESOURCE_PROJECT_ID:DATASET_ID
    

    Ersetzen Sie Folgendes:

    • LOCATION: der Speicherort, an dem Sie das Dataset erstellen möchten.
    • KEY_PROJECT_ID: die Projekt-ID des Schlüsselprojekts.
    • KEY_NAME: Der Name des Schlüssels, der in der Ausgabe des vorherigen Schritts zurückgegeben wurde.
    • TABLE_EXPIRATION: die Standardlebensdauer neuer Tabellen in diesem Dataset in Sekunden.
    • DATASET_DESCRIPTION: eine Beschreibung für das neue Dataset.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • DATASET_ID: die ID des zu erstellenden Datasets.

    Weitere Informationen zum bq-Tool finden Sie unter bq-Befehlszeilentool entdecken.

Autokey mit Secret Manager-Ressourcen verwenden

Autokey erstellt einen einzelnen Schlüssel zum Schutz aller Secrets im selben Projekt und am selben Speicherort. Wenn der Schlüssel rotiert, wird für neue Secrets, die dem Projekt hinzugefügt werden, die neue primäre Version des Schlüssels verwendet.

Secret Manager ist nur dann mit Cloud KMS Autokey kompatibel, wenn Ressourcen mit Terraform oder der REST API erstellt werden.

Geschützte Secret Manager-Ressource erstellen

Terraform

Im folgenden Terraform-Beispiel wird ein Schlüssel-Handle erstellt und der zurückgegebene Schlüssel verwendet, um ein neues Secret mit automatischer Replikation zu schützen:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "test-key-handle"
  location               = "global"
  resource_type_selector = "secretmanager.googleapis.com/Secret"
}

resource "google_secret_manager_secret" "my_secret" {
  project   = "RESOURCE_PROJECT_ID"
  secret_id = "SECRET_ID"

  replication {
    auto {
      customer_managed_encryption {
        kms_key_name = google_kms_key_handle.my_key_handle.kms_key
      }
    }
  }
}

Ersetzen Sie Folgendes:

  • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
  • SECRET_ID: die ID, die für das neue Secret verwendet werden soll.

Wenn Sie versuchen, einen Schlüssel-Handle für ein Secret im selben Projekt und an demselben Speicherort zu erstellen, für den bereits ein Schlüssel-Handle vorhanden ist, werden in einer Fehlermeldung die Details des vorhandenen Schlüssel-Handles zurückgegeben. Achten Sie in diesem Fall darauf, dass nur ein Block den Schlüssel-Handle erstellt. Sie können den Schlüssel-Handle mit seiner ID (KEY_HANDLE) wiederverwenden, um zusätzliche Secrets zu erstellen, die denselben Schlüssel verwenden sollen.

In Cloud KMS können Sie keine KeyHandle-Ressourcen löschen. Wenn Sie ein Erstellen-und-Vernichten-Muster verwenden, wird beim Versuch, einen KeyHandle neu zu erstellen, ein ALREADY_EXISTS-Fehler ausgegeben. Sie können dieses Problem vermeiden, indem Sie eine zuvor erstellte KeyHandle importieren. Weitere Informationen finden Sie auf dieser Seite unter Muster in Terraform erstellen und löschen.

API

  1. Erstellen Sie einen neuen Cloud KMS-Schlüssel, indem Sie eine KeyHandle erstellen:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Ersetzen Sie Folgendes:

    • USER_PROJECT: das Projekt, dem die mit dieser Anfrage verbundenen Kosten in Rechnung gestellt werden.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • LOCATION: Der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
    • RESOURCE_TYPE: Der Typ der Ressource, die Sie erstellen möchten, z. B. secretmanager.googleapis.com/Secret.

    Die Ausgabe sieht in etwa so aus:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Notieren Sie sich die OPERATION_ID aus der Ausgabe. Sie benötigen diesen Wert, um die Ressourcen-ID des erstellten Schlüssels abzurufen.

    Wenn Sie versuchen, einen Schlüssel-Handle für ein Geheimnis im selben Projekt und am selben Speicherort zu erstellen, für den bereits ein Schlüssel-Handle vorhanden ist, wird in einer Fehlermeldung der Details des vorhandenen Schlüssel-Handles zurückgegeben. Überspringen Sie in diesem Fall den nächsten Schritt und verwenden Sie die Schlüsselressourcen-ID im Feld existingKmsKey, um Ihr neues Geheimnis zu schützen.

  2. Suchen Sie den Cloud KMS-Schlüssel, der mit dem Schlüssel-Handle verknüpft ist:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Ersetzen Sie Folgendes:

    • USER_PROJECT: das Projekt, dem die mit dieser Anfrage verbundenen Kosten in Rechnung gestellt werden.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.
    • LOCATION: Der Speicherort, an dem Sie die geschützte Ressource erstellen möchten.
    • OPERATION_ID: Die Kennung der Schlüssel-Handle-Anfrage aus der Ausgabe des vorherigen Schritts.

    Die Ausgabe sieht in etwa so aus:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    Der Wert des kmsKey-Elements in der Ausgabe ist die vollständige Ressourcen-ID des Schlüssels, der von Autokey für diese Ressource erstellt wurde. Sie können diese Ressourcen-ID wie die Ressourcen-ID für jede andere Cloud KMS-Ressource verwenden.

  3. Erstellen Sie mit dem Befehl gcloud secrets create und dem Flag --kms-key-name ein verschlüsseltes Secret mit automatischer Replikation.

    gcloud secrets create "SECRET_ID" \
        --replication-policy "automatic" \
        --kms-key-name "projects/KEY_PROJECT_ID/locations/global/keyRings/autokey/cryptoKeys/KEY_NAME" \
        --project "RESOURCE_PROJECT_ID"
    

    Ersetzen Sie Folgendes:

    • SECRET_ID: die ID, die für das neue Secret verwendet werden soll.
    • KEY_PROJECT_ID: die Projekt-ID des Schlüsselprojekts.
    • KEY_NAME: Der Name des Schlüssels, der in der Ausgabe des vorherigen Schritts zurückgegeben wurde.
    • RESOURCE_PROJECT_ID: die Projekt-ID des Ressourcenprojekts im Autokey-Ordner, in dem Sie eine geschützte Ressource erstellen möchten.

Erstellen-und-Löschen-Muster in Terraform

In Cloud KMS können Sie keine KeyHandle-Ressourcen löschen. Wenn Sie Terraform und ein Erstellen-und-Vernichten-Muster verwenden, wird beim Versuch, eine KeyHandle neu zu erstellen, ein ALREADY_EXISTS-Fehler ausgegeben. Sie können dieses Problem vermeiden, indem Sie einen import-Block verwenden. Fügen Sie den folgenden Block vor den Block resource für die Ressource google_kms_key_handle ein:

import {
  to = google_kms_key_handle.KEY_HANDLE
  id = "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE"
}

Nächste Schritte