Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK)

Questa pagina descrive come configurare un account di servizio e le chiavi per le chiavi di crittografia gestite dal cliente e come creare un'istanza che utilizza una chiave di crittografia gestita dal cliente creata manualmente. Per saperne di più sull'utilizzo delle chiavi di crittografia gestite dal cliente con Cloud SQL, consulta la Panoramica delle chiavi di crittografia 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 gcloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

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

  9. Install the gcloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Assicurati di disporre del ruolo Amministratore Cloud SQL sul tuo account utente.

    Vai alla pagina IAM

  13. Enable the Cloud Key Management Service API.

    Enable the API

  14. Enable the Cloud SQL Admin API.

    Enable the API

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

    1. Solo utenti gcloud e API:crea un service account per ogni progetto che richiede chiavi di crittografia gestite dal cliente.
    2. Crea un portachiavi e una chiave e imposta la posizione per ogni chiave. La località è la regione Google Cloud .
    3. Solo utenti gcloud e API: Concedi al 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. La stessa posizione della chiave di crittografia gestita dal cliente
      2. Configurazione della chiave gestita dal cliente
      3. L'ID della chiave di crittografia gestita dal cliente

    La tua istanza Cloud SQL è ora abilitata con CMEK.

    Crea un account di servizio

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

    Per consentire a un utente di gestire i service account, concedi uno dei seguenti ruoli:

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

    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 questoaccount di serviziot.

    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 di Terraform in un progetto Google Cloud , completa i passaggi nelle sezioni seguenti.

    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 Terraform.

    Prepara la directory

    Ogni file di configurazione di Terraform deve avere la propria directory (chiamata anche modulo radice).

    1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file viene 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 file main.tf appena creato.

      (Facoltativo) Copia il codice da GitHub. Questa operazione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

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

      (Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione -upgrade:

      terraform init -upgrade

    Applica le modifiche

    1. Rivedi la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:
      terraform plan

      Apporta le correzioni necessarie alla configurazione.

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

      Attendi che Terraform visualizzi il messaggio "Apply complete!" (Applicazione completata).

    3. Apri il tuo Google Cloud progetto per visualizzare i risultati. Nella console Google Cloud , vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.

    Il comando precedente restituisce un nome del account di servizio. Utilizzerai questo nome dell'account di servizio durante la procedura descritta in Concedere all'account di servizio l'accesso alla chiave.

    Crea una chiave

    Puoi creare la chiave nello stesso progetto Google Cloud dell'istanza 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. Una chiave multiregionale o globale non funzionerà. La richiesta di creazione dell'istanza Cloud SQL non va a buon fine 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 chiavi

    2. Fai clic su Crea keyring.
    3. Aggiungi un Nome chiave automatizzata. Prendi nota di questo nome perché ti servirà quando concederai alaccount di serviziot l'accesso alla chiave.
    4. Aggiungi una posizione chiave automatizzata.
    5. Fai clic su Crea. Viene visualizzata la pagina Crea chiave.
    6. Aggiungi un Nome chiave.
    7. Per Finalità, seleziona Crittografia/decriptazione 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 annotalo. Questo è l'ID KMS_KEY_ID. Hai bisogno di KMS_KEY_ID quando concedi l'accesso alla chiave alaccount di serviziot.

    gcloud

    1. Crea un nuovo portachiavi.
      gcloud kms keyrings create KMS_KEYRING_ID \
      --location=GCP_REGION
        
      Annota questo nome perché ti servirà quando concedi l'accesso alla chiave all'account di servizio.
    2. Crea una chiave sul keyring.
      gcloud kms keys create KMS_KEY_ID \
      --location=GCP_REGION \
      --keyring=KMS_KEYRING_ID \
      --purpose=encryption
        
      Annota questo nome perché ti servirà quando concedi l'accesso alla chiave 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 al account di servizio l'accesso alla chiave

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

    Per concedere l'accesso al account di servizio:

    Console

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

      Vai a Gestione 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 accesso.
    7. Inserisci il 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 DEL 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 informazioni sensibili o personali nel nome dell'istanza, in quanto è visibile esternamente. Non è necessario includere l'ID progetto nel nome dell'istanza. Questo viene creato automaticamente quando appropriato (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 KMS_KEY_ID. Vengono visualizzate solo le chiavi KMS nello stesso progetto e nella stessa regione dell'istanza. Viene utilizzata la versione chiave primaria della chiave, quindi se viene fornita una versione della chiave nel nome della chiave, 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 concedere alaccount di serviziot 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 di una chiave di crittografia gestita dal cliente. Leggi e conferma per procedere con la creazione dell'istanza.

    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 disattivare la protezione dall'eliminazione, imposta l'argomento deletion_protection su false nel file di configurazione Terraform.
      deletion_protection =  "false"
    2. Applica la configurazione Terraform aggiornata eseguendo il comando seguente 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, apporta le seguenti sostituzioni:

    • project-id: l'ID progetto
    • instance-id: l'ID istanza
    • region: la regione
    • database-version: stringa della versione dell'enum (ad esempio POSTGRES_12)
    • kms-resource-id: L'ID che hai ricevuto durante la 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 di queste 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

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

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

    • project-id: l'ID progetto
    • instance-id: l'ID istanza
    • region: la regione
    • database-version: stringa della versione dell'enum (ad esempio POSTGRES_12)
    • kms-resource-id: L'ID che hai ricevuto durante la 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 di queste 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

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

    Consulta Creazione e gestione dei backup on demand e automatici.

    Nel modulo Crea un backup viene visualizzato il messaggio: "Il backup verrà criptato con la versione primaria della chiave di crittografia gestita dal cliente di questa istanza. Se qualcuno elimina o disabilita 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 chiavi di crittografia gestite dal cliente ha due colonne aggiuntive. Una colonna che mostra che il backup è per un'istanza abilitata per CMEK 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, questa eredita la stessa chiave di crittografia gestita dal cliente dell'istanza principale. Se crei una replica di lettura in un'altra regione, ti viene fornito un nuovo elenco di chiavi di crittografia gestite dal cliente da selezionare. Ogni regione utilizza il proprio set di chiavi.

    Vedi Creazione delle repliche di lettura.

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

    1. La crittografia mostra gestita dal cliente.
    2. Viene visualizzata la chiave di crittografia per la replica.
    3. Viene visualizzato il messaggio "La tua replica sarà criptata con la chiave gestita dal cliente dell'istanza primaria. Se qualcuno distrugge questa chiave, tutti i dati criptati con la chiave saranno persi definitivamente."

    Per una replica cross-region, viene visualizzato il seguente messaggio:

    "La tua replica tra le regioni sarà criptata con la chiave gestita dal cliente selezionata. Se qualcuno distrugge questa chiave, tutti i dati criptati con la chiave saranno persi definitivamente."

    Crea un clone di un'istanza abilitata a CMEK

    Quando crei un clone dell'istanza Cloud SQL, questo eredita la stessa chiave di crittografia gestita dal cliente utilizzata per criptare l'istanza di origine.

    Consulta Clonazione di istanze.

    Nella pagina Crea clone, vengono visualizzate le seguenti informazioni:

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

    Visualizzare le informazioni chiave per un'istanza abilitata per CMEK

    Una volta creata correttamente un'istanza Cloud SQL, puoi esaminare l'elenco delle istanze o la pagina di panoramica dell'istanza per verificare che sia stata creata utilizzando una 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 visualizzare la colonna Crittografia. In questa colonna vengono visualizzati Gestito da Google e Gestito dal cliente.
    3. Fai clic sul nome di un'istanza per aprire la relativa pagina Panoramica. La chiave di crittografia gestita dal cliente è elencata nel riquadro Configurazione.

    Ricriptare un'istanza o una replica esistente abilitata a CMEK

    Puoi criptare nuovamente le istanze e le repliche Cloud SQL esistenti con l'ultima versione della chiave primaria. Per ulteriori informazioni sulla ricrittografia dell'istanza o della replica esistente abilitata per CMEK, consulta Informazioni sulle chiavi.

    Ottieni la nuova versione della chiave primaria

    • Per criptare nuovamente l'istanza o la replica con una nuova versione, devi disporre della 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 primaria, vedi Ruotare una chiave.

    • Una volta completata la rotazione della chiave, attendi la propagazione della modifica chiave primaria prima di crittografare nuovamente le istanze. Se la modifica della versione della chiave non è coerente, l'istanza continuerà a utilizzare la versione precedente della chiave dopo la ricriptazione. Per saperne di più, consulta Coerenza delle versioni delle chiavi.

    Ricriptare l'istanza abilitata a CMEK

    Al termine della rotazione della chiave, cripta nuovamente l'istanza o la replica esistente abilitata a CMEK.

    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 Ricifra istanza.
    4. Nella finestra di dialogo visualizzata, conferma la selezione facendo clic su Ricifra.

    gcloud

    Per crittografare 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 ricriptando.

    REST v1

    Per criptare nuovamente l'istanza o la replica con la nuova chiave, esegui questo 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 di queste 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, apporta 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 di queste 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 con ricrittografia automatica

    Quando cripti nuovamente 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 l'istanza Cloud SQL, il backup di ri-crittografia è 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 ricrittografia vengono conservati finché non li elimini o finché non elimini l'istanza.

    Limitazioni della ri-crittografia

    Quando cripti nuovamente un'istanza, tieni presente le seguenti limitazioni:

    • Non puoi eseguire altre operazioni di amministrazione sull'istanza mentre è in corso l'operazione di ri-crittografia.
    • 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 nuovamente criptate quando un'istanza viene criptata. Devi crittografare nuovamente ogni replica separatamente.
    • I backup non vengono ricriptati automaticamente con la nuova versione della chiave quando ricripti l'istanza. Per ripristinare il backup o il recupero point-in-time a un momento successivo all'esecuzione del backup, devi conservare la versione della chiave Cloud KMS con cui è criptato il backup.
    • I backup creati dopo la rotazione della chiave Cloud KMS con cui è criptata l'istanza utilizzeranno automaticamente la versione della chiave chiave primaria, anche se l'istanza non è criptata con questa versione della chiave.

    Per la risoluzione dei problemi, consulta la tabella di risoluzione dei problemi di ri-crittografia.

    Utilizzare Cloud External Key Manager (Cloud EKM)

    Per proteggere i dati nelle istanze Cloud SQL, puoi utilizzare le chiavi da te gestite in un partner di gestione delle chiavi esterne supportato. Per ulteriori informazioni, consulta Cloud External Key Manager, inclusa la sezione Considerazioni.

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

    Puoi utilizzare Key Access Justifications (KAJ) come parte di Cloud EKM. KAJ ti consente di visualizzare il motivo di ogni richiesta di Cloud EKM. Inoltre, in base alla giustificazione fornita, puoi approvare o rifiutare automaticamente una richiesta. Per scoprire di più, consulta la panoramica.

    Pertanto, KAJ offre un controllo aggiuntivo sui tuoi dati fornendo una giustificazione per ogni tentativo di decriptarli.

    Google non ha alcun controllo sulla disponibilità delle chiavi in un sistema di gestione delle chiavi esterno.

    Disabilitare e riabilitare le versioni della chiave

    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 abilitate a CMEK.

    Le operazioni di amministratore Cloud SQL, come la creazione, la clonazione o l'aggiornamento, potrebbero non riuscire a causa di errori di Cloud KMS e di ruoli o autorizzazioni mancanti. I motivi comuni di errore includono una versione della chiave Cloud KMS mancante, una versione della chiave Cloud KMS disattivata o eliminata, autorizzazioni IAM insufficienti per accedere alla versione della chiave Cloud KMS o la versione della chiave Cloud KMS si trova in una regione diversa dall'istanza Cloud SQL. Utilizza la seguente tabella per la 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 questa procedura:
    Account di servizio per prodotto e per progetto non trovato Il nome del 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 al account di servizio L'account utente non dispone dell'autorizzazione per concedere l'accesso a questa versione della chiave. Aggiungi il ruolo Amministratore dell'organizzazione al tuo utente o account di servizio.

    VAI ALLA PAGINA DEGLI ACCOUNT IAM

    La versione della chiave Cloud KMS viene eliminata La versione della chiave viene 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 CHIAVI CRITTOGRAFICHE

    Autorizzazione insufficiente per utilizzare la chiave Cloud KMS Il ruolo cloudkms.cryptoKeyEncrypterDecrypter non è presente nell'utente o nelaccount di serviziot 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 utente o account di servizio.

    VAI ALLA PAGINA DEGLI ACCOUNT IAM


    Se il ruolo è già concesso al tuo account, consulta Creazione di una chiave per scoprire come creare una nuova versione della chiave. Vedi nota.
    La chiave Cloud KMS non è stata trovata La versione della chiave non esiste. Crea una nuova versione della chiave. Vedi 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. Non funziona se la versione della chiave Cloud KMS si trova in una regione globale o multiregionale. Crea una versione della chiave nella stessa regione in cui vuoi creare le istanze. Vedi Creazione di una chiave. Vedi nota.
    La versione della chiave Cloud KMS viene ripristinata, ma l'istanza è ancora sospesa La versione della chiave è disattivata o non concede le autorizzazioni corrette. Riabilita la versione della chiave e concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo utente o account di servizio nel progetto Google Cloud che ospita la chiave.

    Tabella per la risoluzione dei problemi relativi alla ricrittografia

    Per questo errore… Il problema potrebbe essere... Prova questa procedura:
    La ricriptografia della risorsa 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 è disattivata o non concede le autorizzazioni corrette.

    Riattiva la versione della chiave Cloud KMS:

    VAI ALLA PAGINA CHIAVI CRITTOGRAFICHE

    Nel progetto Google Cloud che ospita la chiave, conferma che il ruolo cloudkms.cryptoKeyEncrypterDecrypter sia concesso al tuo utente o service account:

    VAI ALLA PAGINA DEGLI 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 crittografia. Per ulteriori informazioni, consulta Rieseguire la crittografia di un'istanza o una replica esistente abilitata per CMEK.

    Passaggi successivi