Cloud KMS-Autoschlüssel aktivieren

Auf dieser Seite wird beschrieben, wie Sie den Cloud KMS-Autoschlüssel für einen Ressourcenordner aktivieren und konfigurieren. Weitere Informationen zum Autokey finden Sie unter Autokey – Übersicht. Die Schritte auf dieser Seite sollten von einem Sicherheitsadministrator ausgeführt werden.

Hinweise

Bevor Sie den Cloud KMS-Autoschlüssel aktivieren können, benötigen Sie Folgendes:

  • Eine Organisationsressource, die einen Ordner enthält, in dem Sie Autokey aktivieren möchten. Wenn Sie keinen Ordner haben, in dem Sie Autokey aktivieren möchten, können Sie einen neuen Ressourcenordner erstellen. Wenn Sie den Autokey für diesen Ordner aktivieren, wird er für alle Ressourcenprojekte im Ordner aktiviert.
  • Wenn Sie Ressourcenprojekte haben, für die Sie Autokey verwenden möchten, diese sich aber nicht in einem Ordner befinden, in dem Sie den Autokey aktivieren, können Sie vorhandene Ressourcenprojekte in neue Ordner verschieben.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für die Organisation oder den Ordner zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Aktivieren und Konfigurieren des Autoschlüssels benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Aktivieren und Konfigurieren des Autokey erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um den Autokey zu aktivieren und zu konfigurieren:

  • cloudkms.autokeyConfigs.*
  • cloudkms.projects.showEffectiveAutokeyConfig
  • resourcemanager.folders.get
  • resourcemanager.folders.getIamPolicy
  • resourcemanager.folders.setIamPolicy
  • billing.resourceAssociations.create

Möglicherweise können Sie diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Wie möchten Sie Autokey aktivieren?

Sie können Autokey im Rahmen Ihrer Infrastructure as a Service-Strategie aktivieren, indem Sie mit Terraform die erforderlichen Konfigurationsänderungen vornehmen. Wenn Sie den Autokey mit Terraform aktivieren möchten, lesen Sie den Abschnitt Autokey mit Terraform aktivieren auf dieser Seite. Wenn Sie Terraform nicht verwenden möchten, folgen Sie zuerst der Anleitung im nächsten Abschnitt.

Schlüsselprojekt einrichten

Wir empfehlen, ein neues Schlüsselprojekt zu erstellen, das vom Autokey erstellte Cloud KMS-Ressourcen enthält. Sie sollten das Schlüsselprojekt in Ihrer Organisationsressource erstellen. Wenn Sie bereits ein Schlüsselprojekt haben, das Sie für von Autokey erstellte Schlüssel verwenden möchten, können Sie den Abschnitt Schlüsselprojekt erstellen überspringen und mit Autokey-Schlüsselprojekt konfigurieren auf dieser Seite fortfahren.

Das Schlüsselprojekt kann im selben Ordner erstellt werden, in dem Sie Autokey aktivieren möchten. Sie sollten keine anderen Ressourcen im Schlüsselprojekt erstellen. Wenn Sie versuchen, durch Autokey geschützte Ressourcen im Schlüsselprojekt zu erstellen, lehnt Autokey die Anfrage eines neuen Schlüssels ab.

Wenn Sie später zu Assured Workloads migrieren möchten, erstellen Sie das Schlüsselprojekt im selben Ordner wie die Ressourcen, die durch diese Schlüssel geschützt sind.

Wenn Ihre Organisation die Einschränkung der Organisationsrichtlinie constraints/gcp.restrictCmekCryptoKeyProjects verwendet, um sicherzustellen, dass alle CMEKs aus angegebenen Schlüsselprojekten stammen, müssen Sie das Schlüsselprojekt der Liste der zulässigen Projekte hinzufügen. Weitere Informationen zur CMEK-Organisationsrichtlinie finden Sie unter CMEK-Organisationsrichtlinien.

Schlüsselprojekt erstellen

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie unter Organisation auswählen die Organisationsressource aus, in der Sie ein Projekt erstellen möchten.
  3. Klicken Sie auf Projekt erstellen.
  4. Geben Sie im angezeigten Fenster Neues Projekt einen Projektnamen ein und wählen Sie ein Rechnungskonto aus. Ein Projektname darf nur Buchstaben, Ziffern, einfache Anführungszeichen, Bindestriche, Leerzeichen oder Ausrufezeichen enthalten und muss zwischen 4 und 30 Zeichen lang sein.
  5. Wählen Sie unter Location (Standort) die Ressource aus, die dem Schlüsselprojekt übergeordnet sein soll.
  6. Klicken Sie auf Erstellen, um die Erstellung des Projekts abzuschließen.

gcloud

  • Erstellen Sie ein neues Projekt:

    gcloud projects create PROJECT_ID \
        --PARENT_TYPE=PARENT_ID
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Projekts, das den Schlüsselbund enthält.
    • PARENT_TYPE: Der Typ der Ressource, in der Sie das neue Schlüsselprojekt erstellen möchten. Geben Sie organization ein, um das neue Schlüsselprojekt in einer bestimmten Organisation zu erstellen, oder folder, um das neue Schlüsselprojekt in einem bestimmten Ordner zu erstellen.
    • PARENT_ID: die ID der Organisation oder des Ordners, in dem Sie das Schlüsselprojekt erstellen möchten

Autokey-Schlüsselprojekt vorbereiten

Console

  1. Aktivieren Sie die Cloud KMS API in Ihrem Schlüsselprojekt.

    API aktivieren

  2. Wenn Sie ein neues Schlüsselprojekt verwenden, gewähren Sie Ihren Cloud KMS-Administratornutzern Cloud KMS-Administratorberechtigungen für das Schlüsselprojekt:

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

      IAM aufrufen

    2. Wählen Sie das Schlüsselprojekt aus.

    3. Klicken Sie auf Zugriff gewähren und geben Sie die E-Mail-Adresse des Nutzers ein.

    4. Wählen Sie die Rolle Cloud KMS-Administrator aus.

    5. Klicken Sie auf Speichern.

gcloud

  1. Aktivieren Sie die Cloud KMS API in Ihrem Schlüsselprojekt:

    gcloud services enable cloudkms.googleapis.com
    
  2. Gewähren Sie Ihren Cloud KMS-Administratornutzern Cloud KMS-Administratorberechtigungen für das Schlüsselprojekt:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: die Projektnummer des Schlüsselprojekts.
    • KEY_ADMIN_EMAIL: die E-Mail-Adresse des Nutzers, der für die Verwaltung von Cloud KMS-Schlüsseln verantwortlich ist.

Cloud KMS Autokey für einen Ressourcenordner aktivieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite KMS-Steuerelemente auf.

    KMS-Einstellungen aufrufen

  2. Wählen Sie in der Kontextauswahl den Ordner aus, in dem Sie Autokey aktivieren möchten.

  3. Klicken Sie auf Aktivieren.

  4. Wählen Sie Ihr Schlüsselprojekt aus und klicken Sie auf Senden.

    Eine Nachricht bestätigt, dass der Cloud KMS-Autoschlüssel für den Ordner aktiviert ist.

API

Erstellen Sie die AutokeyConfig für den Ordner, für den Sie Autokey aktivieren möchten:

curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"key_project": "projects/PROJECT_ID"}'

Ersetzen Sie Folgendes:

  • FOLDER_ID: die ID des Ordners, in dem Sie den Autokey aktivieren möchten.
  • PROJECT_ID: die ID des Schlüsselprojekts

Cloud KMS-Dienst-Agent einrichten

Der Cloud KMS-Dienst-Agent für ein Schlüsselprojekt erstellt im Namen eines menschlichen Cloud KMS-Administrators Schlüssel und wendet bei der Ressourcenerstellung IAM-Richtlinienbindungen an. Damit der Cloud KMS-Dienst-Agent Schlüssel erstellen und zuweisen kann, benötigt er Cloud KMS-Administratorberechtigungen.

  1. Erstellen Sie den Cloud KMS-Dienst-Agent:

    gcloud beta services identity create --service=cloudkms.googleapis.com \
        --project=PROJECT_NUMBER
    

    Ersetzen Sie PROJECT_NUMBER durch die Projektnummer des Schlüsselprojekts.

  2. Gewähren Sie dem Dienst-Agent Cloud KMS-Administratorberechtigungen:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
    

    Ersetzen Sie PROJECT_NUMBER durch die Projektnummer des Schlüsselprojekts.

Autokey-Nutzerrollen gewähren

Bevor Ihre Entwickler den Autokey verwenden können, müssen Sie ihnen die erforderliche Rolle zuweisen. Sie können die Rolle auf Ordner- oder auf Projektebene zuweisen. Mit dieser Rolle können Entwickler beim Erstellen von Ressourcen in diesem Ordner oder Projekt Schlüssel vom Cloud KMS-Dienst-Agent anfordern.

Wählen Sie einen oder beide der folgenden Schritte aus:

  • Weisen Sie die Rolle roles/cloudkms.autokeyUser auf Ordnerebene zu:

    gcloud resource-manager folders add-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Ersetzen Sie Folgendes:

    • FOLDER_ID: die ID des Ordners, für den Sie den Autoschlüssel aktivieren möchten.
    • USER_EMAIL: die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zur Verwendung des Autoschlüssels erteilen möchten.
  • Weisen Sie die Rolle roles/cloudkms.autokeyUser auf Projektebene zu:

    gcloud projects add-iam-policy-binding PROJECT_NUMBER \
        --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID des Ressourcenprojekts.
    • USER_EMAIL: die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zur Verwendung des Autoschlüssels erteilen möchten.

Ihre Autokey-Entwickler können jetzt Schlüssel bei Bedarf erstellen. Informationen zum Erstellen von Ressourcen, die mit Schlüsseln geschützt werden, die on demand vom Autokey erstellt wurden, finden Sie unter Geschützte Ressourcen mit dem Autokey erstellen.

Autokey mit Terraform aktivieren

Im folgenden Terraform-Beispiel werden die folgenden Einrichtungsschritte automatisiert:

  • Ressourcenordner erstellen
  • Schlüsselprojekt erstellen
  • Nutzerberechtigungen gewähren
  • Cloud KMS-Dienst-Agent einrichten
  • Autokey aktivieren

Sie müssen Ressourcenprojekte im Ressourcenordner separat erstellen.

variable "organization_ID" {
  description = "Your Google Cloud Org ID"
  type        = string
  default     = "ORGANIZATION_ID"
}

variable "billing_account" {
  description = "Your Google Cloud Billing Account ID"
  type        = string
  default     = "BILLING_ACCOUNT_ID"
}

/* List the users who should have the authority to enable and configure
   Autokey at a folder level */
variable "autokey_folder_admins" {
  type    = list(string)
  default = [AUTOKEY_ADMIN_USER_IDS]
}

/* List the users who should have the authority to protect their resources
   with Autokey */
variable "autokey_folder_users" {
  type    = list(string)
  default = [AUTOKEY_DEVELOPER_USER_IDS]
}

/* List the users who should have the authority to manage crypto operations in
   the Autokey key project */
variable "autokey_project_kms_admins" {
  type    = list(string)
  default = [KEY_PROJECT_ADMIN_USER_IDS]
}

/* The project ID to use for the key project. The project ID must be 6 to 30
   characters with lowercase letters, digits, hyphens. The project ID must start
   with a letter. Trailing hyphens are prohibited */
variable "key_management_project_ID" {
  description = "Sets the project ID for the Key Management Project. This project will contain the Key Rings and Keys generated by Cloud KMS Autokey"
  type        = string
  default     = "KEY_PROJECT_ID"
}

# Create a new folder
resource "google_folder" "autokey_folder" {
  parent       = "organizations/${var.organization_ID}"
  display_name = "autokey_folder"
}

# Set permissions for key admins to use Autokey in this folder
resource "google_folder_iam_binding" "autokey_folder_admin" {
  folder  = google_folder.autokey_folder.name
  role    = "roles/cloudkms.autokeyAdmin"
  members = var.autokey_folder_admins
}

# Set permissions for users to protect resources with Autokey in this folder
resource "google_folder_iam_binding" "autokey_folder_users" {
  folder  = google_folder.autokey_folder.name
  role    = "roles/cloudkms.autokeyUser"
  members = var.autokey_folder_users
}

# Create a key project to store keys created by Autokey
 resource "google_project" "key_management_project" {
  project_id      = var.key_management_project_ID
  name            = var.key_management_project_ID
  billing_account = var.billing_account
  folder_id       = google_folder.autokey_folder.name
}

output "project_number" {
  value = google_project.key_management_project.number
}

# Grant role for Cloud KMS admins to use Autokey in the key project
resource "google_project_iam_binding" "autokey_project_admin" {
  project    = google_project.key_management_project.project_id
  role       = "roles/cloudkms.admin"
  members    = var.autokey_project_kms_admins
  depends_on = [ google_project.key_management_project ]
}

# Enable the Cloud KMS API in the key project
resource "google_project_service" "enable_api" {
  service                    = "cloudkms.googleapis.com"
  project                    = google_project.key_management_project.project_id
  disable_on_destroy         = false
  disable_dependent_services = false
  depends_on                 = [google_project.key_management_project]
}

# Create Cloud KMS service agent
resource "google_project_service_identity" "KMS_Service_Agent" {
  provider   = google-beta
  service    = "cloudkms.googleapis.com"
  project    = google_project.key_management_project.project_id
  depends_on = [google_project.key_management_project]
}

/* Grant role for the Cloud KMS service agent to use delegated
   Cloud KMS admin permissions */
resource "google_project_iam_member" "autokey_project_admin" {
  project = google_project.key_management_project.project_id
  role    = "roles/cloudkms.admin"
  member  = "serviceAccount:service-${google_project.key_management_project.number}@gcp-sa-cloudkms.iam.gserviceaccount.com"
}

/* Enable AutokeyConfig in this folder */
resource "google_kms_autokey_config" "autokey_config" {
  provider    = google-beta
  folder      = google_folder.autokey_folder.folder_id
  key_project = google_project.key_management_project.project_id
}

Ersetzen Sie Folgendes:

  • BILLING_ACCOUNT_ID: Ihre Google Cloud-Rechnungskonto-ID. Die Rechnungskonto-ID ist ein 18-stelliger alphanumerischer Wert, der durch Bindestriche getrennt ist, z. B. 010101-F0FFF0-10XX01.
  • AUTOKEY_ADMIN_USER_IDS: eine Liste von E-Mail-Adressen für Nutzer, die die Rolle roles/cloudkms.autokeyAdmin haben sollten, z. B. "Ariel@example.com", "Charlie@example.com".
  • AUTOKEY_DEVELOPER_USER_IDS: eine Liste von E-Mail-Adressen für Nutzer, die die Rolle roles/cloudkms.autokeyUser haben sollten, z. B. "Kalani@example.com", "Mahan@example.com".
  • KEY_PROJECT_ADMIN_USER_IDS: eine Liste mit E-Mail-Adressen für Nutzer, die die Rolle roles/cloudkms.admin haben sollten, z. B. "Sasha@example.com", "Nur@example.com".
  • KEY_PROJECT_ID: Die ID, die für das Schlüsselprojekt verwendet werden soll, z. B. autokey-key-project.

Verwendung des Autoschlüssels erzwingen

Wenn Sie die Verwendung des Autokey in einem Ordner erzwingen möchten, können Sie IAM-Zugriffssteuerungen mit CMEK-Organisationsrichtlinien kombinieren. Dazu werden Berechtigungen zur Schlüsselerstellung von anderen Hauptkonten als dem Cloud KMS-Dienst-Agent entfernt. Anschließend müssen alle Ressourcen durch einen CMEK mit dem Autokey-Schlüsselprojekt geschützt werden.

Führen Sie die folgenden Schritte aus, um die Verwendung des Autokey in einem Ordner zu erzwingen:

  1. Entfernen Sie den Zugriff, um Schlüssel manuell im Schlüsselprojekt zu erstellen. Wenn Schlüssel nicht manuell erstellt werden können, können in diesem Projekt nur von Autokey erstellte Schlüssel erstellt werden. Weitere Informationen zur Zugriffssteuerung finden Sie unter Zugriffssteuerung mit IAM.

  2. Legen Sie eine Organisationsrichtlinie für den Ordner fest, um festzulegen, dass Ressourcen mithilfe der Einschränkung constraints/gcp.restrictNonCmekServices mit einem CMEK geschützt werden müssen. Weitere Informationen finden Sie unter CMEK-Schutz anfordern.

  3. Legen Sie eine Organisationsrichtlinie für den Ordner fest, um festzulegen, dass für CMEK verwendete Schlüssel aus dem Autokey-Schlüsselprojekt mit der Einschränkung constraints/gcp.restrictCmekCryptoKeyProjects stammen müssen. Weitere Informationen finden Sie unter Verwendung von Cloud KMS-Schlüsseln für CMEK einschränken.

Autokey deaktivieren

Der Cloud KMS-Autoschlüssel ist auf Ordnerebene aktiviert und deaktiviert. Mit den Rollen, mit denen der Autokey für einen Ordner aktiviert werden kann, kann er auch für diesen Ordner deaktiviert werden. Wenn Sie Autokey für einen Ordner deaktivieren möchten, müssen Sie AutokeyConfig löschen, um die Verknüpfung zwischen dem Ordner und dem Autokey-Schlüsselprojekt aufzuheben.

Nachdem die Autokey-Konfiguration für den Ordner entfernt wurde, kann der Cloud KMS-Dienst-Agent beim Erstellen von Ressourcen im Ordner keine Schlüssel für Entwickler mehr erstellen. Durch Entfernen der Verknüpfung zwischen dem Ordner und dem Schlüsselprojekt wird der Autokey im Ordner deaktiviert. Wir empfehlen jedoch, auch die IAM-Bindungen für die Rollen roles/cloudkms.autokeyAdmin und roles/cloudkms.autokeyUser zu entfernen.

Das Deaktivieren des Autokey hat keine Auswirkungen auf vorhandene Schlüssel im Schlüsselprojekt. Sie können diese Schlüssel zum Schutz Ihrer Ressourcen weiterhin verwenden.

AutokeyConfig löschen

Console

  1. Rufen Sie in der Google Cloud Console die Seite KMS-Steuerelemente auf.

    KMS-Einstellungen aufrufen

  2. Wählen Sie in der Kontextauswahl den Ordner aus, für den Sie Autokey deaktivieren möchten.

  3. Klicken Sie auf Deaktivieren.

    Es wird eine Meldung angezeigt, in der Sie aufgefordert werden, die Deaktivierung von Autokey zu bestätigen.

  4. Klicken Sie auf Bestätigen, um den Autokey zu deaktivieren.

    Eine Nachricht bestätigt, dass der Cloud KMS Autokey für den Ordner deaktiviert ist.

API

Löschen Sie die AutokeyConfig für den Ordner, für den Sie Autokey deaktivieren möchten:

curl "https://cloudkms.googleapis.com/v1/folders/FOLDER_ID/autokeyConfig?updateMask=keyProject" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{}'

Ersetzen Sie Folgendes:

  • FOLDER_ID: die ID des Ordners, für den Sie den Autokey deaktivieren möchten

Autokey-Rollen widerrufen

  1. Optional: Widerrufen Sie die Rolle roles/cloudkms.autokeyAdmin:

    gcloud resource-manager folders remove-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyAdmin \
        --member=user:USER_EMAIL
    

    Ersetzen Sie Folgendes:

    • FOLDER_ID: die ID des Ordners, in dem Sie den Autokey deaktiviert haben.
    • USER_EMAIL: die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zur Verwaltung des Autoschlüssels widerrufen möchten.
  2. Optional: Widerrufen Sie die Rolle roles/cloudkms.autokeyUser auf Ordnerebene:

    gcloud resource-manager folders remove-iam-policy-binding \
        FOLDER_ID --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Ersetzen Sie Folgendes:

    • FOLDER_ID: die ID des Ordners, in dem Sie den Autokey deaktiviert haben.
    • USER_EMAIL: Die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zur Verwendung des Autoschlüssels widerrufen möchten.
  3. Optional: Widerrufen Sie die Rolle roles/cloudkms.autokeyUser auf Projektebene:

    gcloud projects remove-iam-policy-binding RESOURCE_PROJECT_NUMBER \
        --role=roles/cloudkms.autokeyUser \
        --member=user:USER_EMAIL
    

    Ersetzen Sie Folgendes:

    • RESOURCE_PROJECT_NUMBER: die Projektnummer eines Ressourcenprojekts in dem Ordner, in dem Sie Autokey deaktiviert haben.
    • USER_EMAIL: Die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zur Verwendung des Autoschlüssels widerrufen möchten.
  4. Optional: Wenn Sie das Schlüsselprojekt für Autokey nicht mehr für andere Ordner verwenden möchten, widerrufen Sie die Rolle roles/cloudkms.admin für den Cloud KMS-Dienst-Agent:

    gcloud projects remove-iam-policy-binding KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
    

    Ersetzen Sie KEY_PROJECT_NUMBER durch die numerische ID des Schlüsselprojekts.

  5. Optional: Wenn Sie Schlüssel, die im Schlüsselprojekt erstellt wurden, nicht mehr verwenden möchten, widerrufen Sie die Rolle roles/cloudkms.admin für den Cloud KMS-Administrator:

    gcloud projects remove-iam-policy-binding KEY_PROJECT_NUMBER \
        --role=roles/cloudkms.admin \
        --member=user:KEY_ADMIN_EMAIL
    

    Ersetzen Sie Folgendes:

    • KEY_PROJECT_NUMBER: die Projektnummer des Schlüsselprojekts.
    • USER_EMAIL: Die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zur Verwendung des Autoschlüssels widerrufen möchten.

Nächste Schritte