Configura mTLS Apigee

Edge for Private Cloud v4.19.01

Dopo aver installato il componente apigee-mtls su ogni nodo del cluster, devi configurarlo e inizializarlo. A tale scopo, genera una coppia di certificati/chiavi e aggiorna il file di configurazione sulla macchina di amministrazione. Poi esegui il deployment degli stessi file generati su tutti i nodi del cluster e inizializza il componenteapigee-mtls locale.

Configura apigee-mtls (dopo l'installazione iniziale)

Questa sezione descrive come configurare mTLS di Apigee per un singolo data center subito dopo la prima installazione. Per informazioni su come eseguire aggiornamenti a un'installazione esistente di Apigee mTLS, consulta Modificare una configurazione apigee-mtls esistente. Per informazioni sulla configurazione di più data center, consulta Configurare più data center per mTLS di Apigee.

Di seguito è riportata la procedura generale per la configurazione apigee-mtls:

  1. Aggiorna il file di configurazione: sulla macchina di amministrazione, aggiorna il file di configurazione in modo da includere le impostazioni apigee-mtls.
  2. Installa Consul e genera le credenziali: installa Consul e utilizzalo per generare le credenziali TLS (una sola volta).

    Inoltre, modifica il file di configurazione mTLS di Apigee per:

    1. Aggiungi le informazioni sulle credenziali
    2. Definisci la topologia del cluster

    Tieni presente che puoi utilizzare le credenziali esistenti o generarle con Consul.

  3. Distribuisci il file di configurazione e le credenziali: Distribuisci la stessa coppia di certificati/chiavi generata e il file di configurazione aggiornato a tutti i nodi del cluster.
  4. Esegui l'inizializzazione di apigee-mtls: inizializza il componente apigee-mtls su ogni nodo.

Ogni passaggio è descritto nelle sezioni seguenti.

Passaggio 1: aggiorna il file di configurazione

Questa sezione descrive come modificare il file di configurazione per includere le proprietà di configurazione mTLS. Per informazioni più generali sul file di configurazione, consulta la pagina sulla creazione di un file di configurazione.

Dopo aver aggiornato il file di configurazione con le proprietà relative a mTLS, copialo su tutti i nodi del cluster prima di inizializzare il componente apigee-mtls su questi nodi.

I comandi che fanno riferimento al file di configurazione utilizzano "config_file" per indicare che la sua posizione è variabile, a seconda di dove lo memorizzi su ciascun nodo.

Per aggiornare il file di configurazione:

  1. Apri il file di configurazione sulla macchina di amministrazione.
  2. Copia il seguente insieme di proprietà di configurazione mTLS e incollale nel file di configurazione:
    ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER"
    ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS"
    CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS"
    PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS"
    RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS"
    MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS"
    MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS"
    QP_MTLS_HOSTS="QPID_PRIVATE_IPS"
    LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS"
    MTLS_ENCAPSULATE_LDAP="y"
    
    ENABLE_SIDECAR_PROXY="y"
    ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE"
    PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem"
    PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem"
    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS"

    Imposta il valore di ogni proprietà in modo che sia in linea con la tua configurazione.

    La seguente tabella descrive queste proprietà di configurazione:

    Proprietà Descrizione
    ALL_IP Un elenco separato da spazi degli indirizzi IP host privati di tutti i nodi del cluster.

    L'ordine degli indirizzi IP non è importante, tranne per il fatto che deve essere lo stesso in tutti i file di configurazione del cluster.

    Se configuri mTLS di Apigee per più data center, elenca tutti gli indirizzi IP di tutti gli host in tutte le regioni.

    LDAP_MTLS_HOSTS L'indirizzo IP privato dell'host del nodo OpenLDAP nel cluster.
    ZK_MTLS_HOSTS

    Un elenco separato da spazi di indirizzi IP host privati su cui sono ospitati i nodi ZooKeeper nel cluster.

    Tieni presente che, in base ai requisiti, devono essere presenti almeno tre nodi ZooKeeper.

    CASS_MTLS_HOSTS Un elenco separato da spazi di indirizzi IP host privati su cui sono ospitati i server Cassandra nel cluster.
    PG_MTLS_HOSTS Un elenco separato da spazi di indirizzi IP host privati su cui sono ospitati i server Postgres nel cluster.
    RT_MTLS_HOSTS Un elenco separato da spazi di indirizzi IP host privati su cui sono ospitati i router nel cluster.
    MTLS_ENCAPSULATE_LDAP Cripta il traffico LDAP tra il Message Processor e il server LDAP. Imposta su y.
    MS_MTLS_HOSTS Un elenco separato da spazi di indirizzi IP host privati su cui sono ospitati i nodi del server di gestione nel cluster.
    MP_MTLS_HOSTS Un elenco separato da spazi di indirizzi IP host privati su cui sono ospitati gli elaboratori di messaggi nel cluster.
    QP_MTLS_HOSTS Un elenco separato da spazi di indirizzi IP host privati su cui sono ospitati i server Qpid nel cluster.
    ENABLE_SIDECAR_PROXY Determina se Cassandra e Postgres devono essere a conoscenza del service mesh.

    Devi impostare questo valore su "y".

    ENCRYPT_DATA La chiave di crittografia con codifica Base64 utilizzata da Consul . Hai generato questa chiave utilizzando il comando consul keygen nel Passaggio 2: installa Consul e genera le credenziali.

    Questo valore deve essere lo stesso su tutti i nodi del cluster.

    PATH_TO_CA_CERT La posizione del file del certificato sul nodo. Questo file è stato generato nel passaggio 2: installa Consul e genera le credenziali.

    Questa posizione deve essere la stessa su tutti i nodi del cluster in modo che i file di configurazione siano gli stessi.

    Il certificato deve essere codificato X509v3.

    PATH_TO_CA_KEY La posizione del file della chiave sul nodo. Questo file è stato generato nel passaggio 2: installa Consul e genera le credenziali.

    Questa posizione deve essere la stessa su tutti i nodi del cluster in modo che i file di configurazione siano gli stessi.

    Il file della chiave deve essere codificato X509v3.

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

    Il numero di giorni di validità di un certificato quando generi un certificato personalizzato.

    Il valore predefinito è 365. Il valore massimo è 7865 giorni (5 anni).

    Oltre alle proprietà elencate sopra, Apigee mTLS utilizza diverse proprietà aggiuntive quando lo installi in una configurazione di più data center. Per ulteriori informazioni, consulta Configurare più data center.

  3. Assicurati che la proprietà ENABLE_SIDECAR_PROXY sia impostata su "y".
  4. Aggiorna gli indirizzi IP nelle proprietà relative all'host. Assicurati di utilizzare gli indirizzi IP privati quando fai riferimento a ciascun nodo, non gli indirizzi IP pubblici.

    Nei passaggi successivi, imposterai i valori di altre proprietà come ENCRYPT_DATA, PATH_TO_CA_CERT e PATH_TO_CA_KEY. Non hai ancora impostato i relativi valori.

    Quando modifichi le proprietà di configurazione di apigee-mtls, tieni presente quanto segue:

    • Tutte le proprietà sono stringhe; devi racchiudere i valori di tutte le proprietà tra virgolette singole o doppie.
    • Se un valore relativo all'host ha più di un indirizzo IP privato, separa ciascun indirizzo IP con uno spazio.
    • Utilizza indirizzi IP privati e non nomi host o indirizzi IP pubblici per tutte le proprietà relative all'host nel file di configurazione.
    • L'ordine degli indirizzi IP in un valore della proprietà deve essere lo stesso in tutti i file di configurazione del cluster.
  5. Salva le modifiche nel file di configurazione.

Passaggio 2: installa Consul e genera le credenziali

Questa sezione descrive come installare Consul e generare le credenziali.

Devi scegliere uno dei seguenti metodi per generare le credenziali:

  • Crea la tua CA utilizzando Consul, come descritto in questa sezione (opzione consigliata)
  • Utilizzare le credenziali di una CA esistente con mTLS di Apigee (avanzato)

Informazioni sulle credenziali

Le credenziali sono costituite da quanto segue:

  • Certificato:il certificato TLS ospitato su ogni nodo
  • Chiave: la chiave pubblica TLS ospitata su ogni nodo
  • Messaggio di gossip: una chiave di crittografia con codifica Base64

Genera una singola versione di ciascuno di questi file una sola volta. Copia i file della chiave e del certificato su tutti i nodi del cluster e aggiungi la chiave di crittografia al file di configurazione che copi anche su tutti i nodi.

Per ulteriori informazioni sull'implementazione della crittografia di Consul, consulta quanto segue:

Installa Consul e genera le credenziali

Utilizzi un file binario Consul locale per generare le credenziali utilizzate da Apigee mTLS per autenticare le comunicazioni sicure tra i nodi del cluster Private Cloud. Di conseguenza, devi installare Consul sulla tua macchina di amministrazione prima di poter generare le credenziali.

Per installare Consul e generare le credenziali mTLS:

  1. Sul computer di amministrazione, scarica il file binario di Consul 1.6.2 dal sito web di HashiCorp.
  2. Estrai i contenuti del file dell'archivio scaricato. Ad esempio, estrai i contenuti in /opt/consul/.
  3. Sulla macchina di amministrazione, crea una nuova autorità di certificazione (CA) eseguendo il seguente comando:
    /opt/consul/consul tls ca create

    Consul crea i seguenti file, che sono una coppia di certificati/chiavi:

    • consul-agent-ca.pem (certificato)
    • consul-agent-ca-key.pem (chiave)

    Per impostazione predefinita, i file del certificato e della chiave sono codificati X509v3.

    Successivamente, copierai questi file in tutti i nodi del cluster. Al momento, però, devi solo decidere dove posizionare questi file sui nodi. Devono trovarsi nella stessa posizione su ogni nodo. Ad esempio, /opt/apigee/.

  4. Nel file di configurazione, imposta il valore di PATH_TO_CA_CERT sulla posizione in cui copierai il file consul-agent-ca.pem sul nodo. Ad esempio:
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. Imposta il valore di PATH_TO_CA_KEY sulla posizione in cui copierai il file consul-agent-ca-key.pem sul nodo. Ad esempio:
    PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
  6. Crea una chiave di crittografia per Consul eseguendo il seguente comando:
    /opt/consul/consul keygen

    Consul restituisce una stringa casuale simile alla seguente:

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. Copia la stringa e impostala come valore della proprietà ENCRYPT_DATA nel file di configurazione. Ad esempio:
    ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
  8. Salva il file di configurazione.

L'esempio seguente mostra le impostazioni relative a mTLS in un file di configurazione (con valori di esempio):

...
IP1=10.126.0.121
IP2=10.126.0.124
IP3=10.126.0.125
IP4=10.126.0.127
IP5=10.126.0.130
ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5"
LDAP_MTLS_HOSTS="$IP3"
ZK_MTLS_HOSTS="$IP3 $IP4 $IP5"
CASS_MTLS_HOSTS="$IP3 $IP4 $IP5"
PG_MTLS_HOSTS="$IP2 $IP1"
RT_MTLS_HOSTS="$IP4 $IP5"
MS_MTLS_HOSTS="$IP3"
MP_MTLS_HOSTS="$IP4 $IP5"
QP_MTLS_HOSTS="$IP2 $IP1"
ENABLE_SIDECAR_PROXY="y"
ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
...

Passaggio 3: distribuisci il file di configurazione e le credenziali

Copia i seguenti file nei nodi che eseguono ZooKeeper utilizzando uno strumento come scp:

  • File di configurazione: copia la versione aggiornata di questo file e sostituisci la versione esistente su tutti i nodi (non solo su quelli su cui è in esecuzione ZooKeeper).
  • consul-agent-ca.pem: copia nella posizione specificata come valore di PATH_TO_CA_CERT nel file di configurazione.
  • consul-agent-ca-key.pem: copia nella posizione specificata come valore di PATH_TO_CA_KEY nel file di configurazione.

Assicurati che le posizioni in cui copi i file del certificato e della chiave corrispondano ai valori impostati nel file di configurazione nel Passaggio 2: installa Consul e genera le credenziali.

Passaggio 4: inizializza apigee-mtls

Dopo aver aggiornato il file di configurazione, averlo copiato insieme alle credenziali su tutti i nodi del cluster e aver installato apigee-mtls su ogni nodo, puoi inizializzare il componente apigee-mtls su ogni nodo.

Per inizializzare apigee-mtls:

  1. Accedi a un nodo del cluster come utente root. Puoi eseguire questi passaggi sui nodi in qualsiasi ordine.
  2. Rendi l'utente apigee:apigee proprietario del file di configurazione aggiornato, come mostrato nell'esempio seguente:
    chown apigee:apigee config_file
  3. Configura il componente apigee-mtls eseguendo il seguente comando:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
  4. (Facoltativo) Esegui il seguente comando per verificare che la configurazione sia andata a buon fine:
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. Avvia mTLS di Apigee eseguendo il seguente comando:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

    Dopo aver installato Apigee mTLS, devi avviare questo componente prima di qualsiasi altro componente sul nodo.

  6. (Solo nodi Cassandra) Cassandra richiede argomenti aggiuntivi per funzionare all'interno della rete di sicurezza. Di conseguenza, devi eseguire i seguenti comandi su ogni nodo Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. (Solo nodi Postgres) Postgres richiede argomenti aggiuntivi per funzionare all'interno della maglia di sicurezza. Di conseguenza, devi eseguire i seguenti passaggi sui nodi Postgres:

    (Solo master)

    1. Esegui i seguenti comandi sul nodo master Postgres:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    (Solo in modalità standby)

    1. Esegui il backup dei dati Postgres esistenti. Per installare Apigee mTLS, devi inizializzare nuovamente i node master/standby, quindi si verificherà una perdita di dati. Per ulteriori informazioni, consulta Configurare la replica master/standby per Postgres.
    2. Elimina tutti i dati di Postgres:
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. Configura Postgres e riavvialo, come mostrato nell'esempio seguente:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    Se esegui l'installazione in una topologia di più data center, utilizza un percorso assoluto per il file di configurazione.

  8. Avvia i restanti componenti Apigee sul nodo nell'ordine di avvio, come mostrato nell'esempio seguente:
    /opt/apigee/apigee-service/bin/apigee-service component_name start
  9. Ripeti questa procedura per ogni nodo del cluster.
  10. (Facoltativo) Verifica che l'apigee-mtls inizializzazione sia andata a buon fine utilizzando uno o più dei seguenti metodi:
    1. Convalida la configurazione di iptables
    2. Verificare lo stato del proxy remoto
    3. Verificare lo stato del quorum

    Ciascuno di questi metodi è descritto in Verificare la configurazione.

Modificare una configurazione apigee-mtls esistente

Per personalizzare una configurazione apigee-mtls esistente, devi disinstallare e reinstallare apigee-mtls.

Per ripetere questo punto, quando modifichi una configurazione mTLS di Apigee esistente:

  • Se modifichi un file di configurazione, devi prima disinstallare apigee-mtls e eseguire nuovamente setup o configure:
    # DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
    
    # BEFORE YOU DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
    OR
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
  • Devi disinstallare ed eseguire di nuovo setup o configure su tutti i nodi del cluster, non solo su un singolo nodo.