Questo documento descrive come trovare e mitigare la configurazione CMEK comune errori e descrive come identificare gli errori che si verificano durante l'impostazione la località delle risorse predefinita.
Risolvere i problemi relativi all'impostazione della località delle risorse predefinita
Provi ad aggiornare la posizione di archiviazione predefinita per un'organizzazione o una cartella, ma il comando non riesce con 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 l'errore, imposta la posizione di archiviazione predefinita per un'organizzazione o una cartella in modo che corrisponda alla posizione Chiave Cloud Key Management Service per l'organizzazione o la cartella.
Risolvere i problemi relativi ai Controlli di servizio VPC e alla condivisione limitata per i domini
Hai configurato CMEK come impostazione delle risorse predefinita per la tua organizzazione o per una cartella o hai creato un bucket di log con CMEK abilitata. Poi, configura i Controlli di servizio VPC. Dopo aver configurato i Controlli di servizio VPC, limita l'accesso a Cloud Key Management Service in Controlli di servizio VPC o abilita la condivisione limitata del dominio.
Si verifica almeno uno dei seguenti casi:
Hai ricevuto una notifica da Cloud Logging relativa a problemi di accesso a CMEK.
Noti che CMEK non è abilitata per
_Default
e_Required
bucket di log quando crei nuovi progetti Google Cloud nella tua organizzazione o in una cartella.Ricevi errori durante la lettura dai bucket dei log con CMEK abilitato. Gli errori visualizzati sono simili al seguente:
ERROR: (gcloud.logging.read) FAILED_PRECONDITION: service account `cmek-PROJECT_IDgcp-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 abilitato. Gli errori che vedi sono simili al seguente errore:
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, segui questi passaggi:
Identifica le impostazioni di Cloud Logging per la risorsa che contiene la configurazione CMEK. Una risorsa può essere un un progetto, una cartella o un'organizzazione. Se hai creato bucket di log con CMEK abilitata, quindi 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 di log.
CARTELLA
gcloud logging settings describe --folder=FOLDER_ID
Prima di eseguire il comando, sostituisci FOLDER_ID con l'ID di nella 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 le organizzazioni e le 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 memorizza la chiave.Determina se devi eseguire la migrazione degli account di servizio:
Se il valore del campo
kmsServiceAccountId
ha il prefissoservice-
, non è necessario eseguire la migrazione dell'account di servizio. Per informazioni sugli errori di configurazione CMEK, consulta la sezione Risolvere i problemi relativi a CMEK di questo documento.Se il valore di
kmsServiceAccountId
ha il prefissocmek-
, vai al passaggio successivo.
Conferma la migrazione degli account di servizio disattivando condivisione limitata al dominio oppure rimuovendo Cloud Key Management Service dall'elenco dei Controlli di servizio VPC con limitazioni.
Se gli errori vengono risolti, per risolvere gli errori devi eseguire la migrazione delle risorse interessate a un nuovo account di servizio. Per informazioni su questi passaggi, consulta la sezione successiva.
Esegui la migrazione degli account di servizio CMEK
La procedura seguente descrive come cambiare l'account di servizio Utilizza Cloud Logging per accedere alle chiavi Cloud Key Management Service configurate. La modifica dell'account di servizio risolve un problema noto con i Controlli di servizio VPC e la condivisione limitata dei domini.
Identifica il
loggingServiceAccountId
per la tua risorsa. Una risorsa può essere un progetto, una cartella o un'organizzazione. Se hai creato bucket di log conCMEK abilitato, 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 di log.
CARTELLA
gcloud logging settings describe --folder=FOLDER_ID
Prima di eseguire il comando, sostituisci FOLDER_ID con l'ID di nella 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 le organizzazioni e le 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.Se hai configurato un'impostazione della risorsa predefinita per la tua organizzazione o per le cartelle, procedi nel seguente modo:
In KMS_PROJECT_ID, concedi il ruolo Autore crittografia/decrittografia CryptoKey di Cloud Key Management Service all'account di servizio identificato dal campo
loggingServiceAccountId
.Esegui questo comando curl, che modifica le Account di servizio di Cloud Key Management Service utilizzato dalla risorsa.
PROGETTO
Non applicabile.
CARTELLA
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=kmsServiceAccountId
Prima di eseguire il comando, segui questi passaggi:
- Sostituisci FOLDER_ID con l'ID della cartella.
- Sostituisci SERVICE_ACCT_NAME con
loggingServiceAccountId
identificati 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=kmsServiceAccountId
Prima di eseguire il comando, segui questi passaggi:
- Sostituisci ORGANIZATION_ID con l'ID dell'organizzazione.
- Sostituisci SERVICE_ACCT_NAME con
loggingServiceAccountId
identificato 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 progetto o cartella Google Cloud che contiene bucket di log esistenti con CMEK, procedi nel seguente modo:
Nel progetto o nella cartella, per ogni bucket di log abilitato con CMEK, esegui le seguenti operazioni:
Identifica il progetto Google Cloud che memorizza la chiave di Cloud Key Management Service:
PROGETTO
gcloud logging buckets describe BUCKET_ID --location=LOCATION --project=PROJECT_ID
Prima di eseguire il comando, segui questi passaggi:
- Sostituisci PROJECT_ID con l'ID del progetto che contiene il bucket dei log.
- Sostituisci LOCATION con la posizione del bucket dei log.
CARTELLA
gcloud logging buckets describe BUCKET_ID --location=LOCATION --folder=FOLDER_ID
Prima di eseguire il comando, segui questi passaggi:
- 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 Autore crittografia/decrittografia CryptoKey Cloud Key Management Service ruolo all'account di servizio identificato dal
loggingServiceAccountId
.
Per il progetto, esegui il seguente comando curl, che modifica l'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=kmsServiceAccountId
Prima di eseguire il comando, segui questi passaggi:
- Sostituisci PROJECT_ID con l'ID del progetto che contiene il bucket dei log.
- Sostituisci SERVICE_ACCT_NAME con
loggingServiceAccountId
identificati in precedenza.
FOLDER
Nessuna azione necessaria, in quanto hai modificato l'account di servizio Cloud Key Management Service utilizzata 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 dei log con CMEK abilitato:
Conferma la migrazione. La risorsa principale per il bucket dei log determina il comando Google Cloud CLI da eseguire. L'elemento principale 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, segui questi passaggi:
- Sostituisci PROJECT_ID con l'ID del progetto che contiene il bucket dei log.
- Sostituisci LOCATION con la posizione del bucket dei log.
CARTELLA
gcloud logging buckets describe BUCKET_ID --location=LOCATION --folder=FOLDER_ID
Prima di eseguire il comando, segui questi passaggi:
- Sostituisci FOLDER_ID con l'ID della cartella.
- Sostituisci LOCATION con la località del bucket di log.
Per un progetto, il risultato del comando precedente è simile al comando seguenti:
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
serviceAccountId
corrisponda aloggingServiceAccountId
identificato in precedenza.
Attendi almeno 30 minuti prima di revocare le autorizzazioni nell'account servizio precedente. Se riscontri problemi dopo la revoca delle autorizzazioni nella l'account di servizio precedente, quindi ripristina le autorizzazioni assistenza Google Cloud.
Risolvere i problemi relativi a CMEK
Quando configuri CMEK, il progetto Google Cloud contenente La chiave Cloud KMS viene informata dei problemi correlati. Ad esempio, gli aggiornamenti non riescono quando KMS_KEY_NAME non è valido, quando l'account di servizio associato non dispone dei requisiti Ruolo Autore crittografia/decrittografia CryptoKey Cloud Key Management Service, 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 è attivato per i bucket di log
_Default
e_Required
quando crei nuovi progetti Google Cloud nella tua organizzazione o in una cartella.Ricevi errori quando leggi dai bucket di log con CMEK abilitato o se provi a creare o aggiornare i bucket di log.
La notifica fornisce informazioni sull'errore e contiene che puoi adottare per mitigare il problema:
Errore | Consiglio |
---|---|
Autorizzazione alla chiave di crittografia negata | L'account di servizio Logging associato al tuo progetto Google Cloud non dispone delle 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 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
a identificare l'ID del progetto Google Cloud che contiene la chiave di crittografia. utilizzata da un bucket di log, una cartella o un'organizzazione, 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 di log.
CARTELLA
gcloud logging settings describe --folder=FOLDER_ID
Prima di eseguire il comando, sostituisci FOLDER_ID con l'ID di nella 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 le organizzazioni e le 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.
Verificare l'usabilità della chiave
Per verificare l'usabilità della chiave, esegui il seguente 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 un formato tabulare. Il primo riga dell'output è un elenco di nomi di colonna:
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
Gli account di servizio associati alle impostazioni CMEK dell'organizzazione devono avere il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS per la chiave configurata.
Per elencare i criteri IAM della chiave, esegui questo comando:
gcloud kms keys get-iam-policy KMS_KEY_NAME
Se necessario, aggiungi l'account di servizio che contiene Ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS alla chiave.