progamma / cloud-connector

2 stars 2 forks source link

cloud-connector

Il Cloud Connector è uno strumento che permette di connettersi a uno o più database remoti da applicazioni sviluppate con Instant Developer Cloud.

Normalmente sono le applicazioni che si connettono al database ed è necessario aprire almeno una porta verso il mondo esterno sul database server.

Con il Cloud Connector installato sul server dove risiede il database, o in un server della stessa rete locale, è il database stesso ad aprire una connessione verso l'applicazione. Questo fa si che non occorra aprire specifiche porte verso l'esterno aumentando di molto la sicurezza.

Installazione

Per installare il Cloud Connector occorre eseguire le operazioni di seguito descritte:

Sicurezza

Per garantire una elevata gestione della sicurezza occorre prestare attenzione alla configurazione dei permessi concessi all'utente di accesso al database e di quelli concessi all'utente che avvia il servizio Cloud connector.

Utente di database

Per l'utente di database si consiglia di concedere solamente i privilegi di lettura, inserimento, aggiornamento e cancellazione dei dati sulle tabelle.
Di seguito una serie di buone pratiche per le autorizzazioni dell'utente di accesso al database:

Utente per i processi

Per concedere i privilegi necessari a un utente che deve eseguire un processo con PM2 su Node.js, dobbiamo considerare sia i permessi a livello di sistema operativo che quelli specifici per PM2 e Node.js.
Ecco una guida su come gestire questi privilegi:

Configurazione

La configurazione del Cloud Connector avviene mediante il file config.json che si trova nella directory public_html:

In questa sezione è riportata anche l'impostazione della chiave privata di criptaggio delle password utilizzate nei singoli datamodels che è recuperata da una variabile di ambiente del server nel quale è installato il Cloud Connector.
L'impostazione di default nel file di esempio della configurazione (config_example.json) è questa "passwordPrivateKey": "%CC_KEY%",
La variabile %CC_KEY% deve essere impostata da comando di sistema operativo; può anche essere utilizzato un nome diverso da quello indicato.
È importante scegliere una chiave privata robusta e non predicibile, generata in modo sicuro. Per approfondimenti: https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html#key-generation.

Se non viene definita questa variabile di ambiente il Cloud Connector utilizza un suo valore di default. Tuttavia si raccomanda di impostare sempre un valore personalizzato per la proprietà passwordPrivateKey, in quanto l'utilizzo del valore di default rende i dati cifrati più vulnerabili a potenziali attacchi.

Le password vengono criptate al primo avvio del Cloud Connector quindi occorre settare la variabile di ambiente %CC_KEY% prima di avviarlo.

Note

Attualmente Cloud Connector non supporta il caching_sha2_password come metodo di autenticazione su MySQL 8. Si consiglia invece di utilizzare il metodo di autenticazione legacy.

Nel file config.json tutte le APIKey sono impostate per default al valore 00000000-0000-0000-0000-000000000000 ed è importante modificarle con un guid effettivo in quanto il Cloud Connector se trova il valore impostato a tutti zero trasmette una stringa vuota e quindi la connessione non funziona nemmeno se nel database su di un porgetto nell'ide di Instant Developer Cloud impostato il valore 00000000-0000-0000-0000-000000000000 nella proprietà APIKey.
In questo caso nEl log del Cloud Connector viene inserito il messaggio The APIKey of dataModel '${this.name}' is set to the default value and will be ignored.

Installazione come servizio

Per installare il connettore cloud come servizio è possibile utilizzare pm2. PM2 è un gestore del processo di produzione per le applicazioni Node.js con un bilanciatore del carico integrato. Consente di mantenere in vita le applicazioni per sempre, di ricaricarle senza tempi di inattività e di facilitare le comuni attività di amministrazione del sistema.

Per eseguire il Cloud Connector con pm2 occorre utilizzare questo comando:

$ pm2 start cloudServer.js

Per salvare le informazioni sul processo da eseguire al riavvio, eseguire questo comando:

$ pm2 save

Per eseguire pm2 come servizio la procedura è diversa a seconda del tipo di server:

Controllo remoto

Per consentire la configurazione da remoto (riavvio, modifica di config.js, aggiornamento del software) occorre impostare il parametro remoteConfigurationKey nel config.json.

Guida

Per maggiori informazioni sul Cloud Connector è possibile leggere questa guida.