Questa pagina riguarda Apigee, ma non Apigee ibrido.
Visualizza la documentazione di
Apigee Edge.
Questa sezione descrive i tipi di chiavi di crittografia e come crearle.
Durante la procedura di configurazione di Apigee, generi le seguenti chiavi di crittografia per Cloud Key Management Service:
Tipo di token | Al momento della creazione | Descrizione |
---|---|---|
Chiave di crittografia del piano di controllo |
Passaggio 3: crea un'organizzazione (abbonamento) Passaggio 3: configura hosting e crittografia (pagamento a consumo) |
Quando utilizzi la residenza dei dati, Apigee utilizza questa chiave per criptare i dati di analisi archiviati in BigQuery all'interno del progetto tenant. Cripta i proxy API, i server di destinazione, i truststore e gli archivi chiavi, i dati di analisi e qualsiasi altro contenuto condiviso tra i runtime. Apigee ti chiederà di fornire due chiavi CMEK del piano di controllo. Questa chiave e una chiave di crittografia dei dati consumer dell'API. La località della chiave di crittografia del piano di controllo deve corrispondere a quella del piano di controllo. |
Chiave di crittografia dei dati consumer dell'API |
Passaggio 3: crea un'organizzazione (abbonamento) Passaggio 3: configura hosting e crittografia (pagamento a consumo) |
Quando utilizzi la residenza dei dati, Apigee ha bisogno di una singola chiave regione, oltre alla chiave di crittografia del piano di controllo, utilizzata per i servizi disponibili solo in una singola regione. Ad esempio, Dataflow e Cloud SQL. La località della chiave di crittografia dei dati consumer dell'API deve trovarsi all'interno della località del piano di controllo. |
Chiave di crittografia del database di runtime |
Passaggio 3: crea un'organizzazione Apigee (abbonamento) Passaggio 3: configura hosting e crittografia (pagamento a consumo) |
Cripta i dati delle applicazioni, ad esempio KVM, cache e client secret, che vengono quindi archiviati nel database. Esiste una sola chiave di crittografia del database di runtime per ogni organizzazione: tutte le istanze o le regioni di un'organizzazione condividono la stessa chiave di crittografia del database di runtime.
La chiave di crittografia del database di runtime supporta tutte le località di Cloud KMS che supportano Cloud HSM e Cloud EKM. Google consiglia di utilizzare una
località a più regioni (ad es. La località della chiave di crittografia del database di runtime deve trovarsi all'interno della località del piano di controllo quando si utilizza la residente dei dati. La possibilità di scegliere la posizione del keyring dipende dal tipo di installazione utilizzata: la procedura guidata di provisioning di Apigee non consente di scegliere una posizione per il keyring, ma ne sceglie automaticamente la posizione. Se utilizzi la riga di comando, puoi scegliere la posizione del keyring. |
Chiave di crittografia del disco |
Passaggio 5: crea un'istanza di runtime Apigee (abbonamento) Passaggio 3: configura hosting e crittografia (pagamento a consumo) |
Cripta i dati dell'istanza di runtime prima che siano scritti su disco. I tipi di dati criptati includono Key Management System (KMS), mappe chiave valore (KVM), definizioni di quota, bucket e contatori e tutti i dati memorizzati nella cache. I dati del KMS includono prodotti API, sviluppatori, app per sviluppatori, token OAuth (inclusi token di accesso, token di aggiornamento e codici di autorizzazione) e chiavi API. Questa chiave si trova nella stessa regione dell'istanza di runtime. Quando crei una nuova chiave, associa la località della chiave a quella dell'istanza di runtime. Ogni combinazione di istanza/regione ha una propria chiave di crittografia del disco. |
Punti chiave
Quando crei le chiavi di crittografia del disco e del database di runtime, tieni presente quanto segue:
- La località della chiave di crittografia del database di runtime Apigee supporta tutte le località Cloud KMS che supportano Cloud HSM e Cloud EKM.
- La località della chiave di crittografia del disco deve corrispondere a quella dell'istanza di runtime in cui viene utilizzata la chiave.
- Una volta impostata, non puoi modificare la posizione di nessuna delle chiavi.
- Tutte le chiavi devono trovarsi in un keyring.
- Le chiavi di tipi diversi devono trovarsi in keyring separati. Le chiavi di crittografia del disco non possono trovarsi nello stesso keyring della chiave di crittografia del database del runtime.
-
Le chiavi devono avere un
purpose
. Se utilizzi la riga di comando per generare nuove chiavi, impostapurpose
suencryption
. Se utilizzi la console Google Cloud, scegli Crittografia/decrittografia simmetrica a questo scopo. - Le chiavi sono definite da un percorso della chiave, che utilizza il seguente pattern:
projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
Elenco delle chiavi esistenti
Se hai già creato nuove chiavi di crittografia Cloud KMS per Apigee, puoi utilizzarle anziché crearne di nuove durante la configurazione.
Per elencare tutte le chiavi KMS in un keyring:
Esegui il comando
gcloud kms keys list
:
gcloud kms keys list --keyring KEY_RING_NAME --location KEY_RING_LOCATION
Sostituisci quanto segue:
-
KEY_RING_NAME: il nome del keyring. Ad esempio,
my-key-ring
. -
KEY_RING_LOCATION: la posizione fisica del keyring,
ad esempio
us-west1
.
In alternativa, puoi visualizzare le chiavi nella console Google Cloud.
Generazione di nuove chiavi dalla riga di comando
Puoi creare un keyring e una chiave nella riga di comando o nella console Google Cloud.
Ogni tipo di chiave deve avere il proprio keyring. Ad esempio, le chiavi di crittografia del disco possono essere archiviate in un keyring, ma la chiave di crittografia del database di runtime deve essere archiviata in un keyring separato.
I passaggi seguenti spiegano come creare un keyring e una chiave e come concedere l'accesso all'agente di servizio Apigee per l'utilizzo della nuova chiave. Crea keyring e chiavi per il piano di controllo (se utilizzi la residenza dei dati), il database del runtime e il disco di runtime.
-
Crea un nuovo keyring utilizzando il comando
gcloud kms keyrings create
:Piano di controllo
Se è abilitata la residenza dei dati, crea un keyring per il piano di controllo e un altro per la regione di dati consumer.
gcloud kms keyrings create CONTROL_PLANE_KEY_RING_NAME \ --location CONTROL_PLANE_LOCATION \ --project PROJECT_ID
gcloud kms keyrings create CONSUMER_DATA_KEY_RING_NAME \ --location CONSUMER_DATA_REGION \ --project PROJECT_ID
Sostituisci quanto segue:
- CONTROL_PLANE_KEY_RING_NAME: nome del keyring del piano di controllo.
- CONTROL_PLANE_LOCATION: la località fisica in cui verranno archiviati i dati del piano di controllo Apigee.
- PROJECT_ID: l'ID del progetto Google Cloud.
- CONSUMER_DATA_KEY_RING_NAME: nome del keyring dei dati consumer.
- CONSUMER_DATA_REGION: una sottoregione della regione del piano di controllo. Devi specificare sia CONTROL_PLANE_LOCATION che CONSUMER_DATA_REGION.
Database di runtime
gcloud kms keyrings create RUNTIMEDB_KEY_RING_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --project PROJECT_ID
Sostituisci quanto segue:
- RUNTIMEDB_KEY_RING_NAME: il nome del keyring del database che stai creando.
- RUNTIMEDB_KEY_LOCATION: la posizione fisica del keyring del database.
- PROJECT_ID: l'ID del progetto Google Cloud.
La località della chiave di crittografia Apigee supporta tutte le località di Cloud KMS che supportano Cloud HSM e Cloud EKM.
Disco di runtime
gcloud kms keyrings create RUNTIMEDISK_KEY_RING_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --project PROJECT_ID
Sostituisci quanto segue:
- RUNTIMEDISK_KEY_RING_NAME: il nome del keyring del disco che stai creando.
- RUNTIMEDISK_KEY_LOCATION: la posizione fisica del keyring del disco.
- PROJECT_ID: l'ID del progetto Google Cloud.
Verifica che il keyring del disco sia impostato nella stessa località dell'istanza. Ogni istanza e keyring devono avere la propria località.
gcloud kms keyrings list \ --location \ --project $PROJECT_ID
gcloud kms keyrings describe $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
-
Crea una chiave utilizzando il comando
kms keys create
:Piano di controllo
Se è abilitata la residenza dei dati, crea un keyring per il piano di controllo e un altro per la regione di dati consumer.
gcloud kms keys create CONTROL_PLANE_KEY_NAME \ --keyring CONTROL_PLANE_KEY_RING_NAME \ --location CONTROL_PLANE_LOCATION \ --purpose "encryption" \ --project PROJECT_ID
gcloud kms keys create CONSUMER_DATA_KEY_NAME \ --keyring CONSUMER_DATA_KEY_RING_NAME \ --location CONSUMER_DATA_REGION \ --purpose "encryption" \ --project PROJECT_ID
Sostituisci quanto segue:
- CONTROL_PLANE_KEY_NAME: il nome della chiave del piano di controllo.
- CONTROL_PLANE_KEY_RING_NAME: nome del keyring del piano di controllo.
- CONTROL_PLANE_LOCATION: la località fisica in cui verranno archiviati i dati del piano di controllo Apigee.
- PROJECT_ID: l'ID del progetto Google Cloud.
- CONSUMER_DATA_KEY_NAME: nome della chiave dati utente.
- CONSUMER_DATA_KEY_RING_NAME: nome del keyring dei dati consumer.
- CONSUMER_DATA_REGION: una sottoregione della regione del piano di controllo. Devi specificare sia CONTROL_PLANE_LOCATION che CONSUMER_DATA_REGION.
Database di runtime
gcloud kms keys create RUNTIMEDB_KEY_NAME \ --keyring RUNTIMEDB_KEY_RING_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --purpose "encryption" \ --project PROJECT_ID
Sostituisci quanto segue:
- RUNTIMEDB_KEY_NAME: il nome della chiave di database che stai creando.
- RUNTIMEDB_KEY_RING_NAME: il nome del keyring del database che stai creando.
- RUNTIMEDB_KEY_LOCATION: la posizione fisica del keyring del database.
- PROJECT_ID: l'ID del progetto Google Cloud.
Disco di runtime
gcloud kms keys create RUNTIMEDISK_KEY_NAME \ --keyring RUNTIMEDISK_KEY_RING_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --purpose "encryption" \ --project PROJECT_ID
Sostituisci quanto segue:
- RUNTIMEDISK_KEY_NAME: il nome della chiave del disco che stai creando.
- RUNTIMEDISK_KEY_RING_NAME: il nome del keyring del disco che stai creando.
- RUNTIMEDISK_KEY_LOCATION: la posizione fisica del keyring del disco.
- PROJECT_ID: l'ID del progetto Google Cloud.
Questo comando crea la chiave e la aggiunge al keyring.
Quando fai riferimento a una chiave, utilizza l'ID chiave.
-
Concedi all'agente di servizio Apigee l'accesso per utilizzare la nuova chiave con il comando
gcloud kms keys add-iam-policy-binding
:Piano di controllo
Se è abilitata la residenza dei dati, crea un keyring per il piano di controllo e un altro per la regione di dati consumer.
gcloud kms keys add-iam-policy-binding CONTROL_PLANE_KEY_NAME \ --location CONTROL_PLANE_LOCATION \ --keyring CONTROL_PLANE_KEY_RING_NAME \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
gcloud kms keys add-iam-policy-binding CONSUMER_DATA_KEY_NAME \ --location CONSUMER_DATA_REGION \ --keyring CONSUMER_DATA_KEY_RING_NAME \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
Sostituisci quanto segue:
- CONTROL_PLANE_KEY_NAME: il nome della chiave del piano di controllo.
- CONTROL_PLANE_LOCATION: la località fisica in cui verranno archiviati i dati del piano di controllo Apigee.
- CONTROL_PLANE_KEY_RING_NAME: nome del keyring del piano di controllo.
- PROJECT_NUMBER: il numero del progetto Google Cloud.
- PROJECT_ID: l'ID del progetto Google Cloud.
- CONSUMER_DATA_KEY_NAME: nome della chiave dati utente.
- CONSUMER_DATA_REGION: una sottoregione della regione del piano di controllo. Devi specificare sia CONTROL_PLANE_LOCATION che CONSUMER_DATA_REGION.
- CONSUMER_DATA_KEY_RING_NAME: nome del keyring dei dati consumer.
Database di runtime
gcloud kms keys add-iam-policy-binding RUNTIMEDB_KEY_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --keyring RUNTIMEDB_KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
Sostituisci quanto segue:
- RUNTIMEDB_KEY_NAME: il nome della chiave di database che stai creando.
- RUNTIMEDB_KEY_RING_NAME: il nome del keyring del database che stai creando.
- RUNTIMEDB_KEY_LOCATION: la posizione fisica del keyring del database.
- PROJECT_NUMBER: il numero del progetto Google Cloud.
- PROJECT_ID: l'ID del progetto Google Cloud.
Disco di runtime
gcloud kms keys add-iam-policy-binding RUNTIMEDISK_KEY_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --keyring RUNTIMEDISK_KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
Sostituisci quanto segue:
- RUNTIMEDISK_KEY_NAME: il nome della chiave del disco che stai creando.
- RUNTIMEDISK_KEY_RING_NAME: il nome del keyring del disco che stai creando.
- RUNTIMEDISK_KEY_LOCATION: la posizione fisica del keyring del disco.
- PROJECT_NUMBER: il numero del progetto Google Cloud.
- PROJECT_ID: l'ID del progetto Google Cloud.
Questo comando associa la chiave all'agente di servizio Apigee.
Una volta completata correttamente questa richiesta,
gcloud
risponde con un messaggio simile al seguente:Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
Se ricevi un errore simile al seguente:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
Assicurati di aver utilizzato il numero di progetto e non il nome del progetto nell'indirizzo email dell'account di servizio.
Per verificare che la chiave sia associata all'agente di servizio Apigee:
gcloud kms keys get-iam-policy $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
gcloud kms keys describe $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
Il nome del keyring deve essere univoco per la tua organizzazione. Se crei regioni aggiuntive, i nomi dei keyring per quelle regioni non possono essere uguali ai nomi dei keyring esistenti.
Generazione di nuove chiavi mediante la console Google Cloud
Puoi generare nuove chiavi utilizzando la console, come descritto in Creare una chiave di crittografia simmetrica.
Quando utilizzi la console per creare una nuova chiave:
- Per la chiave di crittografia del database di runtime, imposta la località su qualsiasi località di Cloud KMS che supporti Cloud HSM e Cloud EKM. La UI non ti consente di scegliere nessun'altra posizione per la chiave, quindi corrisponderà a quella che hai scelto nel keyring.
- Dopo aver creato la chiave, ottieni il percorso della chiave nel riquadro Chiavi di crittografia facendo clic su Altro accanto alla chiave e selezionando Copia nome risorsa.
Recupera l'ID chiave
Quando fai riferimento a una risorsa di Cloud Key Management Service utilizzando l'API Cloud KMS o Google Cloud CLI, devi utilizzare l'ID risorsa. Puoi recuperare l'ID chiave con il comando
gcloud kms keys list
:
Piano di controllo
Quando è abilitata la residenza dei dati, esiste un keyring per il piano di controllo e un altro per la regione di dati consumer.
gcloud kms keys list \ --location=CONTROL_PLANE_LOCATION \ --keyring=CONTROL_PLANE_KEY_RING_NAME \ --project=PROJECT_ID
gcloud kms keys list \ --location=CONSUMER_DATA_REGION \ --keyring=CONSUMER_DATA_KEY_RING_NAME \ --project=PROJECT_ID
L'ID chiave ha la seguente sintassi (simile a un percorso file):
projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME
Database di runtime
gcloud kms keys list \ --location=RUNTIMEDB_KEY_LOCATION \ --keyring=RUNTIMEDB_KEY_RING_NAME \ --project=PROJECT_ID
L'ID chiave ha la seguente sintassi (simile a un percorso file):
projects/PROJECT_ID/locations/RUNTIMEDB_KEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
Disco di runtime
gcloud kms keys list \ --location=RUNTIMEDISK_KEY_LOCATION \ --keyring=RUNTIMEDISK_KEY_RING_NAME \ --project=PROJECT_ID
L'ID chiave ha la seguente sintassi (simile a un percorso file):
projects/PROJECT_ID/locations/RUNTIMEDISK_KEY_LOCATION/keyRings/RUNTIMEDISK_KEY_RING_NAME/cryptoKeys/RUNTIMEDISK_KEY_NAME
Ad esempio:
NAME: projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLED
Puoi ottenere l'ID chiave anche nella console Google Cloud. Per ulteriori informazioni, consulta la pagina relativa al recupero di un ID risorsa di Cloud KMS.