In uno scenario del genere ... non sarebbe bello pensare che, a prescindere dalla tipologia di risorsa (un web server, una scheda di rete, i contatori di sistema, una risorsa gestibile via WMI, ecc.), dalla numerosità e tipologia del gruppo di risorse e dalla tipologia di server/servizio sia possibile gestire tutte queste risorse usando un unico protocollo di comunicazione, basato su messaggi SOAP?
In questo modo potremmo ottenere la possibilità di gestire con una console "tutto-fare" le N risorse di una rete e, perchè no, di un'intera azienda (pensiamo anche al fotocopiatore, al rilevatore di accessi/presenze in azienda, ecc.).
Ok se l'idea in sé sembra ambiziosa, non è però così impossibile da realizzare, infatti alcune aziende (Sun, Microsoft, WBEM Solutions, BMC Software, Intel, AMD, Dell) ci hanno già pensato e hanno prodotto: Web Services for Management.
Si tratta di uno schema di protocollo, basato su messaggi SOAP, qualificati con un ben preciso Namespace XML:
http://schemas.xmlsoap.org/ws/2005/02/management
La specifica utilizza alcuni SOAP Header proprietari e altri "adottati" da specifiche pre-esistenti, come WS-Addressing per instradare i messaggi e dichiarare per esempio il destinatario (To), il contesto di dialogo (MessageID e RelatesTo), a chi rispondere (ReplyTo) e a chi inviare eventuali errori (FaultTo), oltre ovviamente all'oggetto del messaggio SOAP (Action).
Le operazioni codificate da WS-Management, con le relative action (come da specifica) sono:
- Get e GetResponse
- Put e PutResponse
- Create e CreateResponse
- Delete e DeleteResponse
- Rename e RenameResponse
- Enumerate ed EnumerateResponse
- Pull e PullResponse
- Renew e RenewResponse
- GetStatus e GetStatusResponse
- Release e ReleaseResponse
- EnumerationEnd
- Subscribe e SubscribeResponse
- Renew e RenewResponse
- GetStatus e GetStatusResponse
- Unsubscribe e UnsubscribeResponse
- SubscriptionEnd
- Events
- Heartbeat
- DroppedEvents
- Ack
- Event
I nomi di queste operazioni sono decisamente "parlanti" e consentono di costruire dialoghi o comunicazioni tra un client e un servizio che espone le risorse di un sistema, per monitorarne lo stato, per leggerne, scriverne o modificarne delle informazioni, per abbonarsi a degli eventi di notifica, eventualmente resi sequenziali dalla possibilità di inviare un Ack di conferma ricezione, prima dell'invio di eventuali ulteriori eventi.
La specifica prevede inoltre la possibilità di inviare (tramite il SOAP Header Options) una serie di parametri (options) al sistema, per argomentare l'oggetto della richiesta inviatagli.
A questo punto pensiamo alla possibilità di richiedere a un server, tramite messaggi SOAP, di enumerarci (Enumerate) i suoi dischi, quindi di chiedere quanto spazio libero vi è su ciascuno dei dischi (Get e/o GetStatus) e quindi di creare un software che dal palmare, piuttosto che dalla nostra postazione di lavoro fissa, o dal PC di casa ci consente di monitorare queste informazioni. Bello no?! :-)
La specifica di WS-Management, al fine di non reinventare la ruota, riutilizza per tutti questi scopi alcune specifiche WSA (Web Services Architecture) già esistenti come: WS-Eventing, WS-Transfer, WS-Enumeration. Inoltre in un documento allegato alla specifica di WS-Management viene descritto WS-ManagementCatalog, pensato per sfogliare le risorse e i sistemi esposti da un servizio, in modo tale da poter interrogare dinamicamente un
device o un server, in merito a ciò che può dirci o fornirci tramite WS-Management.
E la sicurezza? Non staremo mica aprendo nuove porte agli hacker?! Che poi da quando avremo questi servizi a disposizione potranno crearsi anche loro delle console di hacking :-) via SOAP, stando comodamente a casa e comandando tutte le nostre risorse aziendali tramite WS-Management? :-)
Beh sarebbe uno scenario un po' da film, ma di solito i film di fantascienza sono solo preludio della realtà futura .....
WS-Management segnala il fatto che la sicurezza di HTTP (se si può definire sicuro) e di HTTPS (che è indubbiamente più sicuro di HTTP) sono generalmente supportati o facilmente supportabili da molte risorse e device. In ogni caso una delle regole fondamentali che WS-Management enuncia suona così:
R9.3-3: A conformant service MUST NOT expose WS-Management over a completely unauthenticated HTTP channel.
Quindi è come dire: "se esponsi un servizio e le sue risorse via WS-Management e non le proteggi adeguatamente, sei tu il problema :-) e non la specifica!"
Alternativamente ad HTTP/HTTPS si avanza la possibilità di utilizzare altri protocolli di trasporto che eventualmente offrano una loro infrastruttura di sicurezza. Mi dispiace un poco vedere che nella specifica sono scarsamente considerate altre specifiche come WS-Security e WS-SecureConversation, relegate solo a delle reference in fondo al documento di specifica, come per dire: "sì sappiamo che ci sono, se volete usarle fate pure, ma in questo documento non vogliamo occuparcene più di tanto". Anzi pare che alcuni pezzi della specifica (in particolare l'ultima parte della sezione 9) tentino di proporre un sistema di autenticazione e referencig di token di autenticazione "fatto in casa".
D'altra parte è anche vero che comunque si lascia la porta aperta ad altri sistemi/infrastrutture di sicurezza, dicendo che eventualmente per tali alternative sarà necessario uno scambio di metainformazioni (WS-MetadataExchange) tra i nodi, al fine di concordare una politica di azione.
Ora si tratta di vedere come reagirà il mercato. Microsoft, tramite Steve Ballmer, ha annunciato che con Windows 2003 R2 avremo la possibilità di raggiungere via WS-Management parte di ciò che oggi gestiamo via WMI. Inoltre è già stato mostrato anche con delle demo pubbliche che Microsoft Operations Manager gestirà le risorse via WS-Management, quindi in tal modo potremo gestire da MOM anche server Linux/Unix, risorse di rete, ecc. Il fatto che Sun, Dell, Intel e AMD siano della partita fa pensare a un futuro roseo per questa nuova specifica.
Ecco un po' di link per approfondire il discorso:
http://www.microsoft.com/presspass/press/2004/oct04/10-08WSSpecificationPR.asp
http://www.intel.com/technology/manage/
http://msdn.microsoft.com/ws/2004/10/ws-management
http://www.amd.com/webservices
http://www.dell.com/standards