Utilizzo delle chiavi di crittografia gestite dal cliente (CMEK)

In questa pagina viene descritto come eseguire attività relative a: chiavi di crittografia gestite dal cliente (CMEK) per Bigtable. Per ulteriori informazioni su CMEK in generale, inclusi quando e e scopri perché abilitarlo, consulta la documentazione di Cloud KMS.

Ti consigliamo di utilizzare la console Google Cloud per tutte le attività di gestione delle chiavi attività di machine learning. Se prevedi di utilizzare Google Cloud CLI, installare la gcloud CLI per Bigtable.

Prepara le chiavi CMEK

Prima di poter creare una risorsa Bigtable protetta da CMEK, devi completare i passaggi seguenti per creare una chiave CMEK per ogni regione i cluster dell'istanza si troveranno in:

  1. Crea (o recupera) un agente di servizio Bigtable.
  2. Crea una chiave CMEK.
  3. Configura le impostazioni IAM per quella chiave.

Crea un agente di servizio Bigtable

Prima di creare una chiave CMEK, devi disporre di un servizio Bigtable di accesso, usato da Bigtable per accedere alla chiave.

Console

Non puoi creare un agente di servizio nella console Google Cloud. Tuttavia, se crei la chiave nella nella console Google Cloud, ti viene chiesto di concedere il ruolo Autore crittografia/decrittografia Cloud KMS e l'agente di servizio viene creato in quel momento, se non esiste ancora.

gcloud

  1. Esegui il comando gcloud services identity create per visualizza l'agente di servizio utilizzato da Bigtable per accedere alla CMEK per te. Questo comando crea l'account di servizio se non esiste già, la visualizza.

    gcloud beta services identity create \
        --service=bigtableadmin.googleapis.com \
        --project CBT_PROJECT
    

    Sostituisci CBT_PROJECT con il progetto che contiene le tue risorse Bigtable.

    Il comando visualizza l'ID agente di servizio, che formattato come un indirizzo email. Registra la stringa email di output, perché lo utilizzerai in un passaggio successivo.

    Service identity created:
    service-xxx@gcp-sa-bigtable.iam.gserviceaccount.com
    

Crea una chiave

Puoi utilizzare una chiave creata direttamente in Cloud KMS o esternamente chiave gestita che rendi disponibile con Cloud External Key Manager.

  1. Nel progetto Google Cloud in cui vuoi gestire le chiavi:

    1. Abilita l'API Cloud KMS.

    2. Crea un keyring e una chiave utilizzando una delle seguenti opzioni:

      La posizione della chiave di Cloud KMS deve essere il è uguale al cluster Bigtable con cui verrà usato. Ad esempio, se crei un keyring e una chiave in us-central1 (Iowa), quindi cluster in us-central1-a, us-central1-b e us-central1-c può essere protetto da chiavi di quel keyring.

Configura le impostazioni IAM per la chiave

Console

Per concedere un ruolo Cloud KMS all'agente di servizio, esegui la seguire. Puoi anche concedere l'autorizzazione alla chiave o al keyring se vuoi una granularità inferiore.

  1. Nella console Google Cloud, vai alla pagina IAM.

    Vai alla pagina IAM

  2. Fai clic su Aggiungi.

  3. Inserisci l'ID in formato email per Bigtable dell'agente di servizio di servizio di Google Cloud.

  4. Seleziona il ruolo Autore crittografia/decrittografia CryptoKey Cloud KMS.

  5. Fai clic su Salva.

gcloud

  1. Concedi il ruolo cloudkms.cryptoKeyEncrypterDecrypter al tuo agente di servizio:

    gcloud kms keys add-iam-policy-binding KMS_KEY \
        --keyring KMS_KEYRING\
        --location KMS_LOCATION \
        --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
        --project KMS_PROJECT
    

    Fornisci quanto segue:

    • KMS_KEY: il nome che hai assegnato alla chiave
    • KMS_KEYRING: il keyring KMS che contiene la chiave
    • KMS_LOCATION : la regione che contiene il keyring
    • SERVICE_ACCOUNT_EMAIL: identificatore in formato email per l'agente di servizio a cui concedi l'accesso
    • KMS_PROJECT: il progetto che contiene la chiave

Crea un'istanza abilitata per CMEK

Dopo aver creato e configurato le chiavi CMEK, puoi creare una protezione CMEK in esecuzione in un'istanza Compute Engine. Istanze Bigtable esistenti protette da Impossibile convertire la crittografia predefinita di Google per utilizzare CMEK; puoi scegliere solo un tipo di crittografia e una chiave al momento della creazione.

Segui i passaggi descritti in Creare un'istanza per creare Istanza protetta da CMEK.

Visualizza la chiave in uso

Le informazioni sulle versioni della chiave provengono dal campo encryption_info.

Per visualizzare le informazioni sulla versione della chiave CMEK per una tabella, completa quanto segue passaggi:

Console

  1. Vai alla pagina delle istanze Bigtable nel nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sul nome dell'istanza che contiene la tabella per aprire la Dettagli istanza e visualizzare l'elenco dei cluster nell'istanza.

  3. Accanto a un ID cluster, fai clic sul nome della chiave in Chiave di crittografia per visualizza la pagina Versioni della chiave del cluster.

gcloud

Per ogni cluster, puoi confermare la configurazione CMEK come segue:

    gcloud bigtable clusters describe CLUSTER_ID \
        --instance INSTANCE_ID --project CBT_PROJECT

Fornisci quanto segue:

  • CLUSTER_ID: l'identificatore permanente per il cluster
  • INSTANCE_ID: l'identificatore permanente dell'istanza
  • CBT_PROJECT: il progetto che contiene Risorse Bigtable

Il comando visualizza un output simile al seguente:

    defaultStorageType: SSD
    encryptionConfig:
      kmsKeyName: projects/cloud-kms-project/locations/us-central1/keyRings/cloud-bigtable-keys/cryptoKeys/my-cmek-key
    location: projects/cloud-bigtable-project/locations/us-central1-a
    name: projects/cloud-bigtable-project/instances/cmek-test-instance/clusters/my-cluster
    serveNodes: 1
    state: READY

Disattivare una chiave

Se disabiliti la versione di una chiave CMEK, l'accesso a tutti i dati protetti da quella chiave viene sospeso completamente gestita. L'eliminazione della versione di una chiave è l'azione permanente (dopo 24 ore) controparte di questa azione. Disattiva sempre tutte le chiavi per un'istanza anziché disabilitare solo le chiavi per uno o alcuni cluster.

Console

Questo è il metodo consigliato. L'utilizzo della console Google Cloud disabiliti tutte le versioni di una chiave contemporaneamente.

Segui queste istruzioni per ogni versione della chiave.

gcloud

Ti consigliamo di utilizzare la console Google Cloud per disabilitare le chiavi. Se invece vuoi utilizzare Google Cloud CLI, esegui questo comando tramite comandi SQL.

  1. Elenca tutte le versioni della chiave CMEK:

    gcloud kms keys versions list --key KMS_KEY \
        --keyring KMS_KEYRING --location KMS_LOCATION \
        --project KMS_PROJECT
    

    Fornisci quanto segue:

    • KMS_KEY: il nome della chiave CMEK
    • KMS_KEYRING: il keyring KMS che contiene la chiave
    • KMS_LOCATION: la regione che contiene il keyring
    • KMS_PROJECT: il progetto che contiene la chiave

    L'output è simile al seguente:

    NAME                                  STATE
    KMS_KEY_NAME/cryptoKeyVersions/1      ENABLED
    KMS_KEY_NAME/cryptoKeyVersions/2      ENABLED
    KMS_KEY_NAME/cryptoKeyVersions/3      ENABLED
    KMS_KEY_NAME/cryptoKeyVersions/4      ENABLED
    
  2. Disattiva tutte le versioni:

    for $KV in 1 2 3 4;
    do
    gcloud kms keys versions disable KV --key KMS_KEY \
        --keyring KMS_KEYRING --location KMS_LOCATION \
        --project KMS_PROJECT;
    done
    

    Fornisci quanto segue:

    • 1 2 3 4: le versioni che stai disattivando
    • KMS_KEY: il nome della chiave CMEK
    • KMS_KEYRING: il keyring KMS che contiene la chiave
    • KMS_LOCATION: la regione che contiene il keyring
    • KMS_PROJECT: il progetto che contiene la chiave

    L'elenco di tutte le versioni della chiave mostrerà di nuovo lo stato capovolto DISABLED, anche se potrebbero essere necessarie fino a 4 ore per Bigtable per intervenire sulla modifica dello stato.

  3. [Facoltativo] Per confermare lo stato di una CMEK disattivata dopo aver atteso dopo quattro ore, esegui questo comando:

     gcloud bigtable instances tables describe TABLE_ID \
         --instance INSTANCE_ID --view ENCRYPTION \
         --project CBT_PROJECT
    

    Fornisci quanto segue:

    • TABLE_ID: l'identificatore permanente della tabella
    • INSTANCE_ID: l'identificatore permanente dell'istanza
    • CBT_PROJECT: il progetto che contiene Risorse Bigtable

    Il comando visualizza un output simile al seguente:

    clusterStates:
      CLUSTER:
        encryptionInfo:
        - encryptionStatus:
            code: 9
            details:
            - '@type': type.googleapis.com/google.rpc.PreconditionFailure
              violations:
              - subject: KMS_KEY_NAME/cryptoKeyVersions/<int>
                type: KEY_DISABLED
            message: KMS_KEY_NAME is not enabled, current state is: DISABLED.
          encryptionType: CUSTOMER_MANAGED_ENCRYPTION
          kmsKeyVersion: KMS_KEY_NAME/cryptoKeyVersions/<int>
    name: projects/CBT_PROJECT/instances/INSTANCE/tables/TABLE
    
  4. [Facoltativo] Per verificare che i cluster nell'istanza siano disabilitati: esegui questo comando:

    gcloud bigtable clusters list --instances INSTANCE_ID
        --project CBT_PROJECT
    

    Fornisci quanto segue:

    • INSTANCE_ID: l'identificatore permanente dell'istanza
    • CBT_PROJECT: il progetto che contiene Risorse Bigtable

    Il comando visualizza un output simile al seguente:

    NAME              ZONE           NODES  STORAGE    STATE
    my-cluster        us-central1-a  1      SSD        DISABLED
    my-other-cluster  us-central1-b  1      SSD        DISABLED
    

Abilita una chiave

Se una versione della chiave è stata disabilitata, puoi riabilitarla per riottenere l'accesso a le tue risorse Bigtable. Questa opzione è disponibile per 30 giorni a partire dal giorno nel momento in cui la versione della chiave viene disabilitata.

Console

Questo è il metodo consigliato. L'utilizzo della console Google Cloud abilitare tutte le versioni di una chiave contemporaneamente.

Segui queste istruzioni per ogni versione della chiave.

gcloud

Ti consigliamo di utilizzare la console Google Cloud per abilitare le chiavi. Se vuoi utilizzare Google Cloud CLI, esegui questo comando tramite comandi SQL.

  1. Visualizza l'elenco delle versioni per identificare tutte le versioni della chiave:

    gcloud kms keys versions list --key KMS_KEY \
        --keyring KMS_KEYRING --location KMS_LOCATION \
        --project KMS_PROJECT
    

    Fornisci quanto segue:

    • KMS_KEY: il nome della chiave CMEK
    • KMS_KEYRING: il keyring KMS che contiene la chiave
    • KMS_LOCATION: la regione che contiene il keyring
    • KMS_PROJECT: il progetto che contiene la chiave

    Il comando visualizza un output simile al seguente:

    NAME                                  STATE
    KMS_KEY_NAME/cryptoKeyVersions/1      DISABLED
    KMS_KEY_NAME/cryptoKeyVersions/2      DISABLED
    KMS_KEY_NAME/cryptoKeyVersions/3      DISABLED
    KMS_KEY_NAME/cryptoKeyVersions/4      DISABLED
    

    Esegui il comando kms keys versions enable, fornendo tutte le versioni in elenco. Utilizzando l'output di esempio, il comando è simile a le seguenti:

    for $KV in 1 2 3 4;
    do
    gcloud kms keys versions enable KV --key KMS_KEY \
        --keyring KMS_KEYRING --location KMS_LOCATION \
        --project KMS_PROJECT;
    done
    

    Fornisci quanto segue:

    • 1 2 3 4: le versioni che stai disattivando
    • KMS_KEY: il nome della chiave CMEK
    • KMS_KEYRING: il keyring KMS che contiene la chiave
    • KMS_LOCATION: la regione che contiene il keyring
    • KMS_PROJECT: il progetto che contiene la chiave

    L'elenco delle versioni della chiave mostra di nuovo il loro stato capovolto in ENABLED.

Visualizza audit log per una chiave Cloud KMS

Prima di abilitare gli audit log di accesso ai dati di Cloud KMS, è bene familiarità con Cloud Audit Logs.

Gli audit log di accesso ai dati di Cloud KMS mostrano quando Bigtable o qualsiasi altro prodotto configurato per utilizzare il tuo La chiave CMEK effettua chiamate di crittografia/decrittografia a Cloud KMS. Bigtable non invia una chiamata di crittografia/decrittografia su ogni dato richiesta, ma gestisce un poller che controlla periodicamente la chiave. La i risultati del polling vengono visualizzati negli audit log.

Puoi configurare e interagire con gli audit log nella console Google Cloud:

  1. Assicurati che il logging sia abilitato per l'API Cloud KMS nel tuo progetto.

  2. Vai a Cloud Logging nella console Google Cloud.

    Vai a Cloud Logging

  3. Limita le voci di log alla chiave Cloud KMS aggiungendo il token seguenti righe a Query Builder:

    resource.type="cloudkms_cryptokey"
    resource.labels.key_ring_id = KMS_KEYRING
    resource.labels.crypto_key_id = KMS_KEY
    

    Fornisci quanto segue:

    • KMS_KEY: il nome della chiave CMEK
    • KMS_KEYRING: il keyring KMS che contiene la chiave

    Il log mostra un paio di voci di log ogni cinque minuti circa per tabella in in ogni cluster. Le voci di log sono simili a questi esempi:

    Info 2021-03-20 08:02:24.869 EDT Cloudkms.googleapis.com Decrypt projects/cloud-kms-project/locations/us-central1/keyRings/cloud-bigtable-keys/cryptoKeys/my-cmek-key service-123456789123@gcp-sa-bigtable.iam.gserviceaccount.com
    audit_log, method: "Decrypt", principal_email: "service-1234567891011@gcp-sa-bigtable.iam.gserviceaccount.com"
    
    Info 2021-03-20 08:02:24.913 EDT Cloudkms.googleapis.com Encrypt projects/cloud-kms-project/locations/us-central1/keyRings/cloud-bigtable-keys/cryptoKeys/my-cmek-key service-123456789123@gcp-sa-bigtable.iam.gserviceaccount.com
    audit_log, method: "Encrypt", principal_email: "service-123456789123@gcp-sa-bigtable.iam.gserviceaccount.com"
    

Per maggiori dettagli, consulta Informazioni sui log di controllo l'interpretazione degli audit log.

Visualizza l'utilizzo della chiave

Cloud KMS consente di visualizzare le seguenti informazioni sulle risorse Bigtable protette dalle chiavi.

  • Riepilogo sull'utilizzo della chiave: include informazioni sul numero di risorse e progetti protetti che utilizzano la chiave.
  • Dettagli sull'utilizzo della chiave: identifica le risorse protette da una chiave e quelle che dipendono dalla chiave.

Sono supportate le seguenti risorse Bigtable:

  • bigtableadmin.googleapis.com/Backup
  • bigtableadmin.googleapis.com/Cluster
  • bigtableadmin.googleapis.com/Table

Per maggiori informazioni sulla visualizzazione dell'utilizzo delle chiavi, consulta Visualizzare le informazioni sull'utilizzo delle chiavi.

Visualizzare lo stato della crittografia di una tabella

Console

Non puoi visualizzare lo stato della crittografia di una tabella in nella console Google Cloud.

gcloud

Per visualizzare i dettagli CMEK su una tabella, imposta view su ENCRYPTION o FULL. La risposta include la versione della chiave in uso e il suo stato come visto Bigtable.

    gcloud alpha bigtable instances tables describe TABLE_ID \
        --instance INSTANCE_ID --view ENCRYPTION \
        --project CBT_PROJECT

Fornisci quanto segue:

  • TABLE_ID: l'identificatore permanente per il cluster
  • INSTANCE_ID: l'identificatore permanente dell'istanza che contiene il backup
  • CBT_PROJECT: il progetto che contiene Risorse Bigtable

Il comando visualizza un output simile al seguente:

    clusterStates:
      my-cluster:
        encryptionInfo:
        - encryptionStatus: {}
          encryptionType: CUSTOMER_MANAGED_ENCRYPTION
          kmsKeyVersion: KMS_KEY_NAME/cryptoKeyVersions/4
      my-other-cluster:
        encryptionInfo:
        - encryptionStatus: {}
          encryptionType: CUSTOMER_MANAGED_ENCRYPTION
          kmsKeyVersion: KMS_KEY_NAME/cryptoKeyVersions/4
      name: projects/cloud-bigtable-project/instances/cmek-test-instance/tables/my-table

Visualizza i dettagli della crittografia per un backup

Un backup rimane bloccato alla versione della chiave originale. Le rotazioni delle versioni della chiave in Cloud KMS non ruotano le versioni utilizzate per decriptare backup.

Console

  1. Vai alla pagina delle istanze Bigtable nel nella console Google Cloud.

    Apri l'elenco delle istanze

  2. Fai clic sul nome dell'istanza per aprire la pagina Dettagli istanza.

  3. Nel riquadro di navigazione a sinistra, fai clic su Backup.

Il nome e la versione della chiave per ogni backup sono elencati in Chiave gestita dal cliente.

gcloud

Esegui questo comando per visualizzare le informazioni sulla crittografia per un backup.

    gcloud alpha bigtable backups describe BACKUP_ID \
        --instance INSTANCE_ID --cluster CLUSTER_ID \
        --project CBT_PROJECT

Fornisci quanto segue:

  • BACKUP_ID: l'ID assegnato al backup
  • CLUSTER_ID: l'identificatore permanente per il cluster
  • INSTANCE_ID: l'identificatore permanente dell'istanza che contiene il backup
  • CBT_PROJECT: il progetto che contiene Risorse Bigtable

Il comando restituisce un output simile al seguente. kmsKeyVersion è la versione della chiave CMEK a cui è bloccato il backup. Lo stato del la versione della chiave non viene segnalata.

    encryptionInfo:
      encryptionStatus:
        code: 2
        message: Status of the associated key version is not tracked.
      encryptionType: CUSTOMER_MANAGED_ENCRYPTION
      kmsKeyVersion: KMS_KEY_NAME/cryptoKeyVersions/3
    endTime: '2020-09-01T00:03:26.568600Z'
    expireTime: '2020-09-02T00:03:25.436473Z'
    name: projects/cloud-bigtable-project/instances/cmek-test-instance/clusters/my-cluster/backups/my-backup
    sizeBytes: '3780'

Passaggi successivi