In diesem Dokument wird beschrieben, wie häufige CMEK-Konfigurationsfehler identifiziert und behoben werden können. Außerdem wird beschrieben, wie Sie Fehler identifizieren, die bei der Konfiguration der Standardressourceneinstellungen für Cloud Logging auftreten. Diese Einstellungen können für Organisationen und Ordner konfiguriert werden.
Fehlerbehebung beim Festlegen des Standorts für neue, vom System erstellte Log-Buckets
Sie versuchen, die Standardressourceneinstellungen für Cloud Logging für eine Organisation oder einen Ordner zu aktualisieren. Ihre Aktualisierung besteht entweder darin, die Standorteinstellung festzulegen oder zu ändern. Der Befehl schlägt jedoch mit einem Fehler ähnlich dem folgenden fehl:
ERROR: (gcloud.logging.settings.update) INVALID_ARGUMENT: The KMS key location must match the storage location. Received KMS key location: us-central1, storage location: us-west1
- '@type': type.googleapis.com/google.rpc.DebugInfo
detail: '[ORIGINAL ERROR] generic::invalid_argument: The KMS key location must match
the storage location. Received KMS key location: us-central1, storage location:
us-west1 [google.rpc.error_details_ext] { message: "The KMS key location must
match the storage location. Received KMS key location: us-central1, storage location:
us-west1" }'
Zur Behebung dieses Fehlers legen Sie für den Standort in den Standardressourceneinstellungen den Standort des Cloud Key Management Service-Schlüssels fest.
Fehlerbehebung bei VPC Service Controls und domaineingeschränkter Freigabe
Sie haben Ihre Standardressourceneinstellungen für Cloud Logging mit einer CMEK-Einstellung konfiguriert oder einen Log-Bucket mit aktiviertem CMEK erstellt. Anschließend konfigurieren Sie VPC Service Controls. Nachdem Sie VPC Service Controls konfiguriert haben, schränken Sie den Zugriff auf Cloud Key Management Service in VPC Service Controls ein oder aktivieren die domaineingeschränkte Freigabe.
Mindestens eines der folgenden Ereignisse tritt ein:
Sie haben eine Benachrichtigung von Cloud Logging über CMEK-Zugriffsprobleme erhalten.
Sie stellen fest, dass CMEK für die
_Defaultund_RequiredLog-Buckets nicht aktiviert ist, wenn Sie neue Google Cloud Projekte in Ihrer Organisation oder in einem Ordner erstellen.Beim Lesen aus Log-Buckets mit aktiviertem CMEK treten Fehler auf. Die angezeigten Fehler ähneln dem folgenden Fehler:
ERROR: (gcloud.logging.read) FAILED_PRECONDITION: service account `cmek-PROJECT_ID@gcp-sa-logging.iam.gserviceaccount.com` must have both encrypt and decrypt access to the CMEK KMS key `projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY`Beim Erstellen oder Aktualisieren von Log-Buckets mit aktiviertem CMEK treten Fehler auf. Die angezeigten Fehler ähneln dem folgenden Fehler:
ERROR: (gcloud.logging.buckets.create) service account `cmek-PROJECT_ID@gcp-sa-logging.iam.gserviceaccount.com` must have both encrypt and decrypt access to the CMEK KMS key `projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY` - '@type': type.googleapis.com/google.rpc.DebugInfo detail: '[ORIGINAL ERROR] generic::permission_denied: Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: <var>ERRORID</var>;'
So stellen Sie fest, ob diese Probleme auf die VPC Service Controls-Konfiguration zurückzuführen sind:
Ermitteln Sie die Cloud Logging-Einstellungen für die Ressource, die die CMEK-Konfiguration enthält. Eine Ressource kann ein Projekt, ein Ordner oder eine Organisation sein. Wenn Sie Log-Buckets mit aktiviertem CMEK erstellt haben, wählen Sie die Ressource PROJEKT aus.
PROJEKT
gcloud logging settings describe --project=PROJECT_ID
Ersetzen Sie vor dem Ausführen des Befehls PROJECT_ID durch die Projekt-ID, die den Log-Bucket enthält.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Ersetzen Sie vor dem Ausführen des Befehls FOLDER_ID durch die ID des Ordners.
Organisation
gcloud logging settings describe --organization=ORGANIZATION_ID
Ersetzen Sie vor dem Ausführen des Befehls ORGANIZATION_ID durch die ID von der Organisation.
Der vorherige Befehl gibt Informationen ähnlich den folgenden zurück:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Für Organisationen und Ordner wird auch das folgende Feld zurückgegeben:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Der Wert des
kmsKeyNameFelds enthält das Google Cloud Projekt, in dem der Schlüssel gespeichert ist.Ermitteln Sie, ob Sie Dienstkonten migrieren müssen:
Wenn der Wert des Felds
kmsServiceAccountIddas Präfixservice-hat, müssen Sie Ihr Dienstkonto nicht migrieren. Informationen zu CMEK-Konfigurationsfehlern finden Sie im Abschnitt Fehlerbehebung bei CMEK in diesem Dokument.Wenn der Wert von
kmsServiceAccountIddas Präfixcmek-hat, fahren Sie mit dem nächsten Schritt fort.
Bestätigen Sie, dass Sie Dienstkonten migrieren müssen, indem Sie die domaineingeschränkte Freigabe deaktivieren oder Cloud Key Management Service aus der Liste der eingeschränkten VPC Service Controls -Dienste entfernen.
Wenn die Fehler behoben sind, müssen Sie die betroffenen Ressourcen zu einem neuen Dienstkonto migrieren, um die Fehler zu beheben. Informationen zu diesen Schritten finden Sie im nächsten Abschnitt.
CMEK-Dienstkonten migrieren
Im folgenden Prozess wird beschrieben, wie Sie das Dienstkonto ändern, das Cloud Logging für den Zugriff auf konfigurierte Cloud Key Management Service-Schlüssel verwendet. Durch die Änderung des Dienstkontos wird ein bekanntes Problem mit VPC Service Controls und der domaineingeschränkten Freigabe behoben.
Ermitteln Sie die
loggingServiceAccountIdfür Ihre Ressource. Eine Ressource kann ein Projekt, ein Ordner oder eine Organisation sein. Wenn Sie Log-Buckets mit aktiviertem CMEK erstellt haben, wählen Sie die Ressource PROJEKT aus.PROJEKT
gcloud logging settings describe --project=PROJECT_ID
Ersetzen Sie vor dem Ausführen des Befehls PROJECT_ID durch die Projekt-ID, die den Log-Bucket enthält.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Ersetzen Sie vor dem Ausführen des Befehls FOLDER_ID durch die ID des Ordners.
Organisation
gcloud logging settings describe --organization=ORGANIZATION_ID
Ersetzen Sie vor dem Ausführen des Befehls ORGANIZATION_ID durch die ID von der Organisation.
Der vorherige Befehl gibt Informationen ähnlich den folgenden zurück:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Für Organisationen und Ordner wird auch das folgende Feld zurückgegeben:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Der Wert des
kmsKeyNameFelds enthält das Google Cloud Projekt, in dem der Schlüssel gespeichert ist.Wenn Sie für Ihre Organisation oder für Ordner die Standardressourceneinstellungen für Cloud Logging mit CMEK-Einstellungen konfiguriert haben, gehen Sie so vor:
Gewähren Sie im KMS_PROJECT_ID dem Dienstkonto, das durch das
loggingServiceAccountIdFeld identifiziert wird, die Rolle Cloud Key Management Service CryptoKey-Ver-/Entschlüsseler.Führen Sie den folgenden curl-Befehl aus, der das von der Ressource verwendete Cloud Key Management Service-Dienstkonto ändert.
PROJEKT
Nicht zutreffend.
FOLDER
curl -X PATCH -H "Authorization: Bearer \"$(gcloud auth print-access-token)\"" -H "Content-Type: application/json; charset=utf-8" -d '{"kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com"}' https://logging.googleapis.com/v2/folders/FOLDER_ID/settings?updateMask=kmsServiceAccountIdFühren Sie vor dem Ausführen des Befehls folgende Schritte aus:
- Ersetzen Sie FOLDER_ID durch die ID des Ordners.
- Ersetzen Sie SERVICE_ACCT_NAME durch die zuvor ermittelte
loggingServiceAccountId.
Organisation
curl -X PATCH -H "Authorization: Bearer \"$(gcloud auth print-access-token)\"" -H "Content-Type: application/json; charset=utf-8" -d '{"kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com"}' https://logging.googleapis.com/v2/organizations/ORGANIZATION_ID/settings?updateMask=kmsServiceAccountIdFühren Sie vor dem Ausführen des Befehls folgende Schritte aus:
- Ersetzen Sie ORGANIZATION_ID durch die ID der Organisation.
- Ersetzen Sie SERVICE_ACCT_NAME durch die zuvor ermittelte
loggingServiceAccountId.
Das Ergebnis des vorherigen Befehls sieht in etwa so aus:
{ "name": ".../settings", "kmsKeyName": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY", "kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com", "storageLocation": "...", "loggingServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com" }
Führen Sie für jedes Google Cloud Projekt oder jeden Ordner, das bzw. der vorhandene Log-Buckets mit aktiviertem CMEK enthält, folgende Schritte aus:
Führen Sie im Projekt oder Ordner für jeden Log-Bucket mit aktiviertem CMEK folgende Schritte aus:
Ermitteln Sie das Google Cloud Projekt, in dem der Cloud Key Management Service-Schlüssel gespeichert ist:
PROJEKT
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=PROJECT_ID
Führen Sie vor dem Ausführen des Befehls folgende Schritte aus:
- Ersetzen Sie PROJECT_ID durch die Projekt-ID, die den Log-Bucket enthält.
- Ersetzen Sie LOCATION durch den Standort des Log-Buckets.
FOLDER
gcloud logging buckets describe BUCKET_ID --location=LOCATION --folder=FOLDER_ID
Führen Sie vor dem Ausführen des Befehls folgende Schritte aus:
- Ersetzen Sie FOLDER_ID durch die ID des Ordners.
- Ersetzen Sie LOCATION durch den Standort des Log-Buckets.
Das Ergebnis des vorherigen Befehls sieht in etwa so aus:
cmekSettings: kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY kmsKeyVersionName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/1 serviceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com createTime: '2022-10-31T12:00:00.0000000Z' lifecycleState: ACTIVE name: projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID retentionDays: 30 createTime: '2022-10-31T13:00:00.0000000Z'
Rufen Sie das Google Cloud Projekt auf, das den Cloud Key Management Service-Schlüssel enthält,KMS_PROJECT_ID, und gewähren Sie demCloud Key Management Service CryptoKey-Verschlüsseler/EntschlüsselerRolle dem Dienstkonto, das durch das
loggingServiceAccountIdFeld identifiziert wird.
Führen Sie für das Projekt den folgenden curl-Befehl aus, der das Cloud Key Management Service-Dienstkonto ändert:
PROJEKT
curl -X PATCH -H "Authorization: Bearer \"$(gcloud auth print-access-token)\"" -H "Content-Type: application/json; charset=utf-8" -d '{"kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com"}' https://logging.googleapis.com/v2/projects/PROJECT_ID/settings?updateMask=kmsServiceAccountIdFühren Sie vor dem Ausführen des Befehls folgende Schritte aus:
- Ersetzen Sie PROJECT_ID durch die Projekt-ID, die den Log-Bucket enthält.
- Ersetzen Sie SERVICE_ACCT_NAME durch die zuvor ermittelte
loggingServiceAccountId.
FOLDER
Keine Aktion erforderlich, da Sie das vom Ordner verwendete Cloud Key Management Service-Dienstkonto in einem vorherigen Schritt geändert haben.
Das Ergebnis des vorherigen Befehls sieht in etwa so aus:
{ "name": ".../settings", "kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com", "loggingServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com" }
Führen Sie für jeden Log-Bucket mit aktiviertem CMEK folgende Schritte aus:
Bestätigen Sie die Migration. Die übergeordnete Ressource für den Log-Bucket bestimmt, welcher Google Cloud CLI-Befehl ausgeführt werden muss. Die übergeordnete Ressource kann ein Projekt, ein Ordner oder eine Organisation sein.
PROJEKT
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=PROJECT_ID
Führen Sie vor dem Ausführen des Befehls folgende Schritte aus:
- Ersetzen Sie PROJECT_ID durch die Projekt-ID, die den Log-Bucket enthält.
- Ersetzen Sie LOCATION durch den Standort des Log-Buckets.
FOLDER
gcloud logging buckets describe BUCKET_ID --location=LOCATION --folder=FOLDER_ID
Führen Sie vor dem Ausführen des Befehls folgende Schritte aus:
- Ersetzen Sie FOLDER_ID durch die ID des Ordners.
- Ersetzen Sie LOCATION durch den Standort des Log-Buckets.
Für ein Projekt sieht das Ergebnis des vorherigen Befehls in etwa so aus:
cmekSettings: kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY kmsKeyVersionName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/1 serviceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com createTime: '2022-10-31T12:00:00.0000000Z' lifecycleState: ACTIVE name: projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID retentionDays: 30 createTime: '2022-10-31T13:00:00.0000000Z'
Prüfen Sie, ob
serviceAccountIdmit der zuvor ermitteltenloggingServiceAccountIdübereinstimmt.
Warten Sie mindestens 30 Minuten, bevor Sie die Berechtigungen für das vorherige Dienstkonto widerrufen. Wenn nach dem Widerrufen der Berechtigungen für das vorherige Dienstkonto Probleme auftreten, stellen Sie die Berechtigungen wieder her und wenden Sie sich an den Cloud-Support.
Fehlerbehebung bei CMEK
Bei der Konfiguration von CMEK wird das Google Cloud Projekt, das den Cloud KMS-Schlüssel enthält, über relevante Probleme benachrichtigt. Beispiel: Aktualisierungen schlagen fehl wenn der KMS_KEY_NAME ungültig ist, wenn das zugehörige Dienstkonto nicht die erforderliche Rolle Cloud Key Management Service CryptoKey-Ver-/Entschlüsseler hat oder wenn der Zugriff auf den Schlüssel deaktiviert ist.
Nachdem Sie CMEK konfiguriert haben, tritt mindestens eines der folgenden Ereignisse ein:
Sie haben eine Benachrichtigung von Cloud Logging über CMEK-Zugriffsprobleme erhalten.
Sie stellen fest, dass CMEK für die
_Defaultund_RequiredLog-Buckets nicht aktiviert ist, wenn Sie neue Google Cloud Projekte in Ihrer Organisation oder in einem Ordner erstellen.Beim Lesen aus Log-Buckets mit aktiviertem CMEK oder beim Erstellen oder Aktualisieren von Log-Buckets treten Fehler auf.
Die Benachrichtigung enthält Informationen zum Fehler und Schritte, die Sie zur Behebung des Problems ausführen können:
| Fehler | Empfehlung |
|---|---|
| Berechtigung für kryptografischen Schlüssel verweigert | Dem mit Ihrem Google Cloud Projekt verknüpfte Logging-Dienstkonto fehlen die erforderlichen IAM Berechtigungen für den angegebenen Cloud KMS-Schlüssel. Folgen Sie der Anleitung in der Fehlermeldung oder lesen Sie die folgenden Dokumente:
|
| Kryptografischer Schlüssel ist deaktiviert | Der angegebene Cloud KMS-Schlüssel war deaktiviert. Folgen Sie der Anleitung in der Fehlermeldung, um den Schlüssel wieder zu aktivieren. |
| Kryptografischer Schlüssel wurde gelöscht | Der angegebene Cloud KMS-Schlüssel war gelöscht. Folgen Sie der Anleitung oder lesen Sie die folgenden Dokumente: |
Projekt ermitteln, das den Cloud KMS-Schlüssel enthält
So ermitteln Sie die ID des Google Cloud Projekts, das den Verschlüsselungsschlüssel enthält, der von einem Log-Bucket, Ordner oder einer Organisation verwendet wird:
PROJEKT
gcloud logging settings describe --project=PROJECT_ID
Ersetzen Sie vor dem Ausführen des Befehls PROJECT_ID durch die Projekt-ID, die den Log-Bucket enthält.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Ersetzen Sie vor dem Ausführen des Befehls FOLDER_ID durch die ID des Ordners.
Organisation
gcloud logging settings describe --organization=ORGANIZATION_ID
Ersetzen Sie vor dem Ausführen des Befehls ORGANIZATION_ID durch die ID von der Organisation.
Der vorherige Befehl gibt Informationen ähnlich den folgenden zurück:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Für Organisationen und Ordner wird auch das folgende Feld zurückgegeben:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Der Wert des kmsKeyName Felds enthält das Google Cloud Projekt, in dem
der Schlüssel gespeichert ist.
Schlüssel auf Nutzbarkeit prüfen
Führen Sie folgenden Befehl zur Auflistung aller Schlüssel aus, um den Schlüssel auf Nutzbarkeit zu prüfen:
gcloud kms keys list \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING
Dieser Befehl gibt Informationen zu den einzelnen Schlüsseln in einem Tabellenformat zurück. Die erste Zeile der Ausgabe ist eine Liste an Spaltennamen:
NAME PURPOSE ...
Prüfen Sie, ob in der Befehlsausgabe Cloud KMS CryptoKey als ENABLED aufgeführt und als Schlüsselzweck die symmetrische Verschlüsselung angegeben ist: Die Spalte PURPOSE muss ENCRYPT_DECRYPT enthalten und die Spalte PRIMARY_STATE muss ENABLED enthalten.
Bei Bedarf können Sie einen neuen Schlüssel erstellen.
Berechtigungskonfiguration prüfen
Dienstkonten, die mit den CMEK-Einstellungen der Organisation verknüpft sind, müssen die Rolle Cloud KMS CryptoKey-Ver-/Entschlüsseler für den konfigurierten Schlüssel haben.
Führen Sie den folgenden Befehl aus, um die IAM-Richtlinie des Schlüssels abzurufen:
gcloud kms keys get-iam-policy KMS_KEY_NAME
Fügen Sie dem Schlüssel bei Bedarf das Dienstkonto hinzu, das die Rolle "Cloud KMS CryptoKey-Ver-/Entschlüsseler“ enthält.