Seguridad en Web Services Por: Jorge Mario Calvo L. Junio/2010
Transcripción
Seguridad en Web Services Por: Jorge Mario Calvo L. Junio/2010
Seguridad en Web Services Por: Jorge Mario Calvo L. Por: Jorge Mario Calvo L. Junio/2010 Objetivo • Proveer Proveer una visión de los principales aspectos una visión de los principales aspectos de seguridad de los Web Services y cuales alternativas y estándares existen para alternativas y estándares existen para resolverlos • Mostrar algunos ejemplos prácticos a través Mostrar algunos ejemplos prácticos a través de un productos de Software Libre que implementa algunos de los estándares implementa algunos de los estándares Plan de la Charla Plan de la Charla • ¿Que es un Web Services? • Aspectos de seguridad a resolver A d id d l • Niveles donde podemos resolver el problema – Transporte – Mensajería – Aplicación • Otros Otros Estándares relacionados con la Estándares relacionados con la seguriada en XML y Web Services ¿Que es un Web Services? ¿Que es un Web Services? • A Web service is a software system designed to y g support interoperable machine‐to‐machine interaction over a network. It has an interface described in a machine‐processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its Web service in a manner prescribed by its description using SOAP‐messages, typically conveyed using HTTP with an XML serialization in conjunction using HTTP with an XML serialization in conjunction with other Web‐related standards. (www.w3c.org) ¿Que es un Web Services? ¿Que es un Web Services? • Una Una de las posibles interfaces de mensajeria de las posibles interfaces de mensajeria de un servicio, en una Arquitectura SOA • Mensajeria basada en XML Mensajeria basada en XML – SOAP – WSDL Operación de un Web Service Operación de un Web Service Service Broker WSDL WSDL SOAP Consumidor W b Service Web S i ESB Web Service Mensajería SOAP <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.... <SOAP-ENV:Body> SO : ody <SOAP-ENV:getOrderStatus> <body>US-247860</body> </SOAP-ENV:getOrderStatus> </SOAP-ENV:Body> / y </SOAP-ENV:Envelope> <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas..... // <SOAP-ENV:Body> <SOAP-ENV:getOrderStatusResponse> <body>Shipped</body> </SOAP-ENV:getOrderStatusResponse> / </SOAP-ENV:Body> </SOAP-ENV:Envelope> Request Response POST /temperApp/GetLocalTemperature HTTP/1.1 Host: www.ubiquando.com.co Content-type: text/xml Content-length: 543 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.... <SOAP-ENV:Body> y <SOAP-ENV:getOrderStatus> <body>US-247860</body> </SOAP-ENV:getOrderStatus> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Consumidor Web Service HTTP HTTP/1.1 200 OK Content-type: text/xml Content-length: 145 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas..... // <SOAP-ENV:Body> <SOAP-ENV:getOrderStatusResponse> <body>Shipped</body> </SOAP-ENV:getOrderStatusResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Service Mostrar un Web Service simple Aspectos de Seguridad Aspectos de Seguridad • Autenticación‐Identidad Autenticación Identidad – ¿Quién lo consume? • Autorización‐Control de Acceso Autorización Control de Acceso – ¿Qué esta autorizado a hacer el consumidor? • Confidencialidad fid i lid d • Integridad Nivel donde lo podemos resolver Nivel donde lo podemos resolver Aplicación Consumido r Web Service Web Service Mensajeria SOAP stack SOAP stack Transporte Cliente HTTP Servidor HTTP Browser Servidor Web CA Verisign Verisign, Certicamara firma el Digital ID del servidor Web A nivel de Transporte A nivel de Transporte • Utilizando SSL y su sucesor TLS (https) – Autenticación‐Identidad • Certificado de servidor seguro y Cerrtificado de cliente – Autorización‐Control de Acceso A i ió C ld A • No existe – Confidencialidad C fid i lid d • Conexión encriptada de SSL – Integridad I t id d • Conexión encriptada de SSL A nivel de mensajería A nivel de mensajería • WSS: SOAP Message Security WSS: SOAP Message Security – Security Tokens: almacena la información para autenticación y autorización. Ejemplo: y j p login/password o Certificados X.509 – XML Encryption: almacena EncryptedKey element yp yp y y ReferencedList que apuntan a las partes encriptadas del mensaje – XML Signatures WS‐Security: WS Security: Security Tokens Security Tokens <Envelope> <Header> <Security> <UserNameToken> <UserName>administrador</UserName> <Password>1234</Password> </UserNameToken> </Security> </Header> <Body> ....... WS‐Security: WS Security: XML Encryption XML Encryption <Envelope> <Header> <Security> <ReferenceList> <DataReference URI="#bodyID"/> </ReferenceList> </Security> </Header> <Body> <EncryptedData Id="bodyID"> <KeyInfo> <KeyName>CN=Hiroshi Maruyama, C=JP</KeyName> </KeyInfo> <CipherData> <CipherValue>...</CipherValue> </CipherData> </EncryptedData> </Body> </Envelope> Mostrar el Web Service con el estandar WS‐ Security A nivel de aplicación A nivel de aplicación • XML Signatures y XML Encryption g y yp – Estándar para el uso de Digital Signatures en los mensajes XML y garantizar la autenticidad de los mensajes. – Adicionar autenticidad, integridad y no repudio a los mensajes XML – Permite firmar parte de los mensajes y no el documento completo XML Signatures XML Signatures A nivel de aplicación A nivel de aplicación • Generar Generar campos adicionales y/o encriptar campos adicionales y/o encriptar parámetros • Amazon Web Service AWS Amazon Web Service AWS Otros Estándares Otros Estándares • XML – XML Signatures y XML Encryption • Web Services Web Services – WS‐Security, WS‐Trust, WS‐Policy • AAA – SAML WS Policy WS‐Policy • Framework Framework para expresar las limitaciones y los para expresar las limitaciones y los requisitos de los Web Services, utilizando aserciones o predicados. aserciones o predicados. • Estos predicados definen las características de seguridad que deben tener los mensajes seguridad que deben tener los mensajes SOAP. Ejemplo de WS‐Policy Ejemplo de WS Policy <wsp:Policy> <sp:SymmetricBinding> <wsp:Policy> <sp:ProtectionToken> <wsp:Policy> P li <sp:KerberosV5APREQToken sp:IncludeToken=".../IncludeToken/Once" /> </wsp:Policy> p </sp:ProtectionToken> <sp:SignBeforeEncrypting /> <sp:EncryptSignature /> </wsp:Policy> SAML • Framework Framework XML para representar información XML para representar información acerca de autenticidad, autorización y seguridad que pueda ser utilizada por las seguridad que pueda ser utilizada por las aplicaciones y/o intercambiada entre diferentes aplicaciones y plataformas. diferentes aplicaciones y plataformas. • Utiliza predicados (statements) Usos de SAML Usos de SAML • • • • Single sign Single sign‐on on (SSO) (SSO) Identity federation Att ib t Attribute services i Securing web service messages – Handled by the OASIS WSS TC as the “SAML Token Profile of WS‐Security” SAML Token Profile of WS‐Security SAML Token Profile of WS Security • Definir Definir el uso de tokens para SAML dentro de el uso de tokens para SAML dentro de WSS: SOAP Message Security specification • Cuando un Web Service recibe el SOAP Cuando un Web Service recibe el SOAP Request con una referencia a un(os) predicado(s) SAML los selecciona y los predicado(s) SAML los selecciona y los procesa. <S12:Envelope xmlns:S12="..."> <S12:Header> <wsse:Security xmlns:wsse="..."> < <saml:Assertion l A ti xmlns:saml="..." l l " " AssertionID="_a75adf55-01d7-40cc-929f-dbd8372ebdfc" IssueInstant="2003-04-17T00:46:02Z" Issuer=”www.opensaml.org” MajorVersion="1" MinorVersion="1"> <saml:AuthenticationStatement> <saml:Subject> <saml:NameIdentifier NameQualifier="www.example.com" Format=“urn:oasis:names:tc:SAML:1.1:nameidformat: Otros Temas Otros Temas • La La seguridad en el código del Web Service es seguridad en el código del Web Service es algo por fuera de esta presentación