Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK)

Questa pagina descrive come configurare un account di servizio e le chiavi per chiavi di crittografia gestite dal cliente e come creare un'istanza che utilizza un una chiave di crittografia gestita dal cliente creata manualmente. Per scoprire di più sull'utilizzo le chiavi di crittografia gestite dal cliente con Cloud SQL, consulta la Panoramica delle gestite dal cliente.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Assicurati di disporre del ruolo Amministratore Cloud SQL nel tuo account utente.

    Vai alla pagina IAM

  11. Enable the Cloud Key Management Service API.

    Enable the API

  12. Enable the Cloud SQL Admin API.

    Enable the API

Flusso di lavoro per la creazione di un'istanza Cloud SQL con CMEK

  1. Solo utenti gcloud e API: crea un account di servizio per ogni progetto che richiede chiavi di crittografia gestite dal cliente.
  2. Crea un keyring e una chiave e imposta la posizione di ogni chiave. La località è la regione Google Cloud.
  3. Solo utenti gcloud e API: concedi all'account di servizio l'accesso alla chiave.
  4. Prendi nota dell'ID chiave (KMS_KEY_ID), della posizione della chiave (GCP_REGION) e dell'ID keyring (KMS_KEYRING_ID).
  5. Vai a un progetto e crea un'istanza Cloud SQL con le seguenti opzioni:
    1. Nella stessa posizione della chiave di crittografia gestita dal cliente
    2. La configurazione delle chiavi gestite dal cliente
    3. L'ID chiave di crittografia gestita dal cliente

L'istanza Cloud SQL è ora abilitata con CMEK.

Crea un account di servizio

Devi creare un account di servizio per ogni progetto che richiede e chiavi di crittografia gestite dal cliente.

Per consentire a un utente di gestire gli account di servizio, concedi uno dei seguenti ruoli:

  • Utente account di servizio (roles/iam.serviceAccountUser): include le autorizzazioni per elencare gli account di servizio, ottenere i dettagli di un account di servizio e rubare l'identità di un account di servizio.
  • Amministratore account di servizio (roles/iam.serviceAccountAdmin): include autorizzazioni per elencare gli account di servizio e ottenere dettagli su un servizio . Sono incluse anche le autorizzazioni per creare, aggiornare ed eliminare i service account e per visualizzare o modificare il criterio Cloud SQL per PostgreSQL in un service account.

Al momento, puoi utilizzare solo i comandi gcloud CLI per creare il tipo di account di servizio necessario per le chiavi di crittografia gestite dal cliente. Se utilizzi la console, Cloud SQL crea automaticamente questo account di servizio per te.

gcloud

gcloud beta services identity create \
--service=sqladmin.googleapis.com \
--project=PROJECT_ID

Terraform

Per creare un account di servizio, utilizza una risorsa Terraform.

resource "google_project_service_identity" "gcp_sa_cloud_sql" {
  provider = google-beta
  service  = "sqladmin.googleapis.com"
}

Applica le modifiche

Per applicare la configurazione Terraform in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.

    Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione di Terraform.

Prepara la directory

Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve contenere .tf, ad esempio main.tf. In questo tutorial, il file è denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice campione nel nuovo oggetto main.tf.

    Facoltativamente, copia il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
    terraform init

    Facoltativamente, per utilizzare la versione più recente del provider Google, includi -upgrade :

    terraform init -upgrade

Applica le modifiche

  1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o che l'aggiornamento soddisfi le tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione di Terraform eseguendo il seguente comando e inserendo yes al prompt:
    terraform apply

    Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". per creare un nuovo messaggio email.

  3. Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.

Il comando precedente restituisce un nome per l'account di servizio. Puoi utilizzare questo nome dell'account di servizio durante la procedura in Concedere all'account di servizio l'accesso alla chiave.

Crea una chiave

Puoi creare la chiave nello stesso progetto Google Cloud di Cloud SQL o in un progetto utente separato. La posizione del keyring Cloud KMS deve corrispondere alla regione in cui vuoi creare l'istanza Cloud SQL. R la chiave multiregionale o globale non funzionerà. Cloud SQL La richiesta di creazione dell'istanza ha esito negativo se le regioni non corrispondono.

Per creare una chiave Cloud KMS:

Console

  1. Nella console Google Cloud, vai alla pagina Gestione delle chiavi.

    Vai a Gestione delle chiavi

  2. Fai clic su Crea keyring.
  3. Aggiungi un Nome keyring. Prendi nota di questo nome perché ti serve quando concedi all'account di servizio l'accesso alla chiave.
  4. Aggiungi una posizione per il keyring.
  5. Fai clic su Crea. Viene visualizzata la pagina Crea chiave.
  6. Aggiungi un Nome chiave.
  7. Per Finalità, seleziona Crittografia/decrittografia simmetrica.
  8. Seleziona un Periodo di rotazione e una Data di inizio.
  9. Fai clic su Crea.
  10. Nella tabella Chiavi, fai clic sui tre puntini nell'ultima colonna e seleziona Copia ID risorsa o annota l'ID. Si tratta di KMS_KEY_ID. Ti serve il KMS_KEY_ID quando concedi l'accesso alla chiave all'account di servizio.

gcloud

  1. Crea un nuovo keyring.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Annota questo nome perché ti servirà quando concederai alla chiave l'accesso all'account di servizio.
  2. Crea una chiave nel keyring.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    Annota questo nome perché ti servirà quando concederai alla chiave l'accesso all'account di servizio.

Terraform

Per creare un keyring, utilizza una risorsa Terraform.

resource "google_kms_key_ring" "keyring" {
  provider = google-beta
  name     = "keyring-name"
  location = "us-central1"
}

Per creare una chiave, utilizza una risorsa Terraform.

resource "google_kms_crypto_key" "key" {
  provider = google-beta
  name     = "crypto-key-name"
  key_ring = google_kms_key_ring.keyring.id
  purpose  = "ENCRYPT_DECRYPT"
}

Applica la configurazione Terraform:

terraform apply

Concedi all'account di servizio l'accesso alla chiave

Quando crei l'istanza Cloud SQL con CMEK, devi solo eseguire se usi gcloud o l'API. Puoi eseguire questa procedura se riscontri problemi di autorizzazione dopo la creazione dell'istanza.

Per concedere l'accesso all'account di servizio:

Console

  1. Nella console Google Cloud, vai alla pagina Gestione delle chiavi.

    Vai a Gestione delle chiavi

  2. Per selezionare il progetto che ospita la chiave, utilizza il selettore di progetti.
  3. Fai clic sul nome del keyring.
  4. Fai clic sul nome della chiave.
  5. Fai clic sulla scheda Autorizzazioni.
  6. Per aprire il riquadro, fai clic su Concedi l'accesso.
  7. Inserisci l'account di servizio come entità e seleziona "Autore crittografia/decrittografia CryptoKey Cloud KMS" come ruolo.
  8. Fai clic su Salva.

In alternativa, puoi concederlo anche nella pagina IAM del progetto.

VAI ALLA PAGINA IAM PROGETTO

gcloud

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloud-sql.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Terraform

Per concedere l'accesso alla chiave, utilizza una risorsa Terraform.

resource "google_kms_crypto_key_iam_binding" "crypto_key" {
  provider      = google-beta
  crypto_key_id = google_kms_crypto_key.key.id
  role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"

  members = [
    "serviceAccount:${google_project_service_identity.gcp_sa_cloud_sql.email}",
  ]
}

Applica la configurazione Terraform:

terraform apply

Crea un'istanza Cloud SQL con CMEK

Per creare un'istanza con chiavi di crittografia gestite dal cliente:

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Fai clic su Crea istanza.
  3. Scegli il motore del database.
  4. Inserisci un nome per l'istanza. Non includere dati sensibili o personali identificabili nel nome istanza; è visibile all'esterno. Non è necessario includere l'ID progetto nel nome dell'istanza. Questo è vengono creati automaticamente laddove opportuno (ad esempio, nei file di log).
  5. Inserisci la password per l'utente 'root'@'%'.
  6. Imposta la regione per l'istanza. Posiziona l'istanza nella stessa regione delle risorse che vi accedono. Nella maggior parte dei casi, non è necessario specificare una zona.
  7. Nella sezione Opzioni di configurazione, seleziona tutte le opzioni di configurazione fino a raggiungere Tipo di macchina e spazio di archiviazione.
  8. Espandi Tipo di macchina e archiviazione.
  9. Nella sezione Crittografia, seleziona Chiave gestita dal cliente.
  10. Seleziona la chiave KMS dal menu a discesa o inserisci manualmente il KMS_KEY_ID. Vengono visualizzate solo le chiavi KMS nello stesso progetto e nella stessa regione dell'istanza. Viene utilizzata la versione principale della chiave, pertanto se nel nome della chiave è fornita una versione della chiave, questa viene troncata. Per scegliere una chiave KMS appartenente a un progetto diverso, ma nella stessa regione, seleziona Non vedi la tua chiave? Inserisci l'ID risorsa della chiave e l'ID KMS_KEY_ID acquisito in precedenza.
  11. Se l'account di servizio non dispone dell'autorizzazione per criptare/decriptare con la chiave selezionata, viene visualizzato un messaggio. In questo caso, fai clic su Concedi per assegnare all'account di servizio il ruolo IAM roles/cloudkms.cryptoKeyEncrypterDecrypter> per la chiave KMS selezionata.
  12. Una volta selezionate le opzioni di configurazione, fai clic su Crea.
  13. Viene visualizzato un messaggio che spiega le implicazioni dell'utilizzo della chiave di crittografia gestita dal cliente. Leggilo e confermalo per procedere con l'istanza per la creazione di contenuti.

gcloud

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--disk-encryption-key=KMS_KEY_ID \
--database-version=VERSION \
--cpu=NUMBER_CPUS \
--memory=MEMORY_SIZE \
--region=REGION \
--root-password=INSERT-PASSWORD-HERE

Terraform

Per creare un'istanza con CMEK, utilizza una risorsa Terraform.

resource "google_sql_database_instance" "postgres_instance_with_cmek" {
  name                = "postgres-instance-cmek"
  provider            = google-beta
  region              = "us-central1"
  database_version    = "POSTGRES_14"
  encryption_key_name = google_kms_crypto_key.key.id
  settings {
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Elimina le modifiche

Per eliminare le modifiche:

  1. Per disabilitare la protezione dall'eliminazione, imposta il file di configurazione Terraform Argomento deletion_protection per false.
    deletion_protection =  "false"
  2. Applica la configurazione Terraform aggiornata eseguendo il seguente comando e inserendo yes al prompt:
    terraform apply
  1. Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il seguente comando e inserendo yes al prompt:

    terraform destroy

REST v1

Per creare un'istanza con chiavi di crittografia gestite dal cliente, passa diskEncryptionConfiguration al comando.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • project-id: l'ID progetto
  • instance-id: l'ID istanza
  • region: la regione
  • database-version: stringa della versione di Emum (ad esempio POSTGRES_12)
  • kms-resource-id: l'ID che hai ricevuto dalla creazione di una chiave.

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

Corpo JSON della richiesta:

{
  "name":"instance-id",
  "region":"region",
  "databaseVersion": "database-version",
  "diskEncryptionConfiguration" :
  {
      "kmsKeyName" : "kms-resource-id"
  },
  "settings":
  {
     "backupConfiguration":
      {
         "pointInTimeRecoveryEnabled": true,
         "enabled":true
      }
   }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Questo esempio utilizza instances:insert.

REST v1beta4

Creare un'istanza con crittografia gestita dal cliente le chiavi, passa diskEncryptionConfiguration al comando.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • project-id: l'ID progetto
  • instance-id: l'ID istanza
  • region: la regione
  • database-version: stringa della versione di Emum (ad esempio POSTGRES_12)
  • kms-resource-id: l'ID che hai ricevuto dalla creazione di una chiave.

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

Corpo JSON della richiesta:

{
  "name":"instance-id",
  "region":"region",
  "databaseVersion": "database-version",
  "diskEncryptionConfiguration" :
  {
      "kmsKeyName" : "kms-resource-id"
  },
  "settings":
  {
     "backupConfiguration":
      {
         "pointInTimeRecoveryEnabled": true,
         "enabled":true
      }
   }
}

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
Questo esempio utilizza instances:insert.

Crea un backup per un'istanza abilitata per CMEK

Il backup di un'istanza Cloud SQL viene criptato con la stessa versione della chiave primaria della versione gestita dal cliente dell'istanza principale chiave. Se la tua istanza utilizza una CMEK creata da Cloud KMS Autokey, il backup utilizza comunque la stessa chiave dell'istanza primaria. Autokey non crea chiavi per i backup.

Consulta: Creazione e gestione di backup on demand e automatici.

Sul modulo Crea un backup viene visualizzato il messaggio: "La tua copia di backup" verrà criptato con la versione principale della piattaforma di gestione del cliente chiave di crittografia. Se qualcuno elimina o disattiva questa versione della chiave, tutti i dati di backup criptati con la versione della chiave saranno persi definitivamente. Puoi controllare la versione primaria della chiave in Cloud KMS."

Nella pagina dei backup, l'elenco dei backup abilitati con le chiavi di crittografia gestite dal cliente contiene due colonne aggiuntive. Una colonna che indica che il backup è per un'istanza con CMEK abilitato e una colonna che mostra la versione della chiave utilizzata per criptare il backup.

Crea una replica per un'istanza abilitata per CMEK

Quando crei una replica di lettura di un'istanza Cloud SQL nella stessa regione, eredita la stessa chiave di crittografia gestita dal cliente dell'istanza padre. Se crei una replica di lettura in un'altra regione, ti viene presentato un nuovo elenco di chiavi di crittografia gestite dal cliente tra cui scegliere. Ogni regione utilizza il proprio insieme chiave.

Consulta Creazione di repliche di lettura.

Nella pagina Crea replica di lettura, vengono visualizzate le seguenti informazioni:

  1. In Crittografia viene visualizzato Gestita dal cliente.
  2. Viene visualizzata la chiave di crittografia per la replica.
  3. Viene visualizzato il messaggio "La tua replica verrà criptata con la chiave gestita dal cliente dell'istanza principale. Se qualcuno distrugge questa chiave, tutti i dati criptato con questo account andrà persa definitivamente".

Per una replica tra regioni, viene visualizzato il seguente messaggio:

"La tua replica tra regioni sarà criptata con il servizio gestito dal cliente selezionato chiave. Se qualcuno distrugge questa chiave, tutti i dati criptati con la chiave saranno permanentemente ha perso".

Crea un clone di un'istanza abilitata per CMEK

Quando crei un clone di un'istanza Cloud SQL, questo eredita lo stesso gestita dal cliente come quella utilizzata per criptare l'istanza di origine.

Consulta la sezione Clonazione di istanze.

Nella pagina Crea clone, vengono visualizzate le seguenti informazioni:

  1. In Crittografia viene visualizzato Gestito dal cliente.
  2. Viene visualizzata la chiave di crittografia del clone.
  3. Viene visualizzato il messaggio "Il tuo clone verrà criptato con l'origine gestita dal cliente dell'istanza. Se qualcuno distrugge questa chiave, tutti i dati criptati con la chiave saranno persi definitivamente."

Visualizza le informazioni chiave per un'istanza abilitata per CMEK

Dopo aver creato correttamente un'istanza Cloud SQL, puoi esaminare un elenco di istanze o la pagina Panoramica dell'istanza per vedere se è stata creata e la chiave di crittografia gestita dal cliente. I dettagli mostrano anche la chiave utilizzata per creare l'istanza.

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Nell'elenco Istanze, scorri verso destra fino a Crittografia. colonna. In questa colonna sono visualizzate le opzioni Gestita da Google e Gestita dal cliente.
  3. Fai clic sul nome di un'istanza per aprire la pagina Panoramica. L'account gestito dal cliente è elencata nel riquadro Configurazione.

Ricriptare un'istanza o una replica con CMEK abilitato esistente

Puoi criptare nuovamente le istanze e le repliche di Cloud SQL esistenti con la versione più recente della chiave primaria. Per ulteriori informazioni sulla nuova crittografia dell'istanza o della replica abilitata per CMEK esistente, consulta Informazioni sulle chiavi.

Ottenere la nuova versione della chiave primaria

  • Per criptare nuovamente l'istanza o la replica con una nuova versione, è necessaria la nuova versione della chiave primaria. Se hai bisogno di una nuova versione della chiave per le tue istanze, devi ruotare la chiave utilizzando Cloud Key Management Service. Per ruotare la chiave principale, consulta Ruotare una chiave.

  • Al termine della rotazione delle chiavi, attendi la propagazione della modifica della chiave principale prima di criptare di nuovo le istanze. Se la modifica della versione della chiave non coerente, l'istanza continuerà a utilizzare la versione precedente della chiave dopo la nuova crittografia. Per ulteriori informazioni, consulta la sezione Coerenza delle versioni delle chiavi.

Ricripta l'istanza abilitata per CMEK

Al termine della rotazione delle chiavi, cripta di nuovo l'istanza o la replica abilitata per CMEK esistente.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Nella sezione Configurazione, fai clic su Ricripta l'istanza.
  4. Nella finestra di dialogo visualizzata, conferma la selezione tramite facendo clic su Ricripta.

gcloud

Per criptare nuovamente l'istanza o la replica, esegui questo comando:

gcloud sql instances reencrypt INSTANCE_NAME
Sostituisci INSTANCE_NAME con il nome dell'istanza o della replica che stai criptando.

REST v1

Per criptare nuovamente l'istanza o la replica con la nuova chiave, esegui il seguente comando:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2023-06-28T21:19:09.503Z",
  "operationType": "REENCRYPT",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

Per criptare nuovamente l'istanza o la replica con la nuova chiave, esegui questo comando: :
    POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PROJECT_ID: l'ID progetto
  • INSTANCE_ID: l'ID istanza

Metodo HTTP e URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/reencrypt

Per inviare la richiesta, espandi una delle seguenti opzioni:

Dovresti ricevere una risposta JSON simile alla seguente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2023-06-28T21:22:13.663Z",
  "operationType": "REENCRYPT",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Backup di ricodificazione automatica

Quando esegui la nuova crittografia di un'istanza principale con una nuova versione della chiave primaria, Cloud SQL crea automaticamente un backup on demand chiamato backup di nuova crittografia.

Nell'elenco dei backup per per l'istanza Cloud SQL, il backup con ricrittografia è elencato come tipo on-demand ed etichettato con backup created automatically for data before CMEK re-encryption.

Come per gli altri backup on demand, i backup di nuova crittografia rimangono visibili finché non li elimini o non elimini l'istanza.

Limitazioni relative alla ricrittografia

Quando esegui la crittografia di un'istanza, tieni presente le seguenti limitazioni:

  • Non puoi eseguire altre operazioni di amministrazione sull'istanza mentre è in corso l'operazione di ricrittografia.
  • L'operazione di ricrittografia attiva un tempo di inattività che dipende dalle dimensioni dell'istanza o della replica.
  • Le repliche di un'istanza non vengono sottoposte a nuova crittografia quando un'istanza è criptata. Devi criptare di nuovo ogni replica separatamente.
  • Quando cripti nuovamente l'istanza, i backup non vengono ricriptati automaticamente con la nuova versione della chiave. Per ripristinare il backup o il recupero point-in-time a un'ora successiva all'esecuzione del backup, dovrai mantenere la versione della chiave Cloud KMS con cui è criptato il backup.

Per la risoluzione dei problemi, consulta Tabella per la risoluzione dei problemi relativi alla ricrittografia.

Utilizzo di Cloud External Key Manager (Cloud EKM)

Per proteggere i dati nelle istanze Cloud SQL, puoi utilizzare le chiavi che gestisci all'interno di un partner esterno supportato per la gestione delle chiavi. Per ulteriori informazioni, consulta Cloud External Key Manager, inclusa la sezione Considerazioni.

Quando è tutto pronto per creare una chiave Cloud EKM, consulta Gestione delle chiavi Cloud EKM. Dopo che una chiave viene fornisci il nome della chiave quando crei un'istanza Cloud SQL.

Puoi utilizzare le giustificazioni per l'accesso alle chiavi (KAJ) come parte di Cloud EKM. KAJ abilita per visualizzare il motivo di ogni richiesta di Cloud EKM. Inoltre, in base alla giustificazione fornita, puoi approvare o rifiutare automaticamente una richiesta. A per saperne di più, consulta Panoramica.

Pertanto, KAJ fornisce un controllo aggiuntivo sui tuoi dati fornendo una giustificazione per a ogni tentativo di decriptare i dati.

Google non ha il controllo sulla disponibilità delle chiavi in una chiave esterna di gestione dei contenuti.

Disattivare e riattivare le versioni delle chiavi

Consulta i seguenti argomenti:

Risoluzione dei problemi

Questa sezione descrive le operazioni da provare quando ricevi un messaggio di errore durante la configurazione o l'utilizzo di istanze con CMEK abilitato.

Le operazioni dell'amministratore di Cloud SQL, come la creazione, la clonazione o l'aggiornamento, potrebbero non riuscire a causa di Errori di Cloud KMS e autorizzazioni o ruoli mancanti. Le cause comuni di errore includono: manca la versione della chiave Cloud KMS, è una versione della chiave Cloud KMS disabilitata o eliminata, autorizzazioni IAM insufficienti per accedere alla versione della chiave Cloud KMS oppure La versione della chiave Cloud KMS si trova in una regione diversa da quella dell'istanza Cloud SQL. Utilizza la seguente tabella di risoluzione dei problemi per diagnosticare e risolvere i problemi comuni.

Tabella per la risoluzione dei problemi relativi alle chiavi di crittografia gestite dal cliente

Per questo errore… Il problema potrebbe essere… Prova a fare così…
Account di servizio per prodotto e progetto non trovato Il nome dell'account di servizio non è corretto. Assicurati di aver creato un account di servizio per il progetto utente corretto.

VAI ALLA PAGINA ACCOUNT DI SERVIZIO.

Impossibile concedere l'accesso all'account di servizio L'account utente non dispone dell'autorizzazione per concedere l'accesso a questa versione della chiave. Aggiungi il ruolo Amministratore organizzazione al tuo account utente o di servizio.

VAI ALLA PAGINA ACCOUNT IAM

La versione della chiave Cloud KMS è stata eliminata La versione della chiave è stata eliminata. Se la versione della chiave viene eliminata, non puoi utilizzarla per criptare o decriptare i dati.
La versione della chiave Cloud KMS è disabilitata La versione della chiave è disabilitata. Riattiva la versione della chiave Cloud KMS.

VAI ALLA PAGINA CRYPTO KEY

Autorizzazione insufficiente per utilizzare la chiave Cloud KMS Il ruolo cloudkms.cryptoKeyEncrypterDecrypter non è presente nell'account utente o di servizio che utilizzi per eseguire operazioni sulle istanze Cloud SQL oppure la versione della chiave Cloud KMS non esiste. Nel progetto Google Cloud che ospita la chiave, aggiungi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo account utente o di servizio.

VAI ALLA PAGINA ACCOUNT IAM


Se il ruolo è già stato concesso al tuo account, consulta Creazione di una chiave per scoprire come creare una nuova versione della chiave. Vedi nota.
Chiave Cloud KMS non trovata La versione della chiave non esiste. Crea una nuova versione della chiave. Consulta la sezione Creazione di una chiave. Vedi nota.
L'istanza Cloud SQL e la versione della chiave Cloud KMS si trovano in regioni diverse La versione della chiave Cloud KMS e l'istanza Cloud SQL devono trovarsi nella stessa regione. it non funziona se la versione della chiave Cloud KMS si trova in una regione globale o in più regioni. Crea una versione della chiave nella stessa regione in cui vuoi creare le istanze. Consulta: Creazione di una chiave. Vedi nota.
La versione della chiave Cloud KMS viene ripristinata, ma l'istanza è ancora sospesa La versione della chiave è disabilitata o non concede le autorizzazioni corrette. Riattiva la versione della chiave e concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo account utente o di servizio nel progetto Google Cloud che ospita la chiave.

Tabella per la risoluzione dei problemi relativi alla ricodificazione

Per questo errore... Il problema potrebbe essere… Prova a fare così…
Nuova crittografia delle risorse CMEK non riuscita perché la chiave Cloud KMS non è accessibile. Assicurati che la versione della chiave primaria sia abilitata e che l'autorizzazione sia concessa correttamente. La versione della chiave è disabilitata o non concede le autorizzazioni corrette.

Riattiva la versione della chiave Cloud KMS:

VAI ALLA PAGINA CRYPTO KEYS

Nel progetto Google Cloud che ospita la chiave, conferma Al tuo utente o servizio è stato concesso il ruolo cloudkms.cryptoKeyEncrypterDecrypter :

VAI ALLA PAGINA ACCOUNT IAM

La nuova crittografia della risorsa CMEK non è riuscita a causa di un errore interno del server. Riprova più tardi Si è verificato un errore interno del server. Riprova a eseguire la nuova crittografia. Per ulteriori informazioni, consulta Ricriptare un'istanza o una replica abilitata per CMEK esistente

Passaggi successivi