Informazioni sulle chiavi di crittografia Apigee

Questa pagina si applica a Apigee, ma non a Apigee ibrido.

Visualizza documentazione di Apigee Edge.

Questa sezione descrive i tipi di chiavi di crittografia e come crearle.

Durante il processo di configurazione di Apigee, generi quanto segue Chiavi di crittografia di 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 l'hosting e la crittografia (pagamento a consumo)

Quando si utilizza residenza dei dati, Apigee utilizza questa chiave per criptare Analytics archiviati in BigQuery all'interno del progetto tenant.

Cripta proxy API, server di destinazione, archivi attendibili e archivi chiavi, di analisi e qualsiasi altra informazione condivisa tra i runtime.

Apigee ti chiederà di fornire due chiavi CMEK del piano di controllo. Questa chiave, e un Chiave di crittografia dei dati consumer dell'API.

La località della chiave di crittografia del piano di controllo deve corrispondere alla la posizione del piano di controllo.

Chiave di crittografia dei dati consumer dell'API Passaggio 3: crea un'organizzazione (abbonamento)

Passaggio 3: configura l'hosting e la crittografia (pagamento a consumo)

Quando si utilizza residenza dei dati, Apigee ha bisogno di una chiave di regione singola, oltre ai chiave di crittografia del piano di controllo, utilizzata per i servizi che sono 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 dalla posizione del piano di controllo.

Chiave di crittografia del database di runtime Passaggio 3: crea un'organizzazione Apigee (abbonamento)

Passaggio 3: configura l'hosting e la crittografia (pagamento a consumo)

Cripta i dati delle applicazioni, ad esempio KVMs, cache e client e i secret, che vengono poi archiviati nel database.

È presente una chiave di crittografia del database di runtime per ogni organizzazione quando tutte le istanze o regioni di un'organizzazione condividono lo stesso chiave di crittografia del database runtime.

La chiave di crittografia del database runtime supporta tutte le risorse Cloud KMS sedi che supportano Cloud HSM e Cloud EKM. Google consiglia utilizzando un località a più regioni (ad es. us o europe) o località a due regioni (eur5, nam4) quando crei questa chiave.

La località della chiave di crittografia del database del runtime deve essere all'interno di la posizione del piano di controllo la residenza dei dati.

La possibilità di scegliere la posizione del keyring dipende il tipo di installazione che usi: Apigee la procedura guidata di provisioning non ti consente scegli una posizione per il keyring; sceglie la posizione per te. Se utilizzi la riga di comando, puoi scegliere la posizione del il keyring.

Chiave di crittografia del disco Passaggio 5: crea un'istanza di runtime Apigee (abbonamento)

Passaggio 3: configura l'hosting e la crittografia (pagamento a consumo)

Cripta i dati dell'istanza di runtime prima che siano scritti su disco.

I tipi di dati criptati includono il sistema di gestione delle chiavi (KMS). Legenda Mappe dei valori (KVM); definizioni di quota, bucket e contatori; e tutti memorizzati nella cache. I dati del KMS includono prodotti API, sviluppatori, sviluppatori app, 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 creando una nuova chiave, associa la località della chiave al runtime la posizione dell'istanza.

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 posizione della chiave di crittografia del database di runtime Apigee supporta tutti Località Cloud KMS che supportano Cloud HSM e Cloud EKM.
  • La località della chiave di crittografia del disco deve corrispondere a quella del 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. chiavi di crittografia del disco non può trovarsi nello stesso keyring della chiave di crittografia del database del runtime.
  • Le chiavi devono avere un purpose. Se usi la riga di comando generare le nuove chiavi, imposta purpose su encryption. Se utilizzi la console Google Cloud, scegli Simmetrico crittografare/decriptare a questo scopo.
  • Le chiavi sono definite da un percorso della chiave, che utilizza il seguente motivo:
    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é creare nuove chiavi durante setup.

Per elencare tutte le chiavi KMS in un keyring:

Esegui 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: posizione fisica del keyring, Ad esempio, us-west1.

In alternativa, puoi le tue 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 la console Google Cloud.

Ogni tipo di chiave deve avere il proprio keyring. Ad esempio, il disco le chiavi di crittografia possono essere archiviate in un keyring, ma il database la chiave di crittografia deve essere archiviata in un keyring separato.

I passaggi seguenti spiegano come creare un keyring e una chiave e come concedi l'accesso all'agente di servizio Apigee per l'utilizzo della nuova chiave. Crea i keyring e le chiavi per il piano di controllo (se utilizzi la residenza dei dati), il database runtime e il disco di runtime.

  1. Crea un nuovo keyring utilizzando Comando gcloud kms keyrings create:

    Piano di controllo

    Quando la residenza dei dati sia abilitata, crea un keyring per il controllo e un altro per la regione di dati dei consumatori.

    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 posizione della chiave di crittografia Apigee supporta tutte le risorse Cloud KMS località 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 posizione del in esecuzione in un'istanza Compute Engine. 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
  2. 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 gli stessi nomi dei keyring esistenti.

  3. Crea una chiave utilizzando Comando kms keys create:

    Piano di controllo

    Quando la residenza dei dati sia abilitata, crea un keyring per il controllo e un altro per la regione di dati dei consumatori.

    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.

  4. Concedi all'agente di servizio Apigee l'accesso per utilizzare la nuova chiave utilizzando Comando gcloud kms keys add-iam-policy-binding:

    Piano di controllo

    Quando la residenza dei dati sia abilitata, crea un keyring per il controllo e un altro per la regione di dati dei consumatori.

    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 questa richiesta, gcloud risponde con qualcosa di 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 nella l'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

Generazione di nuove chiavi mediante la console Google Cloud

Puoi generare nuove chiavi utilizzando la console, come descritto in Crea 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 Cloud KMS che supporta Cloud HSM e Cloud EKM. La UI non consente scegli qualsiasi altra posizione per la chiave, in modo che corrisponda a quella scelta nel keyring.
  • Dopo aver creato la chiave, recupera il percorso della chiave in Chiavi di crittografia. riquadro 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 il API Cloud KMS o Google Cloud CLI, devi utilizzare l'ID risorsa. Puoi recupera l'ID della chiave con Comando gcloud kms keys list:

Piano di controllo

Quando la residenza dei dati sia abilitata, è presente un keyring e un altro per la regione di dati dei consumatori.

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 le informazioni, vedi Recupero di un Cloud KMS l'ID risorsa.