Cloud KMS Autokey aktivieren

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

Hinweise

Bevor Sie Cloud KMS Autokey aktivieren können, benötigen Sie Folgendes:

  • Eine Organisationsressource, die einen Ordner enthält, für den 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 Autokey für diesen Ordner aktivieren, wird Autokey 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 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 von Autokey benötigen:

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

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

Erforderliche Berechtigungen

Zum Aktivieren und Konfigurieren von Autokey sind die folgenden Berechtigungen erforderlich:

  • 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.

Legen Sie fest, wie Sie Autokey aktivieren möchten

Sie können Autokey im Rahmen Ihrer Infrastruktur-als-Code-Strategie aktivieren. Dazu verwenden Sie Terraform, um die erforderlichen Konfigurationsänderungen vorzunehmen. Wenn Sie 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 von 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 Schlüssel verwenden möchten, die von Autokey erstellt wurden, können Sie den Abschnitt Schlüsselprojekt erstellen überspringen und mit Autokey-Projekt konfigurieren auf dieser Seite fortfahren.

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

Wenn Sie in Zukunft möglicherweise zu Assured Workloads migrieren möchten, erstellen Sie das Schlüsselprojekt im selben Ordner wie die Ressourcen, die durch diese Schlüssel geschützt werden.

Wenn Ihre Organisation die Organisationsrichtlinieneinschränkung constraints/gcp.restrictCmekCryptoKeyProjects verwendet, um sicherzustellen, dass alle CMEKs von bestimmten Schlüsselprojekten stammen, müssen Sie Ihr 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, Zahlen, einfache Anführungszeichen, Bindestriche, Leerzeichen oder Ausrufezeichen enthalten und muss zwischen 4 und 30 Zeichen lang sein.
  5. Wählen Sie unter Standort die Ressource aus, die Sie für Ihr Schlüsselprojekt übergeordnet haben möchten.
  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 der bzw. dem Sie das Schlüsselprojekt erstellen möchten.

Autokey-Schlüsselprojekt vorbereiten

Console

  1. Aktivieren Sie die Cloud KMS API für Ihr 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 dann 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 für Ihr 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 Meldung bestätigt, dass Cloud KMS Autokey für den Ordner aktiviert ist.

API

Erstellen Sie die AutokeyConfig für den Ordner, in dem 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 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 Auftrag eines Cloud KMS-Administrators Schlüssel und wendet IAM-Richtlinienbindungen während der Ressourcenerstellung an. Damit der Cloud KMS-Dienst-Agent Schlüssel erstellen und zuweisen kann, benötigt der Cloud KMS-Dienst-Agent 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 Autokey verwenden können, müssen Sie ihnen die erforderliche Rolle gewähren. 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.

Führen 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, in dem Sie Autokey aktivieren möchten.
    • USER_EMAIL: die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zur Verwendung von Autokey 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 von Autokey erteilen möchten.

Ihre Autokey-Entwickler können jetzt bei Bedarf Schlüssel erstellen. Informationen zum Erstellen von Ressourcen, die mit Schlüsseln geschützt sind, die bei Bedarf von Autokey erstellt wurden, finden Sie unter Geschützte Ressourcen mit 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 separat im Ressourcenordner 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 von 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.

Autokey-Nutzung erzwingen

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

Führen Sie die folgenden Schritte aus, um die Autokey-Nutzung 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 Schlüssel erstellt werden, die von Autokey erstellt wurden. Weitere Informationen zur Zugriffssteuerung finden Sie unter Zugriffssteuerung mit IAM.

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

  3. Legen Sie eine Organisationsrichtlinie für den Ordner fest, die erfordert, dass Schlüssel, die für CMEK verwendet werden, 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

Cloud KMS Autokey ist auf Ordnerebene aktiviert und deaktiviert. Dieselben Rollen, die Autokey für einen Ordner aktivieren können, können Autokey für diesen Ordner deaktivieren. Wenn Sie Autokey für einen Ordner deaktivieren möchten, müssen Sie das AutokeyConfig löschen, um die Verknüpfung zwischen dem Ordner und dem Autokey-Projekt zu entfernen.

Nachdem die Autokey-Konfiguration für den Ordner entfernt wurde, kann der Cloud KMS-Dienst-Agent keine Schlüssel für Entwickler mehr erstellen, wenn diese Ressourcen im Ordner erstellen. Durch das 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 von Autokey hat keine Auswirkungen auf vorhandene Schlüssel im Schlüsselprojekt. Sie können diese Schlüssel weiterhin verwenden, um Ihre Ressourcen zu schützen.

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, in dem 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 Autokey zu deaktivieren.

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

API

Löschen Sie den Inhalt von AutokeyConfig für den Ordner, in dem 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, in dem Sie 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 Autokey deaktiviert haben.
    • USER_EMAIL: die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zum Verwalten von Autokey entziehen 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 Autokey deaktiviert haben.
    • USER_EMAIL: die E-Mail-Adresse des Nutzers, dem Sie die Berechtigung zur Verwendung von Autokey entziehen 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 von Autokey entziehen möchten.
  4. Optional: Wenn Sie das Schlüsselprojekt nicht weiter für Autokey 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 die im Schlüsselprojekt erstellten Schlüssel 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 von Autokey entziehen möchten.

Nächste Schritte