In Secret Manager werden inaktive Kundeninhalte standardmäßig verschlüsselt. Die Verschlüsselung wird von Secret Manager durchgeführt. Sie müssen nichts weiter tun. Diese Option wird Google-Standardverschlüsselung genannt.
Wenn Sie Ihre Verschlüsselungsschlüssel selbst verwalten möchten, können Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs, Customer-Managed Encryption Keys) in Cloud KMS mit CMEK-integrierten Diensten wie Secret Manager verwenden. Mit Cloud KMS-Schlüsseln haben Sie die Kontrolle über Schutzlevel, Speicherort, Rotationszeitplan, Nutzungs- und Zugriffsberechtigungen sowie über kryptografische Grenzen. Mit Cloud KMS können Sie außerdem die Schlüsselnutzung im Blick behalten, Audit-Logs aufrufen und den Lebenszyklus von Schlüsseln steuern. Statt es Google zu überlassen und zu verwalten, das die symmetrischen Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEKs) zum Schutz Ihrer Daten enthält, können Sie diese auch über Cloud KMS steuern und verwalten.
Nachdem Sie Ihre Ressourcen mit CMEKs eingerichtet haben, ähnelt der Zugriff auf Ihre Secret Manager-Ressourcen der Verwendung der Google-Standardverschlüsselung. Weitere Informationen zu den Verschlüsselungsoptionen finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK).
Secret Manager bietet Tools zum Speichern, Verwalten und Zugreifen auf vertrauliche Daten in Ihren Anwendungen.
CMEK mit Cloud KMS Autokey
Sie können CMEKs manuell erstellen, um Ihre Secret Manager-Ressourcen zu schützen, oder dazu Cloud KMS Autokey verwenden. Mit Autokey werden Schlüsselringe und Schlüssel bei der Ressourcenerstellung im Secret Manager auf Anfrage generiert. Falls noch nicht vorhanden, werden Dienst-Agenten erstellt, die die Schlüssel für Verschlüsselungs- und Entschlüsselungsvorgänge verwenden. Sie erhalten dann die erforderlichen IAM-Rollen (Identity and Access Management). Weitere Informationen finden Sie unter Übersicht: Autokey.
Secret Manager ist nur dann mit Cloud KMS Autokey kompatibel, wenn Ressourcen mit Terraform oder der REST API erstellt werden.
Informationen zum Schutz Ihrer Secret Manager-Ressourcen mit manuell erstellten CMEKs finden Sie auf dieser Seite unter CMEK mit automatischer Replikation und CMEK mit vom Nutzer verwalteter Replikation.
Informationen zum Schutz Ihrer Secret Manager-Ressourcen mit CMEKs, die mit Cloud KMS Autokey erstellt wurden, finden Sie unter Autokey mit Secret Manager-Ressourcen verwenden.
Funktionsweise von CMEK im Secret Manager
Bevor eine Secret-Version in einen nichtflüchtigen Speicher an einem bestimmten Speicherort geschrieben wird, verschlüsselt Secret Manager die Daten mit einem eindeutigen Datenverschlüsselungsschlüssel (Data Encryption Key, DEK). Dieser DEK wird dann mit einem replikatspezifischen Schlüssel verschlüsselt, dem sogenannten KEK, dem Key Secret Manager-Dienst gehört.
Wenn Sie CMEK für Secret Manager verwenden, wird der KEK als CMEK-Schlüssel bezeichnet und ist ein symmetrischer Schlüssel, den Sie in Cloud KMS verwalten. Der CMEK-Schlüssel muss sich am selben Google Cloud-Speicherort wie das Secret-Versionsreplikat befinden, das es verschlüsselt. Sie können auch einen Cloud EKM-Schlüssel in der CMEK-Richtlinie für die Verschlüsselung und Entschlüsselung verwenden.
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 sind nur in der Secret Manager v1
API und der Google Cloud CLI verfügbar.
Hinweise
Sie können alle Ressourcen im selben Projekt speichern oder Secrets und Schlüssel in separaten Projekten speichern. Weitere Informationen zu dieser Entscheidung finden Sie unter Aufgabentrennung von Cloud KMS.
Führen Sie die folgenden Voraussetzungen aus, um Secret Manager und Cloud KMS einzurichten:
Secret Manager:
- Erstellen oder verwenden Sie ein vorhandenes Projekt für Ihre Secret Manager-Ressourcen.
- Führen Sie bei Bedarf die Schritte im Abschnitt Secret Manager konfigurieren der Kurzanleitung für Secret Manager aus.
Cloud KMS:
- Erstellen oder verwenden Sie ein vorhandenes Projekt für Ihre Cloud KMS-Ressourcen.
- Aktivieren Sie bei Bedarf die Cloud KMS API.
Legen Sie für die folgenden Variablen die Projekt-IDs Ihrer Secret Manager- und Cloud KMS-Projekte fest.
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 oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
gcloud auth login
Dienst-Agent-Identität erstellen
Sie müssen für jedes Projekt, das vom Kunden verwaltete Verschlüsselungsschlüssel erfordert, eine Dienst-Agent-Identität erstellen.
Führen Sie den folgenden Befehl aus, um eine Dienstidentität mit der Google Cloud CLI zu erstellen:
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 der Name einer Dienstidentität 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 erteilen dieser Dienstidentität Zugriff auf die CMEK-Cloud KMS-Schlüssel, die zum Verschlüsseln und Entschlüsseln Ihrer Secrets verwendet werden.
CMEK mit automatischer Replikation
In diesem Abschnitt werden Secrets beschrieben, die über eine Richtlinie für automatische Replikation konfiguriert werden.
Bei Secrets, die die automatische Replikationsrichtlinie verwenden, muss Ihr CMEK-Schlüssel an der Cloud KMS-Multiregion global
liegen. Wenn Sie einen Cloud EKM-Schlüssel verwenden, können Sie Ihr Secret nicht für die automatische Replikation konfigurieren, da Cloud EKM-Schlüssel in der Region global
nicht verfügbar sind. Weitere Informationen zur Verwendung von Cloud EKM-Schlüsseln finden Sie unter CMEK-Richtlinien einen Cloud EKM-Schlüssel hinzufügen.
Erstellen Sie einen symmetrischen Cloud KMS-Schlüssel in der Cloud KMS-Region global
oder verwenden Sie einen vorhandenen Schlüssel. In diesem Beispiel wird ein neuer Schlüsselbund namens secret-manager-cmek
erstellt. Dann wird ein neuer Schlüssel namens my-cmek-key
erstellt.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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, um es mit dem CMEK-Schlüssel zu verschlüsseln und zu entschlüsseln. Mit diesem Befehl wird der Dienstidentität die Cloud KMS-Rolle „Cloud KMS-Verschlüsseler/Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter
) für den Cloud KMS-Schlüssel my-cmek-key
zugewiesen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 wird als Metadaten im Secret gespeichert.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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.
Legen Sie den Wert von replication.automatic.customerManagedEncryption.kmsKeyName
auf den Ressourcennamen für den CMEK-Schlüssel fest.
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
Bei jeder Secret-Version in diesem Secret wird die Nutzlast der Secret-Version automatisch mit dem Schlüssel verschlüsselt, bevor in den nichtflüchtigen Speicher geschrieben wird, sofern 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 beim Versuch, eine neue Secret-Version zu erstellen oder auf eine vorhandene zuzugreifen, ein Fehler zurückgegeben.
Fügen Sie eine neue Secret-Version hinzu. Sie geben nicht den Ressourcennamen des Cloud KMS-Schlüssels an; er wird aus den Metadaten des Secrets gelesen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 auch dann erstellt, wenn der Aufrufer keinen direkten Zugriff auf den CMEK-Schlüssel hat. Beim Lesen und Schreiben des Secrets ist die Dienstidentität für Secret Manager und nicht der Aufrufer verantwortlich.
Ebenso benötigen Sie keinen direkten Zugriff auf den CMEK-Schlüssel, um auf das Secret zuzugreifen. Die Dienstidentität greift auf den Schlüssel zu und verschlüsselt oder entschlüsselt das Secret für Sie.
Rufen Sie die soeben erstellte Secret-Version auf:
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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, um es mit dem neuen CMEK-Schlüssel zu verschlüsseln und zu entschlüsseln. Mit diesem Befehl wird der Dienstidentität die Cloud KMS-Rolle „Cloud KMS-Verschlüsseler / Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter
) für den Cloud KMS-Schlüssel my-other-key
zugewiesen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 des Secrets mit den neuen Cloud KMS-Schlüsselressourcennamen aktualisieren.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 nutzerverwalteter Replikation
In diesem Abschnitt werden Secrets beschrieben, die mit einer vom Nutzer verwalteten Replikationsrichtlinie konfiguriert wurden. Mit einer vom Nutzer verwalteten Replikationsrichtlinie steuern Sie den Google Cloud-Speicherort, an dem das Secret gespeichert ist. Secrets sind immer über jeden Google Cloud-Standort zugänglich.
Secrets mit einer vom Nutzer verwalteten Replikationsrichtlinie müssen Cloud KMS-Schlüssel verwenden, die genau den Speicherorten entsprechen, an denen die Secret-Versionen gespeichert sind. In den Beispielen in diesem Leitfaden wird ein Secret an zwei verschiedenen Standorten gespeichert: us-east1 und us-central1. 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 Verschlüsselung oder verwenden Sie einen vorhandenen Schlüssel. In diesem Beispiel wird ein neuer Schlüsselbund namens "secret-manager-cmek"
erstellt. Anschließend wird in jeder Region ein Schlüssel namens "my-cmek-key"
erstellt.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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"
Sie können der Dienstidentität für Secret Manager die Berechtigung zum Verschlüsseln und Entschlüsseln mithilfe des CMEK-Schlüssels erteilen. Weisen Sie dafür jedem Cloud KMS-Schlüssel einzeln oder für alle Schlüssel im Projekt die Rolle „Cloud KMS-Verschlüsseler / Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter
) zu.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 des CMEK-Schlüssels wird als Metadaten im Secret gespeichert.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 von replication.userManaged.replicas.customerManagedEncryption.kmsKeyName
auf die Ressourcennamen für die CMEK-Schlüssel fest.
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
Bei jeder Secret-Version in diesem Secret wird die Nutzlast der Secret-Version automatisch mit dem Schlüssel verschlüsselt, bevor in den nichtflüchtigen Speicher geschrieben wird, sofern 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 beim Versuch, eine neue Secret-Version zu erstellen oder auf eine vorhandene zuzugreifen, ein Fehler zurückgegeben.
Fügen Sie eine neue Secret-Version hinzu. Sie geben nicht den Ressourcennamen des Cloud KMS-Schlüssels an; er wird aus den Metadaten des Secrets gelesen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 auch dann erstellt, wenn der Aufrufer keinen direkten Zugriff auf den CMEK-Schlüssel hat. Beim Lesen und Schreiben des Secrets ist die Dienstidentität für Secret Manager und nicht der Aufrufer verantwortlich.
Ebenso benötigen Sie keinen direkten Zugriff auf den CMEK-Schlüssel, um auf das Secret zuzugreifen. Die Dienstidentität greift auf den Schlüssel zu und verschlüsselt oder entschlüsselt das Secret für Sie.
Rufen Sie die soeben erstellte Secret-Version auf.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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, um es mit den neuen CMEK-Schlüsseln zu verschlüsseln und zu entschlüsseln. Mit diesem Befehl wird der Dienstidentität die Cloud KMS-Rolle „Cloud KMS-Verschlüsseler / Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter
) für die Cloud KMS-Schlüssel my-other-key
zugewiesen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 des Secrets mit den neuen Cloud KMS-Schlüsselressourcennamen aktualisieren.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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"
Wenn Sie mehrere Schlüssel in einem Secret gleichzeitig aktualisieren möchten, können Sie die Replikationsrichtlinie über eine Datei abrufen und festlegen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 in Ihrem bevorzugten Editor entsprechend der gewünschten CMEK-Konfiguration. 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 für Secret-Version ansehen
Sehen Sie sich die Metadaten der Secret-Version an, um festzustellen, ob die Secret-Version CMEK-fähig ist und den Ressourcennamen der CMEK-Schlüsselversion.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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"
}
}
}
}
CMEK-Richtlinien einen Cloud EKM-Schlüssel hinzufügen
In diesem Abschnitt erfahren Sie, wie Sie einer CMEK-Richtlinie einen Cloud EKM-Schlüssel hinzufügen. Mit diesen Schritten können Secrets mit einem Cloud EKM-Schlüssel verschlüsselt oder entschlüsselt werden.
Da Cloud EKM derzeit die global
-Mehrfachregion nicht unterstützt, können Cloud EKM-Schlüssel nur mit Secrets verwendet werden, die für die vom Nutzer verwaltete Replikation konfiguriert sind.
Erstellen Sie einen symmetrischen Schlüssel in der Cloud KMS-Region us-central1
(oder in einer anderen Region mit Ausnahme von global
). In diesem Beispiel wird ein neuer Schlüsselbund namens secret-manager-cmek-ekm
erstellt. Anschließend wird im Schlüsselbund ein neuer Schlüssel namens my-ekm-key
erstellt.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 einen Schlüssel in diesem Schlüsselbund:
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 eine neue Version von my-ekm-key
mit dem externen URI des Schlüssels.
Weitere Informationen zu externen URIs für Cloud EKM-Schlüssel finden Sie unter Externen Schlüssel erstellen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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, um es mit dem externen Schlüssel zu verschlüsseln und zu entschlüsseln. Mit diesem Befehl wird der Dienstidentität die Cloud KMS-Rolle „Cloud KMS-Verschlüsseler / Entschlüsseler“ (roles/cloudkms.cryptoKeyEncrypterDecrypter
) für my-ekm-key
zugewiesen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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"
Bei jeder Secret-Version in my-ekm-secret
wird die Nutzlast der Secret-Version automatisch mit dem Cloud EKM-Schlüssel verschlüsselt, bevor sie in den nichtflüchtigen Speicher geschrieben wird, sofern 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 beim Versuch, eine neue Secret-Version zu erstellen oder auf eine vorhandene zuzugreifen, ein Fehler zurückgegeben.
Fügen Sie eine neue Secret-Version hinzu. Der Ressourcenname des Schlüssels wird aus den Metadaten des Secrets gelesen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 auch dann erstellt, wenn der Aufrufer keinen direkten Zugriff auf den Schlüssel hat. Beim Lesen und Schreiben des Secrets ist die Dienstidentität für Secret Manager und nicht der Aufrufer verantwortlich.
Rufen Sie die soeben erstellte Secret-Version auf. Hier greift die Dienstidentität auf den Schlüssel zu und verschlüsselt oder entschlüsselt das Secret in Ihrem Namen.
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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 oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. 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