Pub/Sub cripta i messaggi con Chiavi di proprietà di Google e gestite da Google per impostazione predefinita. Non c'è alcuna configurazione o configurazione necessaria e non è necessario modificare il modo in cui accedi al servizio. Ogni messaggio viene criptato nei seguenti stati e livelli:
-
- Livello hardware
- Livello infrastruttura
- Livello di applicazione
A livello di applicazione, Pub/Sub cripta individualmente i messaggi in entrata i messaggi non appena vengono ricevuti. Questa implementazione aggiunge le seguenti funzionalità:
- Mantiene i messaggi criptati sui link interni dei data center
- Abilita le chiavi di crittografia gestite dal cliente (CMEK)
Utilizzo delle chiavi di crittografia gestite dal cliente
Pub/Sub utilizza pattern di crittografia della busta con CMEK. In questo approccio, i messaggi non sono criptati da Cloud KMS. Invece Cloud KMS viene utilizzato per criptare le chiavi di crittografia dei dati (DEK, Data Encryption Key) create Pub/Sub per ogni argomento. Queste DEK vengono archiviate solo in o con wrapping, nel modulo da Pub/Sub. Prima di archiviare una DEK, il servizio invia la DEK a Cloud KMS per essere criptata con la crittografia della chiave (KEK) specificata nell'argomento. Viene generata una nuova DEK per ogni argomento ogni sei ore circa.
Prima di pubblicare i messaggi in una sottoscrizione, Pub/Sub li cripta utilizzando la DEK più recente generata per l'argomento. Pub/Sub decripta i messaggi poco prima che vengano consegnati agli abbonati.
Pub/Sub utilizza un account Google Cloud
account di servizio per accedere
di Cloud KMS. L'account di servizio è gestito internamente
Pub/Sub per ogni progetto e non sarà visibile nell'elenco
di account di servizio. L'account di servizio ha il formato
service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
. Per CMEK
affinché la funzionalità funzioni, devi concedere questo account
il autore della crittografia/decrittografia CryptoKey Cloud KMS
in Identity and Access Management.
Configurazione degli argomenti
Puoi configurare CMEK utilizzando la console Google Cloud o la riga di comando gcloud lo strumento a riga di comando gcloud. Per i prerequisiti, devi avere:
- È stato creato un keyring e una chiave regionale o globale in di Cloud KMS. Le chiavi e i keyring non possono essere eliminati.
- Abilitata l'API Cloud KMS.
Consulta la guida rapida di Cloud KMS per istruzioni su come svolgere queste attività.
Poiché le risorse Pub/Sub sono globali, consigliamo vivamente di utilizzare chiavi Cloud KMS globali per configurare le chiavi abilitate per CMEK argomenti. A seconda delle posizioni degli editori e dei sottoscrittori di un argomento, l'utilizzo di una chiave Cloud KMS a livello di regione potrebbe introdurre di dipendenze sui link di rete tra regioni.
Utilizzo della console Google Cloud
Puoi utilizzare la finestra di dialogo per la creazione dell'argomento della console Google Cloud per aggiungere chiavi di crittografia. Consulta la guida rapida della console Google Cloud per informazioni su come accedere alla finestra di dialogo.
La console Google Cloud:
Semplifica la configurazione IAM garantendo al contempo che L'account di servizio Pub/Sub dispone delle autorizzazioni appropriate.
Consente di configurare la crittografia nella finestra di dialogo di creazione dell'argomento.
Utilizzo della riga di comando
Questo esempio illustra come utilizzare Google Cloud CLI per configurare CMEK su un argomento:
# Grant the Pub/Sub service account the Cloud KMS CryptoKey # Encrypter/Decrypter role. This service account is different # from the service account you are using to authorize requests to Google Cloud. gcloud projects add-iam-policy-binding ${PROJECT_ID} --member=\ "serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \ --role='roles/cloudkms.cryptoKeyEncrypterDecrypter' # Create a topic that uses customer-managed encryption, using the # --topic-encryption-key argument to specify the Cloud KMS key to use # for protecting message data. KEY_ID=projects/${PROJECT_ID}/locations/global/keyRings/my-key-ring/cryptoKeys/my-crypto-key alias pubsub="gcloud pubsub" pubsub topics create $TOPIC_NAME --topic-encryption-key=$KEY_ID # Confirm that the topic is configured for customer-managed encryption, # indicated by the presence of the kmsKeyName specified on the topic. pubsub topics describe $TOPIC_NAME
Audit log
Cloud KMS produce audit log quando le chiavi siano abilitati, disabilitati o utilizzati da Pub/Sub per criptare e decriptare messaggi. È utile per eseguire il debug dei problemi di pubblicazione o pubblicazione. la disponibilità del servizio.
Le chiavi Cloud KMS vengono collegate agli audit log per e l'argomento Pub/Sub. Pub/Sub non includere qualsiasi altra informazione relativa a Cloud KMS.
Prezzi e costi
Per le seguenti richieste Pub/Sub, l'uso di CMEK comporta addebita l'accesso al servizio Cloud KMS in base al Prezzi di Pub/Sub:
Per ogni argomento che utilizza CMEK, viene criptata e archiviata una nuova DEK ogni sei ore.
La chiave viene utilizzata per decriptare le DEK ogni sei minuti. La decrittografia avviene tre volte, una per ogni zona della regione in cui viene eseguito il servizio Pub/Sub.
Ad esempio, considera un argomento con:
Almeno un abbonamento
Client publisher e sottoscrittori nella stessa regione
Il numero di operazioni crittografiche di Cloud KMS può essere stimato come segue:
1 key access for ENCRYPT * (30 days / month * 24 hours / day) / 6 hours + 3 key accesses for DECRYPT * (30 days / month * 24 hours / day * 60 minutes / hour ) / 6 minutes = 21,720 Cloud KMS key access eventsData una struttura dei prezzi in cui le operazioni crittografiche è costato 0,03 $ogni 10.000 operazioni, l'utilizzo sopra riportato costerebbe circa 0,07 $. Consulta i prezzi di Cloud KMS per le informazioni sui prezzi.
In pratica, le chiavi potrebbero essere recuperate più o meno spesso a seconda dell'accesso pattern. Utilizza questi numeri solo come stime.
Monitoraggio e risoluzione dei problemi
I problemi con l'accesso alla chiave possono avere i seguenti effetti:
Ritardi nella consegna dei messaggi
Errori di pubblicazione
Monitora gli errori di pubblicazione e di richiesta di pull utilizzando quanto segue
metriche, raggruppate per response_class
e response_code
:
topic/send_request_count
subscription/pull_request_count
subscription/streaming_pull_response_count
La risposta StreamingPull ha un valore 100%
il tasso di errori. Questo indica che lo stream è terminato, non che le richieste
falliscono. Per monitorare StreamingPull, cerca l'elemento FAILED_PRECONDITION
codice di risposta.
La pubblicazione e la consegna dei messaggi possono non riuscire e vengono generati FAILED_PRECONDITION
errori per
per diversi motivi.
La chiave Cloud KMS potrebbe essere disabilitata. Per maggiori dettagli, vedi Disattivare e riattivare i tasti su questo .
Se utilizzi chiavi gestite esternamente tramite Cloud EKM, consulta consulta il riferimento errore Cloud EKM.
Per gli abbonamenti push, non è possibile rilevare direttamente le chiavi CMEK problemi di recapito. Invece:
Monitora dimensioni ed età del backlog di una sottoscrizione push utilizzando
subscription/num_unacked_messages
.Monitora
subscription/oldest_unacked_message_age
per rilevare picchi insoliti.Utilizza gli errori di pubblicazione e gli audit log CMEK per individuare i problemi.
Disattivazione e riattivazione dei tasti
Esistono due modi per impedire a Pub/Sub di decriptare dati dei messaggi:
Opzione consigliata: disattiva la chiave Cloud KMS che hai associato all'argomento utilizzando Pub/Sub. Questo approccio interessa solo gli argomenti e le sottoscrizioni Pub/Sub che sono associati a quella chiave specifica.
Revoca il ruolo Autore crittografia/decriptazione CryptoKey Pub/Sub dall'account di servizio Pub/Sub (
service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
) con o IAM. Questo approccio influisce su tutte le risorse Argomenti Pub/Sub e sottoscrizioni che contengono messaggi criptato con CMEK.
Sebbene nessuna delle due operazioni garantisca la revoca istantanea dell'accesso, In genere le modifiche IAM si propagano più velocemente. Per ulteriori informazioni vedi Coerenza delle risorse di Cloud KMS e Propagazione delle modifiche dell'accesso.
Quando Pub/Sub non può accedere a una chiave Cloud KMS, invia un messaggio
la pubblicazione e la distribuzione con StreamingPull o il pull hanno esito negativo con
FAILED_PRECONDITION
errore. La consegna dei messaggi agli endpoint push verrà interrotta. A
riprendere l'invio e la pubblicazione,
ripristinare l'accesso
Chiave Cloud KMS.
Quando la chiave Cloud KMS è accessibile a Pub/Sub, la pubblicazione è disponibile entro 12 ore e la consegna dei messaggi riprende entro 2 nell'orario lavorativo locale del TAM.
Sebbene interruzioni intermittenti inferiori a un minuto per Cloud KMS è improbabile che interrompere in modo significativo la pubblicazione e la distribuzione, l'estensione di Cloud KMS l'indisponibilità ha lo stesso effetto della revoca della chiave.