Vom Kunden verwaltete Verschlüsselungsschlüssel für Secret Manager aktivieren

In diesem Thema wird die Unterstützung von vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) im Secret Manager erläutert.

Übersicht

Secret Manager bietet Tools zum Speichern, Verwalten und Aufrufen sensible Daten in Ihren Anwendungen.

Standardmäßig werden in Secret Manager gespeicherte Secrets mit Google-Standardverschlüsselung Mit der Google-Standardverschlüsselung werden geheime Nutzlasten die mit von Google verwalteten Schlüsseln verschlüsselt sind, bevor sie in den nichtflüchtigen Speicher geschrieben werden, ohne Konfiguration erforderlich.

Sie können die Verschlüsselung anpassen, die Secret Manager für Ihre Ressourcen verwendet indem Sie Key Encryption Keys, Schlüsselverschlüsselungsschlüssel verschlüsseln nicht direkt Ihre Daten, sondern verschlüsseln die Von Google generierte Schlüssel zum Verschlüsseln Ihrer Daten. Sie können CMEK-Schlüssel erstellen oder Cloud KMS Autokey (Vorschau), um sie in Ihrem Namen zu erstellen. Für Weitere Informationen finden Sie in der Autokey-Übersicht.

Weitere Informationen zu Verschlüsselungsoptionen in Google Cloud finden Sie unter Standardverschlüsselung ruhender Daten: Für Spezifische Informationen zu CMEK, einschließlich seiner Vorteile und Einschränkungen, finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel

Funktionsweise von CMEK im Secret Manager

Bevor Sie eine Secret-Version in den nichtflüchtigen Speicher an einem bestimmten Speicherort schreiben, Secret Manager verschlüsselt die Daten mit einem eindeutigen Datenverschlüsselungsschlüssel (DEK) Dieser DEK wird dann mit einem replikatspezifischen Schlüssel verschlüsselt, der als Schlüssel bezeichnet wird. Verschlüsselungsschlüssel (KEK), der dem Secret Manager-Dienst gehört.

Bei Verwendung eines CMEK für Secret Manager wird der KEK als CMEK-Schlüssel bezeichnet. einen symmetrischen Schlüssel, den Sie in Cloud KMS verwalten. Der CMEK-Schlüssel muss sich im denselben Google Cloud-Standort wie das verschlüsselte Secret-Versionsreplikat. Sie können auch Verwenden Sie einen Cloud EKM-Schlüssel in der CMEK-Richtlinie für die Ver- und Entschlüsselung.

In dieser Anleitung wird beschrieben, wie Sie Secret Manager für die Verwendung von CMEK konfigurieren. Weitere allgemeine Informationen zu CMEK einschließlich ihrer Aktivierung finden Sie in der Dokumentation zum Cloud Key Management Service.

Beschränkungen

CMEK ist nur in Secret Manager verfügbar v1 API und gcloud

Hinweise

Sie können alle Ressourcen im selben Projekt oder Secrets speichern. und Schlüssel in separaten Projekten. Weitere Informationen zu Cloud KMS Separation of Pflichten, um die diese Entscheidung zu verstehen.

Sie müssen die folgenden Voraussetzungen erfüllen, um Secret Manager einzurichten und Cloud KMS:

  • Secret Manager:

    • Erstellen Sie ein Projekt oder verwenden Sie ein vorhandenes Projekt für Secret Manager Ressourcen.
    • Führen Sie bei Bedarf die Schritte in der Secret Manager konfigurieren des Secret Manager-Schnellstarts.
  • Cloud KMS:

Legen Sie die folgenden Variablen auf die Projekt-IDs von Secret Manager fest und Cloud KMS-Projekten.

This is an editable variable. Set it to your Secret Manager project ID and the
value will be used in all commands on this page.
SM_PROJECT_ID

This is an editable variable. Set it to your Cloud KMS project ID and the value
will be used in all commands on this page.
KMS_PROJECT_ID

Authentifizieren Sie sich bei Google Cloud:

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud auth login

Schlüssel manuell oder automatisch erstellen

Sie können Cloud KMS-Schlüssel entweder manuell erstellen oder Cloud KMS Autokey (Vorschau). Autokey vereinfacht das Erstellen und Verwalten von Cloud KMS-Schlüsseln durch Automatisierung Bereitstellung und Zuweisung. Mit Autokey müssen Sie keinen Schlüssel bereitstellen Ringen, Schlüssel und Dienstkonten. Stattdessen werden sie im Rahmen der Erstellung von Secret Manager-Ressourcen. Weitere Informationen Weitere Informationen Zum Aktivieren Autokey für Secret Manager, siehe Aktivieren Sie Autokey. Informationen zur Verwendung von Autokey mit Ihren Secrets finden Sie unter Autokey mit Secret Manager-Ressourcen verwenden

Die Anweisungen auf dieser Seite beziehen sich auf die manuelle Erstellung und Zuweisung von Cloud KMS-Schlüssel.

Dienst-Agent-Identität erstellen

Sie müssen jeweils eine Dienst-Agent-Identität das vom Kunden verwaltete Verschlüsselungsschlüssel erfordert.

Führen Sie den folgenden Befehl aus, um mit der Google Cloud CLI eine Dienstidentität zu erstellen:

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud beta services identity create \
    --service "secretmanager.googleapis.com" \
    --project "SM_PROJECT_ID"

Dadurch wird ein Dienstidentitätsname im folgenden Format zurückgegeben:

service-PROJECT_NUMBER@gcp-sa-secretmanager.iam.gserviceaccount.com

Speichern Sie den Namen der Dienstidentität:

The following variable is editable. Click on it to update the value, and it will
be reflected throughout this documentation page.

SM_SERVICE_IDENTITY

Sie gewähren dieser Dienstidentität Zugriff auf die CMEK-Cloud KMS-Schlüssel zum Verschlüsseln und Entschlüsseln Ihrer Secrets.

CMEK mit automatischer Replikation

In diesem Abschnitt werden Secrets beschrieben, die über eine automatische Replikation konfiguriert werden .

Für Secrets, die die automatische Replikationsrichtlinie verwenden, muss Ihr CMEK-Schlüssel sich in der Cloud KMS-Multiregion global befindet. Wenn Sie eine Cloud EKM-Schlüssel haben, können Sie Ihr Secret nicht für die Verwendung automatischer Replikation, da Cloud EKM-Schlüssel in global nicht verfügbar sind Region Weitere Informationen zur Verwendung von Cloud EKM-Schlüsseln finden Sie unter Cloud EKM-Schlüssel zu einer CMEK-Richtlinie hinzufügen

Symmetrischen Cloud KMS-Schlüssel in global Cloud KMS erstellen Region oder verwenden Sie einen vorhandenen Schlüssel. In diesem Beispiel wird ein neuer Schlüsselbund namens secret-manager-cmek und erstellt dann einen neuen Schlüssel mit dem Namen my-cmek-key.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "global"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Gewähren Sie der Dienstidentität für Secret Manager Zugriff zum Verschlüsseln und mit dem CMEK-Schlüssel entschlüsseln. Dieser Befehl gewährt dem Cloud KMS-Verschlüsseler / Entschlüsseler-Rolle (roles/cloudkms.cryptoKeyEncrypterDecrypter) für das my-cmek-key Cloud KMS-Schlüssel für die Dienstidentität.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Secret mit automatischer Replikation erstellen Der Ressourcenname des CMEK-Schlüssels lautet die als Metadaten im Secret gespeichert sind.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets create "SECRET_ID" \
    --replication-policy "automatic" \
    --kms-key-name "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" \
    --project "SM_PROJECT_ID"

API

In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

Wert von replication.automatic.customerManagedEncryption.kmsKeyName festlegen dem Ressourcennamen für den CMEK-Schlüssel hinzu.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets?secretId=SECRET_ID" \
    --request "POST" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --data-binary @- <<EOF
{
  "replication":{
    "automatic":{
      "customerManagedEncryption":{
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
      }
    }
  }
}
EOF

Jedes Mal, wenn eine Secret-Version in diesem Secret erstellt wird, Nutzlast wird automatisch mit dem Schlüssel verschlüsselt, bevor sie in nichtflüchtigen Speicher, solange die Dienstidentität Zugriff auf den CMEK-Schlüssel hat. Wenn die Dienstidentität keinen Zugriff mehr hat oder der Schlüssel nicht mehr verfügbar ist, wird ein wenn Sie versuchen, eine neue Secret-Version zu erstellen oder auf eine vorhandene zuzugreifen, wird ein Fehler.

Fügen Sie eine neue Secret-Version hinzu. Beachten Sie, dass Sie den Cloud KMS Ressourcenname des Schlüssels; wird er aus den Metadaten des Secrets gelesen.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

echo -n "SECRET_DATA" | gcloud secrets versions add "SECRET_ID" \
    --project "SM_PROJECT_ID" \
    --data-file -

Die Secret-Version wird erstellt, auch wenn der Aufrufer keinen direkten Zugriff auf verwenden Sie den CMEK-Schlüssel. Die Dienstidentität für Secret Manager statt für die Verschlüsselung und Entschlüsselung von Secrets beim Lesen oder Entschlüsseln und wie sie geschrieben werden.

Ebenso benötigen Sie keinen direkten Zugriff auf den CMEK-Schlüssel, um auf den geheim halten. Die Dienstidentität greift auf den Schlüssel zu und verschlüsselt oder entschlüsselt das Secret. .

Rufen Sie die soeben erstellte Secret-Version auf:

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets versions access "latest" \
    --project "SM_PROJECT_ID" \
    --secret "SECRET_ID"

CMEK-Konfiguration aktualisieren

Erstellen Sie einen neuen symmetrischen KMS-Schlüssel in der Multi-Cloud KMS-Region global.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Gewähren Sie der Dienstidentität für Secret Manager Zugriff zum Verschlüsseln und mit dem neuen CMEK-Schlüssel entschlüsseln. Dieser Befehl gewährt Cloud KMS Rolle „Verschlüsseler / Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter) für das my-other-key Cloud KMS-Schlüssel für die Dienstidentität.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "global" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Ändern Sie die CMEK-Konfiguration für ein Secret, indem Sie die Replikation auf der mit den neuen Cloud KMS-Schlüsselressourcennamen.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets replication update "SECRET_ID" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --project "SM_PROJECT_ID"

API

In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/SECRET_ID?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication": {
    "automatic":{
      "customerManagedEncryption":{
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
      }
    }
  }
}
EOF

CMEK mit vom Nutzer verwalteter Replikation

In diesem Abschnitt werden Secrets beschrieben, die mit einer vom Nutzer verwalteten Replikation konfiguriert sind . Mit einer vom Nutzer verwalteten Replikationsrichtlinie steuern Sie den Google Cloud-Standort wo das Secret gespeichert ist. Secrets sind immer von jedem Google Cloud-Standort aus zugänglich.

Secrets mit einer vom Nutzer verwalteten Replikationsrichtlinie müssen Cloud KMS-Schlüssel verwenden die genau den Speicherorten der Secret-Versionen entsprechen. Die Beispiele in diesem Leitfaden speichern ein Secret an zwei verschiedenen Orten: us-east1, us- Zentral1. Anfragen für den Zugriff auf das Secret werden an einen dieser Orte weitergeleitet.

Erstellen Sie in jeder der beiden Regionen einen Schlüsselbund und einen Cloud KMS-Schlüssel mit oder einen vorhandenen Schlüssel verwenden. In diesem Beispiel wird eine neue Schlüsselbund namens "secret-manager-cmek" an und erstellt dann einen Schlüssel namens "my-cmek-key" in jeder Region.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"
gcloud kms keyrings create "secret-manager-cmek" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1"
gcloud kms keys create "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Gewähren Sie der Dienstidentität für Secret Manager die Berechtigung zum Verschlüsseln und mit dem CMEK-Schlüssel entschlüsseln, indem Sie dem Cloud KMS-Verschlüsseler / Entschlüsseler-Rolle (roles/cloudkms.cryptoKeyEncrypterDecrypter) für jede der CMEK-Schlüssel einzeln oder für alle Schlüssel im Projekt.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
gcloud kms keys add-iam-policy-binding "my-cmek-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

CMEK-fähiges Secret mit vom Nutzer verwalteter Replikation erstellen Der Ressourcenname von Der CMEK-Schlüssel wird als Metadaten im Secret gespeichert.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

cat <<EOF > ./replication-policy.json
{
  "userManaged":{
    "replicas":[
      {
        "location":"us-east1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
        }
      },
      {
        "location":"us-central1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
        }
      }
    ]
  }
}
EOF
gcloud secrets create "my-ummr-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

API

In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

Legen Sie den Wert für replication.userManaged.replicas.customerManagedEncryption.kmsKeyNamezu den Ressourcennamen für die CMEK-Schlüssel.

curl "https://secretmanager.googleapis.com/v1/projects/SM_PROJECT_ID/secrets?secretId=my-ummr-secret" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
  "replication":{
    "userManaged":{
      "replicas":[
        {
          "location":"us-east1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
          }
        },
        {
          "location":"us-central1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key"
          }
        }
      ]
    }
  }
}
EOF

Jedes Mal, wenn eine Secret-Version in diesem Secret erstellt wird, Nutzlast wird automatisch mit dem Schlüssel verschlüsselt, bevor sie in nichtflüchtigen Speicher, solange die Dienstidentität Zugriff auf den CMEK-Schlüssel hat. Wenn die Dienstidentität keinen Zugriff mehr hat oder der Schlüssel nicht mehr verfügbar ist, wird ein wenn Sie versuchen, eine neue Secret-Version zu erstellen oder auf eine vorhandene zuzugreifen, wird ein Fehler.

Fügen Sie eine neue Secret-Version hinzu. Beachten Sie, dass Sie den Cloud KMS Ressourcenname des Schlüssels; wird er aus den Metadaten des Secrets gelesen.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

echo -n "SECRET_DATA" | gcloud secrets versions add "my-ummr-secret" \
    --project "SM_PROJECT_ID" \
    --data-file -

Die Secret-Version wird erstellt, auch wenn der Aufrufer keinen direkten Zugriff auf verwenden Sie den CMEK-Schlüssel. Die Dienstidentität für Secret Manager statt für die Verschlüsselung und Entschlüsselung von Secrets beim Lesen oder Entschlüsseln und wie sie geschrieben werden.

Ebenso benötigen Sie keinen direkten Zugriff auf den CMEK-Schlüssel, um auf den geheim halten. Die Dienstidentität greift auf den Schlüssel zu und verschlüsselt oder entschlüsselt das Secret. .

Rufen Sie die soeben erstellte Secret-Version auf.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets versions access "latest" \
    --project "SM_PROJECT_ID" \
    --secret "my-ummr-secret"

CMEK-Konfiguration aktualisieren

Erstellen Sie zwei neue symmetrische KMS-Schlüssel in derselben Region wie das Secret.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"
gcloud kms keys create "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --purpose "encryption"

Gewähren Sie der Dienstidentität für Secret Manager Zugriff zum Verschlüsseln und mit den neuen CMEK-Schlüsseln entschlüsseln. Dieser Befehl gewährt Cloud KMS Rolle „Verschlüsseler / Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter) für das my-other-key Cloud KMS-Schlüssel für die Dienstidentität.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-east1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
gcloud kms keys add-iam-policy-binding "my-other-key" \
    --project "KMS_PROJECT_ID" \
    --location "us-central1" \
    --keyring "secret-manager-cmek" \
    --member "serviceAccount:SM_SERVICE_IDENTITY" \
    --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Ändern Sie die CMEK-Konfiguration für ein Secret, indem Sie die Replikation auf der mit den neuen Cloud KMS-Schlüsselressourcennamen.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets replication update "my-ummr-secret" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --location us-east1 \
    --project "SM_PROJECT_ID"
gcloud secrets replication update "my-ummr-secret" \
    --set-kms-key "projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key" \
    --location us-central1 \
    --project "SM_PROJECT_ID"

Um mehrere Schlüssel in einem Secret gleichzeitig zu aktualisieren, können Sie die Replikationsrichtlinie über eine Datei.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets replication get "my-ummr-secret" \
    --project "SM_PROJECT_ID" \
    --format=json > ./replication-policy.json

Aktualisieren Sie die Datei, um die gewünschte CMEK-Konfiguration in der gewünschten Konfiguration widerzuspiegeln. Editor. Legen Sie dann die neue Richtlinie fest:

gcloud secrets replication set "my-ummr-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

API

In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/my-ummr-secret?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication":{
    "userManaged":{
      "replicas":[
        {
          "location":"us-east1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-east1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
          }
        },
        {
          "location":"us-central1",
          "customerManagedEncryption":{
            "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek/cryptoKeys/my-other-key"
          }
        }]
      }
    }
  }
EOF

CMEK-Konfiguration der Secret-Version ansehen

Prüfen der Metadaten einer Secret-Version, einschließlich der Frage, ob die Secret-Version Bei aktiviertem CMEK und dem Ressourcennamen der CMEK-Schlüsselversion werden die zugehörigen Metadaten angezeigt.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets versions describe "latest" \
    --secret "SECRET_ID" \
    --project "SM_PROJECT_ID"

API

In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

curl "https://secretmanager.googleapis.com/v1/projects/SM_PROJECT_ID/secrets/SECRET_ID/versions/latest" \
    --request "GET" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json"

Dies gibt den vollständigen Cloud KMS-Ressourcennamen der Schlüsselversion zurück, die zum Verschlüsseln der Secret-Version verwendet wird.

{
  "name": "projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/1",
  "createTime": "2021-07-...",
  "state": "ENABLED",
  "replicationStatus": {
    "automatic": {
      "customerManagedEncryption": {
        "kmsKeyVersionName": "projects/KMS_PROJECT_ID/locations/global/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key/cryptoKeyVersions/1"
      }
    }
  }
}

Cloud EKM-Schlüssel zu einer CMEK-Richtlinie hinzufügen

In diesem Abschnitt wird beschrieben, wie Sie einer CMEK-Richtlinie einen Cloud EKM-Schlüssel hinzufügen. Diese können Sie einen Cloud EKM-Schlüssel zum Ver- oder Entschlüsseln von Secrets verwenden.

Da Cloud EKM die Multiregion global derzeit nicht unterstützt, Cloud EKM-Schlüssel können nur mit Secrets verwendet werden, die für den Nutzer konfiguriert sind verwaltete Replikation.

Erstellen Sie einen symmetrischen Schlüssel in der Cloud KMS-Region us-central1 (oder in einer beliebigen Region mit Ausnahme von global) In diesem Beispiel wird ein neuer Schlüsselbund namens secret-manager-cmek-ekm und erstellt dann einen neuen Schlüssel namens my-ekm-key dafür klingeln.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

Erstellen Sie einen neuen Schlüsselbund:

gcloud kms keyrings create "secret-manager-cmek-ekm" \
  --project "KMS_PROJECT_ID" \
  --location "us-central1"

Erstellen Sie in diesem Schlüsselbund einen Schlüssel:

gcloud kms keys create "my-ekm-key" \
  --keyring "secret-manager-cmek-ekm" \
  --location "us-central1" \
  --purpose "encryption" \
  --protection-level "external" \
  --skip-initial-version-creation \
  --default-algorithm "external-symmetric-encryption"

Erstellen Sie als Nächstes mit dem externen URI des Schlüssels eine neue Version von my-ekm-key. Weitere Informationen zu externen URIs für Cloud EKM-Schlüssel finden Sie unter Erstellen einen externen Schlüssel

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keys versions create \
  --key "my-ekm-key" \
  --keyring "secret-manager-cmek-ekm" \
  --location "us-central1" \
  --external-key-uri EXTERNAL_KEY_URI \
  --primary

Gewähren Sie der Dienstidentität für Secret Manager Zugriff zum Verschlüsseln und mit dem externen Schlüssel entschlüsseln. Dieser Befehl gewährt Cloud KMS Rolle „Verschlüsseler / Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter) aktiviert my-ekm-key für die Dienstidentität.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud kms keys add-iam-policy-binding "my-ekm-key" \
  --project "KMS_PROJECT_ID" \
  --location "us-central1" \
  --keyring "secret-manager-cmek-ekm" \
  --member "serviceAccount:SM_SERVICE_IDENTITY" \
  --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"

Erstellen Sie ein CMEK-fähiges Secret, das einen Cloud EKM-Schlüssel verwendet.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

cat <<EOF > ./replication-policy.json
{
  "userManaged":{
    "replicas":[
      {
        "location":"us-central1",
        "customerManagedEncryption":{
          "kmsKeyName":"projects/KMS_PROJECT_ID/locations/us-central1/keyRings/secret-manager-cmek-ekm/cryptoKeys/my-ekm-key"
        }
      }
    ]
  }
}
EOF
gcloud secrets create "my-ekm-secret" \
    --replication-policy-file ./replication-policy.json \
    --project "SM_PROJECT_ID"

Jedes Mal, wenn in my-ekm-secret eine Secret-Version erstellt wird, wird automatisch mit dem Cloud EKM-Schlüssel verschlüsselt, bevor dauerhaften Speicher, solange die Dienstidentität Zugriff auf den Schlüssel hat. Wenn die Dienstidentität keinen Zugriff mehr hat oder der Schlüssel nicht mehr verfügbar ist, wird ein wenn Sie versuchen, eine neue Secret-Version zu erstellen oder auf eine vorhandene zuzugreifen, wird ein Fehler.

Fügen Sie eine neue Secret-Version hinzu. Beachten Sie, dass der Ressourcenname des Schlüssels aus dem die Metadaten des Secrets enthalten.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

echo -n "SECRET_DATA" | gcloud secrets versions add "my-ekm-secret" \
    --project "SM_PROJECT_ID" \
    --data-file -

Die Secret-Version wird erstellt, auch wenn der Aufrufer keinen direkten Zugriff auf verwenden Sie den Schlüssel. Die Dienstidentität für Secret Manager anstelle der ist für das Verschlüsseln und Entschlüsseln von Secrets beim Lesen oder und wie sie geschrieben werden.

Rufen Sie die soeben erstellte Secret-Version auf. Hier wird die Dienstidentität auf den Schlüssel zugreift und das Secret in Ihrem Namen verschlüsselt oder entschlüsselt.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets versions access "latest" \
  --project "SM_PROJECT_ID" \
  --secret "my-ekm-secret"

CMEK deaktivieren

Entfernen Sie die CMEK-Konfiguration aus einem Secret, indem Sie die Replikationsrichtlinie aktualisieren.

gcloud

Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf Version 378.0.0 oder höher durch. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

gcloud secrets replication update "SECRET_ID" --remove-cmek \
    --project "SM_PROJECT_ID"

API

In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.

curl "https://secretmanager.googleapis.com/v1/projects/${SM_PROJECT_ID}/secrets/SECRET_ID?updateMask=replication" \
    --request "PATCH" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Content-Type: application/json" \
    --data-binary @- <<EOF
{
  "replication":{
    "automatic":{}
  }
}
EOF

Nächste Schritte