Registrazione Sistema
La registrazione è il processo mediante il quale un sistema si autentica per la prima volta presso la piattaforma My e ottiene le credenziali permanenti per l'invio di dati.
Panoramica
La registrazione è un passaggio obbligatorio dopo la creazione del sistema. Senza registrazione, il sistema non può inviare dati di inventario o heartbeat.
Flusso di Registrazione
Comprendere le Credenziali
system_secret (Creato alla Creazione Sistema)
Formato: my_<parte_pubblica>.<parte_secret>
Esempio: my_a1b2c3d4e5f6g7h8i9j0.k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0
Componenti:
- Prefisso:
my_(identifica il tipo di token) - Parte pubblica: 20 caratteri esadecimali (per ricerca nel database)
- Separatore:
.(punto) - Parte secret: 40 caratteri esadecimali (hash con SHA256)
Caratteristiche:
- Generato automaticamente dalla piattaforma
- Mostrato una sola volta al momento della creazione
- Non può essere recuperato successivamente (la rigenerazione ne crea uno nuovo)
- Usato come password nell'autenticazione HTTP Basic durante la prima richiesta
- Viene hashed con SHA256 e memorizzato nel database
system_key (Ricevuto alla Registrazione)
Formato: NOC-<stringa_casuale>
Esempio: NOC-F64B-A989-C9E7-45B9-A55D-59EC-6545-40EE
Caratteristiche:
- Generato dalla piattaforma dopo la prima autenticazione riuscita
- Nascosto fino alla registrazione del sistema
- Visibile dopo registrazione riuscita
- Usato come username per HTTP Basic Auth
- Non cambia mai (anche se il secret viene rigenerato)
- Rimane invariato per tutta la vita del sistema
Processo di Registrazione
Passo 1: Creazione del Sistema
Un amministratore crea il sistema dalla piattaforma My e riceve il system_secret.
Passo 2: Configurazione sul Sistema
Il system_secret viene configurato sul sistema. Il metodo dipende dal tipo di sistema:
- NethServer: Configurazione tramite interfaccia di gestione
- NethSecurity: Configurazione tramite interfaccia web
Passo 3: Prima Richiesta
Il sistema invia la prima richiesta HTTP con autenticazione Basic:
# Autenticazione con system_secret (prima registrazione)
curl -X POST \
-u "system_secret:YOUR_SYSTEM_SECRET" \
-H "Content-Type: application/json" \
-d '{"inventory": {...}}' \
https://my.nethesis.it/api/systems/inventory
Passo 4: Validazione della Piattaforma
La piattaforma esegue diversi controlli di sicurezza:
-
Validazione Formato Token:
- Divide su
.- deve avere esattamente 2 parti - La prima parte deve iniziare con
my_ - Estrae parti pubblica e secret
- Divide su
-
Ricerca Database:
- Trova il sistema usando la parte pubblica
- Query indicizzata veloce su
system_secret_public
-
Controlli di Sicurezza:
- Il sistema non è eliminato
- Il sistema non è già registrato
- La parte pubblica corrisponde al valore memorizzato
-
Verifica Crittografica:
- Verifica la parte secret contro l'hash SHA256
- Confronto a tempo costante (previene attacchi timing)
Passo 5: Ricezione del system_key
Se l'autenticazione ha successo, la piattaforma restituisce il system_key:
{
"code": 200,
"message": "inventory received successfully",
"data": {
"system_key": "abc123def456"
}
}
Passo 5: Salvataggio system_key
Il sistema salva il system_key per le comunicazioni future.
Passo 6: Comunicazioni Successive
Tutte le richieste successive usano il system_key come username:
# Autenticazione con system_key (richieste successive)
curl -X POST \
-u "SYSTEM_KEY:YOUR_SYSTEM_SECRET" \
-H "Content-Type: application/json" \
-d '{"inventory": {...}}' \
https://my.nethesis.it/api/systems/inventory
Risposte di Errore
Formato Token Non Valido (HTTP 400)
{
"code": 400,
"message": "formato system secret non valido",
"data": null
}
Cause:
- Il token non contiene il separatore
. - Il token non inizia con
my_ - Il token è malformato
Soluzione:
- Verifica che il secret sia stato copiato correttamente
- Controlla spazi extra o interruzioni di riga
- Assicurati che sia fornito il token completo
Credenziali Non Valide (HTTP 401)
{
"code": 401,
"message": "system secret non valido",
"data": null
}
Cause:
- Parte pubblica non trovata nel database
- Parte secret non corrisponde all'hash
- Secret sbagliato fornito
Soluzione:
- Verifica che il secret sia corretto
- Controlla se il secret è stato rigenerato
- Assicurati che il sistema sia stato creato nella piattaforma My
Sistema Eliminato (HTTP 403)
{
"code": 403,
"message": "il sistema è stato eliminato",
"data": null
}
Cause:
- Il sistema è stato eliminato in modo soft dall'amministratore
- Sistema contrassegnato come eliminato nel database
Soluzione:
- Contatta l'amministratore per ripristinare il sistema
- Crea un nuovo sistema se necessario
Già Registrato (HTTP 409)
{
"code": 409,
"message": "il sistema è già registrato",
"data": null
}
Cause:
- Il sistema ha già completato la registrazione
- Il campo
registered_atnon è null
Soluzione:
- Il sistema è già registrato, procedi con l'autenticazione
- Usa
system_keyesystem_secretesistenti per l'autenticazione - Nessuna azione necessaria a meno che non sia richiesta una ri-registrazione
Dopo la Registrazione
Una volta registrato, il sistema può:
- Inviare heartbeat periodici per segnalare il proprio stato
- Inviare inventario con i dati di configurazione
- Ricevere aggiornamenti di stato dalla piattaforma
Per maggiori dettagli, consulta la pagina Inventario e Heartbeat.
Ri-Registrazione
In alcuni casi potrebbe essere necessario ri-registrare un sistema:
- Il system_secret è stato rigenerato
- Il sistema è stato ripristinato da un backup
- Le credenziali locali sono state perse o corrotte
Per ri-registrare:
- Rigenera il secret dalla pagina di dettaglio del sistema nella piattaforma
- Aggiorna la configurazione sul sistema con il nuovo secret
- Riavvia il servizio di comunicazione sul sistema
La rigenerazione del secret invalida le credenziali precedenti. Il sistema non potrà più comunicare con la piattaforma fino al completamento della ri-registrazione.
Sicurezza
Protezione delle Credenziali
- Il system_secret è hashed con SHA256 nel database
- Le comunicazioni avvengono esclusivamente tramite HTTPS
- L'autenticazione HTTP Basic è protetta dal canale TLS
- Le credenziali non valide generano un errore 401 senza fornire dettagli sul motivo del fallimento
Cache delle Credenziali
Per migliorare le prestazioni, le credenziali verificate vengono memorizzate in cache:
- Cache in-process per accesso rapido
- Cache Redis per condivisione tra istanze
- TTL configurabile per invalidazione automatica
Risoluzione Problemi
La Registrazione Fallisce con Errore 401
- Verifica che il system_secret sia corretto e non sia scaduto
- Controlla che il system_secret non sia stato rigenerato
- Verifica che il formato dell'autenticazione HTTP Basic sia corretto
- Controlla che la richiesta sia inviata tramite HTTPS
Il Sistema Non Riceve il system_key
- Verifica che la risposta HTTP sia stata elaborata correttamente
- Controlla i log del sistema per errori di parsing
- Verifica la connettività di rete
Credenziali Perse
Se le credenziali del sistema sono state perse:
- Rigenera il secret dalla piattaforma
- Riconfigura il sistema con il nuovo secret
- Effettua nuovamente la registrazione
Argomenti Avanzati
Script di Registrazione Automatizzata
Per deployment automatizzati, la registrazione può essere scriptata:
#!/bin/bash
PLATFORM_URL="https://my.nethesis.it"
SYSTEM_SECRET="my_a1b2c3d4e5f6g7h8i9j0.k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0"
# Registra ed estrai system_key
response=$(curl -s -X POST "$PLATFORM_URL/api/systems/register" \
-H "Content-Type: application/json" \
-d "{\"system_secret\": \"$SYSTEM_SECRET\"}")
system_key=$(echo "$response" | jq -r '.data.system_key')
if [ "$system_key" != "null" ] && [ -n "$system_key" ]; then
echo "Registrazione riuscita!"
echo "system_key: $system_key"
# Memorizza credenziali
echo "MY_SYSTEM_KEY=$system_key" >> /etc/my/config.conf
echo "MY_SYSTEM_SECRET=$SYSTEM_SECRET" >> /etc/my/config.conf
# Avvia servizio inventario/heartbeat
systemctl start my-agent
else
echo "Registrazione fallita!"
echo "$response"
exit 1
fi
Adatta lo script in base al tipo di sistema e alla struttura dei dati di inventario. Consulta la documentazione del tuo sistema per i dettagli sulla raccolta dei dati di inventario.
Registrazioni Multiple
Domanda: Cosa succede se registro lo stesso sistema più volte?
Risposta: Il secondo e successivi tentativi di registrazione falliranno con HTTP 409 (già registrato). Questo è per design per prevenire ri-registrazione accidentale.
Annullare Registrazione
Domanda: Come annullo la registrazione di un sistema?
Risposta: Non esiste un'operazione "annulla registrazione". Per resettare:
- Elimina il sistema (eliminazione soft)
- Ripristina il sistema
- Il sistema rimane registrato con lo stesso
system_key - Rigenera secret se necessario
Oppure:
- Elimina sistema (eliminazione soft)
- Elimina permanentemente sistema
- Crea nuovo sistema (nuove credenziali, nuova registrazione)