>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Go

Come bloccare l'accesso diretto alla produzione senza impazzire

Distribuire le chiavi SSH agli ingegneri spesso si trasforma in caos. Qualcuno si licenzia, ma la sua chiave pubblica rimane su decine di server di produzione. Qualcuno esegue accidentalmente un comando pericoloso nel terminale sbagliato, e poi passi mezza giornata nei log di sistema per capire di chi era la sessione.

Con la crescita del numero di server e l'espansione del team, le connessioni dirette alle macchine diventano un incubo. Di solito a questo punto le aziende guardano al concetto delle 4A: autenticazione, autorizzazione, accounting e auditing. Tuttavia, distribuire soluzioni pesanti come Teleport o CyberArk richiede tempo e risorse significative.

Recentemente mi sono imbattuto in un progetto chiamato OneTerm su GitHub. È un gateway di accesso open-source leggero scritto in Go e Vue.js. Risolve il problema dell'accesso centralizzato ai server senza configurazioni complesse.

Cosa c'è dentro OneTerm

Il principio è semplice: OneTerm diventa uno strato tra i dipendenti e l'infrastruttura di produzione. Gli sviluppatori non si connettono agli host direttamente tramite SSH o RDP. Accedono al dashboard web di OneTerm e da lì avviano la sessione richiesta.

Il progetto copre le esigenze di sicurezza di base:

  • Punto di accesso unico con supporto per l'autenticazione a due fattori.
  • Assegnazione di permessi per server specifici e gruppi di utenti.
  • Registrazione video e testuale per ogni sessione. Se qualcosa si rompe su un server, l'operazione può essere riprodotta nel player integrato per esaminare i dettagli.
  • Isolamento delle sessioni per impedire che gli utenti interferiscano tra loro e per prevenire l'escalation dei privilegi all'interno del gateway.
  • Protezione degli host interni dall'accesso diretto da internet esterna.

Oltre a SSH standard, OneTerm supporta i protocolli RDP e VNC. Questo è utile per chi ha server Windows o macchine virtuali con interfacce grafiche in esecuzione nella propria infrastruttura.

Stack tecnico e integrazioni

Lo stack del progetto è piuttosto familiare. Il backend è scritto in Go, e l'interfaccia utente è costruita con Vue.js usando la libreria Ant Design Vue. La build in Go offre un basso consumo di memoria e prestazioni veloci del terminale web.

Gli sviluppatori hanno aggiunto un'integrazione nativa con Veops CMDB. È un altro dei loro progetti open-source. Se la gestione delle attrezzature viene mantenuta nel loro CMDB, i server vengono importati nel bastion con un clic. Non c'è bisogno di inserire manualmente indirizzi IP, porte e credenziali.

Diamo un'occhiata all'interfaccia del sistema.

Il terminale funziona direttamente nella finestra del browser. Gli ingegneri non hanno bisogno di configurare client locali, impostare tunnel o memorizzare chiavi sui loro laptop.

I diritti di accesso sono segmentati in base al tempo e ai ruoli. Puoi concedere l'accesso a un server solo per il periodo di reperibilità o durante lavori tecnici.

Come distribuire e testare

Per un'introduzione locale, gli autori hanno preparato una configurazione Docker Compose. L'avvio richiede un paio di minuti:

git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
docker compose up -d

Dopo l'avvio dei container, l'interfaccia web si apre all'indirizzo http://127.0.0.1:8666. Il login predefinito è admin, e la password è 123456.

Per un ambiente di produzione, questa opzione non funzionerà. Per questo caso, gli sviluppatori hanno scritto uno script di setup interattivo ./setup.sh. Genera password casuali per il database e i servizi interni, aggiorna autonomamente le configurazioni e salva un backup.

git clone https://github.com/veops/oneterm.git
cd oneterm/deploy
./setup.sh
docker compose up -d

Se vuoi aggiungere le tue funzionalità personalizzate, il progetto ha script pronti per l'hot-reload del frontend e del backend: ./dev-start.sh frontend e ./dev-start.sh backend. Sono richieste la versione Node.js 14.17.6+ e Go 1.21.3+ per la compilazione.

Sfumature e limitazioni

Prima di portare lo strumento in un ambiente di produzione, dovresti considerare alcune specificità:

  • Il codice è distribuito sotto la licenza AGPL-3.0. Se decidi di realizzarne una soluzione SaaS commerciale chiusa, dovrai rendere aperte le tue modifiche.
  • Il branch main nel repository viene costantemente aggiornato e potrebbe funzionare in modo instabile. Per l'uso sui server, prendi solo le release compilate dalla pagina Releases.
  • La documentazione è ancora piuttosto breve. Gli sviluppatori rispondono nelle GitHub Issues, ma alcuni dettagli dovranno essere capiti direttamente dal codice sorgente.

Riepilogo

OneTerm è adatto per team operativi ridotti e amministratori di sistema che vogliono organizzare rapidamente la gestione degli accessi. Se hai bisogno di un semplice bastion host con registrazione delle sessioni, segmentazione degli accessi e supporto SSH e RDP, il progetto coprirà le attività di base senza complessità inutile.

Puoi provare l'interfaccia senza installazione sulla demo ufficiale oneterm.v1ops.com con login demo e password 123456.

Progetti correlati