Questo documento descrive come trovare e mitigare gli errori comuni di configurazione di CMEK. Descrive inoltre come identificare gli errori che si verificano durante la configurazione delle impostazioni predefinite delle risorse per Cloud Logging. Queste impostazioni possono essere configurate per organizzazioni e cartelle.
Risolvere i problemi relativi all'impostazione della località per i nuovi bucket di log creati dal sistema
Per un'organizzazione o una cartella, tenti di aggiornare le impostazioni predefinite delle risorse per Cloud Logging. L'aggiornamento riguarda l'impostazione o la modifica della geolocalizzazione. Tuttavia, il comando non va a buon fine e viene visualizzato un errore simile al seguente:
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" }'
Per risolvere questo errore, imposta la località nelle impostazioni delle risorse predefinite in modo che corrisponda alla località della chiave Cloud Key Management Service.
Risolvere i problemi relativi ai Controlli di servizio VPC e alla condivisione limitata per i domini
Hai configurato le impostazioni delle risorse predefinite per Cloud Logging in modo che abbiano un'impostazione CMEK oppure hai creato un bucket log con CMEK abilitata. Dopodiché, configura i Controlli di servizio VPC. Dopo aver configurato Controlli di servizio VPC, limita l'accesso a Cloud Key Management Service in Controlli di servizio VPC o abilita la condivisione limitata dei domini.
Si verifica almeno uno dei seguenti casi:
Hai ricevuto una notifica da Cloud Logging relativa a problemi di accesso CMEK.
Noti che CMEK non è abilitata per i bucket di log
_Defaulte_Requiredquando crei nuovi progetti Google Cloud nella tua organizzazione o in una cartella.Ricevi errori quando leggi dai bucket di log con CMEK abilitata. Gli errori visualizzati sono simili al seguente:
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`Ricevi errori quando crei o aggiorni bucket di log con CMEK abilitata. Gli errori visualizzati sono simili al seguente:
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>;'
Per determinare se questi problemi sono dovuti alla configurazione di Controlli di servizio VPC, svolgi le seguenti operazioni:
Identifica le impostazioni di Cloud Logging per la risorsa che contiene la configurazione CMEK. Una risorsa può essere un progetto, una cartella o un'organizzazione. Se hai creato bucket di log con CMEK abilitata, seleziona la risorsa PROGETTO.
PROGETTO
gcloud logging settings describe --project=PROJECT_ID
Prima di eseguire il comando, sostituisci PROJECT_ID con l'ID progetto che contiene il bucket dei log.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Prima di eseguire il comando, sostituisci FOLDER_ID con l'ID della cartella.
ORGANIZZAZIONE
gcloud logging settings describe --organization=ORGANIZATION_ID
Prima di eseguire il comando, sostituisci ORGANIZATION_ID con l'ID dell'organizzazione.
Il comando precedente restituisce informazioni simili alle seguenti:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Per organizzazioni e cartelle, viene restituito anche il seguente campo:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Il valore del campo
kmsKeyNameinclude il progetto Google Cloud che archivia la chiave.Determina se devi eseguire la migrazione dei service account:
Se il valore del campo
kmsServiceAccountIdha il prefissoservice-, non è necessario eseguire la migrazione dell'account di servizio. Per informazioni sugli errori di configurazione di CMEK, consulta la sezione Risoluzione dei problemi di CMEK di questo documento.Se il valore di
kmsServiceAccountIdha il prefissocmek-, vai al passaggio successivo.
Conferma di dover eseguire la migrazione degli account di servizio disabilitando la condivisione limitata per i domini o rimuovendo Cloud Key Management Service dall'elenco dei servizi con limitazioni dei Controlli di servizio VPC.
Se gli errori vengono risolti, per risolvere i problemi devi migrare le risorse interessate a un nuovoaccount di serviziot. Per informazioni su questi passaggi, consulta la sezione successiva.
Esegui la migrazione dei service account CMEK
La seguente procedura descrive come modificare il account di servizio utilizzato da Cloud Logging per accedere alle chiavi di Cloud Key Management Service configurate. La modifica del account di servizio risolve un problema noto con i Controlli di servizio VPC e la condivisione limitata per i domini.
Identifica
loggingServiceAccountIdper la tua risorsa. Una risorsa può essere un progetto, una cartella o un'organizzazione. Se hai creato bucket di log con CMEK abilitata, seleziona la risorsa PROGETTO.PROGETTO
gcloud logging settings describe --project=PROJECT_ID
Prima di eseguire il comando, sostituisci PROJECT_ID con l'ID progetto che contiene il bucket dei log.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Prima di eseguire il comando, sostituisci FOLDER_ID con l'ID della cartella.
ORGANIZZAZIONE
gcloud logging settings describe --organization=ORGANIZATION_ID
Prima di eseguire il comando, sostituisci ORGANIZATION_ID con l'ID dell'organizzazione.
Il comando precedente restituisce informazioni simili alle seguenti:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Per organizzazioni e cartelle, viene restituito anche il seguente campo:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Il valore del campo
kmsKeyNameinclude il progetto Google Cloud che archivia la chiave.Se, per la tua organizzazione o per le cartelle, hai configurato le impostazioni delle risorse predefinite per Cloud Logging con le impostazioni CMEK, procedi nel seguente modo:
In KMS_PROJECT_ID, concedi il ruolo Autore crittografia/decrittografia CryptoKey Cloud Key Management Service al account di servizio identificato dal campo
loggingServiceAccountId.Esegui questo comando curl, che modifica il account di servizio Cloud Key Management Service utilizzato dalla risorsa.
PROGETTO
Non applicabile.
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=kmsServiceAccountIdPrima di eseguire il comando:
- Sostituisci FOLDER_ID con l'ID della cartella.
- Sostituisci SERVICE_ACCT_NAME con
loggingServiceAccountIdidentificato in precedenza.
ORGANIZZAZIONE
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=kmsServiceAccountIdPrima di eseguire il comando:
- Sostituisci ORGANIZATION_ID con l'ID dell'organizzazione.
- Sostituisci SERVICE_ACCT_NAME con
loggingServiceAccountIdidentificato in precedenza.
Il risultato del comando precedente è simile al seguente:
{ "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" }
Per ogni Google Cloud progetto o cartella che contengono bucket di log esistenti abilitati con CMEK, svolgi le seguenti operazioni:
Nel progetto o nella cartella, per ogni bucket dei log abilitato con CMEK, svolgi le seguenti operazioni:
Identifica il Google Cloud progetto che archivia la chiave Cloud Key Management Service:
PROGETTO
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=PROJECT_ID
Prima di eseguire il comando:
- Sostituisci PROJECT_ID con l'ID progetto che contiene il bucket dei log.
- Sostituisci LOCATION con la posizione del bucket dei log.
FOLDER
gcloud logging buckets describe BUCKET_ID --location=LOCATION --folder=FOLDER_ID
Prima di eseguire il comando:
- Sostituisci FOLDER_ID con l'ID della cartella.
- Sostituisci LOCATION con la posizione del bucket dei log.
Il risultato del comando precedente è simile al seguente:
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'
Vai al progetto Google Cloud proprietario della chiave Cloud Key Management Service,KMS_PROJECT_ID, e concedi il ruolo Autore crittografia/decrittografia CryptoKey Cloud Key Management Service all'account di servizio identificato dal campo
loggingServiceAccountId.
Per il progetto, esegui il seguente comando curl, che modifica il account di servizio Cloud Key Management Service:
PROGETTO
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=kmsServiceAccountIdPrima di eseguire il comando:
- Sostituisci PROJECT_ID con l'ID progetto che contiene il bucket dei log.
- Sostituisci SERVICE_ACCT_NAME con
loggingServiceAccountIdidentificato in precedenza.
FOLDER
Non è necessaria alcuna azione, in quanto hai modificato il account di servizio Cloud Key Management Service utilizzato dalla cartella in un passaggio precedente.
Il risultato del comando precedente è simile al seguente:
{ "name": ".../settings", "kmsServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com", "loggingServiceAccountId": "SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com" }
Per ogni bucket di log con CMEK abilitata, esegui le seguenti operazioni:
Conferma la migrazione. La risorsa padre per il bucket dei log determina quale comando Google Cloud CLI eseguire. L'elemento padre può essere un progetto, una cartella o un'organizzazione.
PROGETTO
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=PROJECT_ID
Prima di eseguire il comando:
- Sostituisci PROJECT_ID con l'ID progetto che contiene il bucket dei log.
- Sostituisci LOCATION con la posizione del bucket dei log.
FOLDER
gcloud logging buckets describe BUCKET_ID --location=LOCATION --folder=FOLDER_ID
Prima di eseguire il comando:
- Sostituisci FOLDER_ID con l'ID della cartella.
- Sostituisci LOCATION con la posizione del bucket dei log.
Per un progetto, il risultato del comando precedente è simile al seguente:
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'
Assicurati che
serviceAccountIdcorrisponda aloggingServiceAccountIdidentificato in precedenza.
Attendi almeno 30 minuti prima di revocare le autorizzazioni per l'account di servizio precedente. Se riscontri problemi dopo aver revocato le autorizzazioni per il account di servizio precedente, ripristina le autorizzazioni e contatta l'assistenza Cloud.
Risolvere i problemi relativi a CMEK
Durante la configurazione di CMEK, il progetto Google Cloud contenente la chiave Cloud KMS viene informato dei problemi correlati. Ad esempio, gli aggiornamenti non vanno a buon fine quando KMS_KEY_NAME non è valido, quando l'account di servizio associato non dispone del ruolo Autore crittografia/decrittografia CryptoKey Cloud Key Management Service richiesto o quando l'accesso alla chiave è disattivato.
Dopo aver configurato CMEK, si verifica almeno una delle seguenti condizioni:
Hai ricevuto una notifica da Cloud Logging relativa a problemi di accesso CMEK.
Noti che CMEK non è abilitata per i bucket di log
_Defaulte_Requiredquando crei nuovi progetti Google Cloud nella tua organizzazione o in una cartella.Ricevi errori quando leggi dai bucket di log con CMEK abilitata o se provi a creare o aggiornare i bucket di log.
La notifica fornisce informazioni sull'errore e contiene che puoi adottare per risolvere il problema:
| Errore | Suggerimento |
|---|---|
| Autorizzazione alla chiave di crittografia negata | L'account di servizio Logging associato al tuo progetto Google Cloud non dispone di autorizzazioni IAM sufficienti per operare sulla chiave Cloud KMS specificata. Segui le istruzioni riportate nell'errore o consulta i seguenti documenti:
|
| Chiave di crittografia disabilitata | La chiave Cloud KMS specificata è stata disattivata. Segui le istruzioni riportate nell'errore per riattivare la chiave. |
| Chiave di crittografia eliminata | La chiave Cloud KMS specificata è stata eliminata. Segui le istruzioni o consulta i seguenti documenti: |
Identifica il progetto che contiene la chiave Cloud KMS
Per identificare l'ID del progetto Google Cloud che contiene la chiave di crittografia utilizzata da un bucket, una cartella o un'organizzazione di log, segui questi passaggi:
PROGETTO
gcloud logging settings describe --project=PROJECT_ID
Prima di eseguire il comando, sostituisci PROJECT_ID con l'ID progetto che contiene il bucket dei log.
FOLDER
gcloud logging settings describe --folder=FOLDER_ID
Prima di eseguire il comando, sostituisci FOLDER_ID con l'ID della cartella.
ORGANIZZAZIONE
gcloud logging settings describe --organization=ORGANIZATION_ID
Prima di eseguire il comando, sostituisci ORGANIZATION_ID con l'ID dell'organizzazione.
Il comando precedente restituisce informazioni simili alle seguenti:
kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.iam.gserviceaccount.com
Per organizzazioni e cartelle, viene restituito anche il seguente campo:
kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY
Il valore del campo kmsKeyName include il progetto Google Cloud che archivia la chiave.
Verifica l'usabilità della chiave
Per verificare l'usabilità della chiave, esegui questo comando per elencare tutte le chiavi:
gcloud kms keys list \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING
Questo comando restituisce informazioni su ogni chiave in formato tabellare. La prima riga dell'output è un elenco di nomi di colonne:
NAME PURPOSE ...
Verifica che la chiave Cloud KMS sia elencata nell'output del comando come
ENABLED e che lo scopo della chiave sia la crittografia simmetrica: la
colonna PURPOSE deve contenere ENCRYPT_DECRYPT e la colonna PRIMARY_STATE
deve contenere ENABLED.
Se necessario, crea una nuova chiave.
Verifica la configurazione delle autorizzazioni
I service account associati alle impostazioni CMEK dell'organizzazione devono avere il ruolo Utilità di crittografia/decrittografia CryptoKey di Cloud KMS per la chiave configurata.
Per elencare la policy IAM della chiave, esegui questo comando:
gcloud kms keys get-iam-policy KMS_KEY_NAME
Se necessario, aggiungi alla chiave il account di servizio che contiene il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.