Securing Web Services
Pierre Greborio
PEWay
Software Architect MVP
http://blogs.ugidotnet.org/pierregreborio
Web services
• Definizione: “A web service is a
collection of protocols and standards
used for exchanging data between
applications.”
• In pratica: è un modo di far comunicare
due o più nodi (endpoints) in modo
standard e quindi indipendente dalla
tecnologia
Sicurezza
• Pensare alla sicurezza da subito !
• Il livello di sicurezza deve essere
commisurato al valore che deve essere
difeso, es:
• Per la Ferrari ci vuole l’antifurto satellitare
• Per la Duna lasciate pure le chiavi dentro
• Ci sono liberie che si occupano di
questo (es. WSE)
WS-Security
• Un insieme di standard che estendono
SOAP e possono essere usati per
rendere sicuri i web services
• http://www.oasis-open.org
• Fra i membri Microsoft, IBM, Sun, BEA,
RSA, Tibco, Oracle, U.S. Navy
Web Services Enhancement
• E’ una libreria che implementa molte
specifiche WSS
•
•
•
•
•
•
•
•
WS-Security
WS-Policy
WS-SecureConversation
WS-Trust
WS-SecurityPolicy
WS-Addressing
WS-Attachments
...
http://www.microsoft.com/downloads/details.aspx?FamilyId=1BA1F631-C3E7-420A-BC1E-EF18BAB66122&displaylang=en
Sicurezza per punti
• Authentication (ti dico chi sono ?)
• Authorization (dimmi che posso fare ?)
• Integrity (certifico che nessuno ha cambiato
le informazioni che ci scambiamo)
• Confidentiality (non voglio che occhi indiscreti
vedano quello che ci diciamo)
• Auditing e logging (verifico quello che fai)
Authentication
• Transport protocol dependent
• L’identità del chiamante viaggia a livello di
protocollo (es. HTTP)
• Trasport protocol independent
• Creo una custom SOAP Header contenente
le credenziali del chiamante
• WSE
Authentication
Integrity
• Certifica che il messaggio SOAP non è
stato modificato
• In pratica, si applica la firma digitale al
messaggio
• Andrebbe sempre usata con
l’autenticazione
Integrity
Authorization
• E’ l’abilitazione o meno di un utente ad
accedere alle risorse
• WSE fornisce due tecniche
• Programmatica
If(token.Principal.IsInRole(“Manager”))
{
//...
}
• Definendo la policy
Authorization
Confidentiality
• Non si vuole che il messaggio (o parte
di esso) sia leggibile (in chiaro)
• In pratica: si crittografa il messaggio
Confidentiality
Auditing e logging
• Non si può sapere se un servizio o una
policy è stata violata se non si monitora
le attività
• Ci sono fondamentalmente tre modi:
• Ad ogni web method faccio il tracing
• Creo una Soap Extension
• Creo un input filter
Auditing e logging
Punti di riferimento
• http://msdn.microsoft.com/webservices
/building/wse/default.aspx
• http://www.wsefaq.com/
• http://www.opennetcf.org
Scarica

Securing Web Services