quinta-feira, 3 de novembro de 2011

Algumas questões relacionadas a segurança SOA – Parte II

Existem dois caminhos para se implementar segurança em um ambiente SOA, um, utilizando Transpost-Level Security, também conhecido por TLS/SSL e outro através de Message-Level Security, padrão de segurança definido pela OASIS para segurança de web services.

Transport-Level Security/ Secure Socket Layer
TLS/SSL são protocolos de segurança que atuam sobre conexões TCP. TLS/SSL garantem a confiabilidade e  integridade dos dados além da autenticação, não se preocupando com  o meio utilizado para transporte das informações, independente do protocolo utilizado (http, smtp, rmi, etc).
Através do TLS/SSL,  um canal é estabelecido entre o consumidor e o servidor, garantindo a segurança das informações, feita através de um processo de criptografia dos dados (todos os dados transmitidos), garantindo assim que as informações não sejam capturadas durante o transporte, evitando possíveis adulterações durante a comunicação, enquanto este “canal” estiver ativo.
Com o TLS, podemos trabalhar com um conjunto de portas diferentes e seu algoritmo de criptografia permite trabalhar com HMAC (Keyed-Hashing For Message Authentication Code)  RFC 1024 que é um código de criptografia mais “forte” que o utilizado pelo SSL MAC (Message Authentication Code) RFC 2104.




Message-Level Security

Como exemplo de Message-Level Security, temos o Web Service Security (WSS), padrão OASIS para segurança de web services. Ao contrário do TLS/SSL que faz a criptografia de todas as informações que estão sendo transmitidas, o Message-Level Security, permite que somente parte das informações sejam criptografadas. Por exemplo, em uma operação de compra com cartão de crédito, poderíamos criptografar somente as informações relacionadas a identificação do cliente, como por exemplo o número do cartão de crédito, deixando as demais informações, por exemplo, o que está sendo comprado não criptografado.


Abaixo, temos visualmente as diferenças entre as abordagens de segurança Transport-Level Security e Message-Level Security


Com o Transport-Level Security, as informações serão completamente criptografadas e transmitidas.





Com o Message-Level Security, podemos definir qual parte da mensagem será criptografada.




Em breve, publicar como implementamos WSS em um ambiente SOA com Oracle Service Bus.

Twitter @javalittle


terça-feira, 1 de novembro de 2011

Algumas questões relacionadas a segurança SOA – Parte I


Existem diversas tópicos que devemos abordar e nos preocupar quando nos deparamos com o assunto relacionado a segurança de aplicações.  Não existe uma lista obrigatória de itens a serem seguidos, porque cada aplicação e ambiente, por possuírem características diferentes, possuem também necessidades distintas relacionadas a segurança.


Abaixo, vou procurar relacionar alguns itens que acredito serem preocupações comuns a todos analistas e arquitetos envolvidos com segurança de aplicações, também relacionados a segurança SOA.


Confidencialidade das Informações -  Em um ambiente SOA, todas as mensagens que são trocadas, devem ser criptografadas por algum algoritmo, impedindo assim acesso não autorizado das informações que estão sendo trafegadas pela rede ou que estejam de alguma forma sendo persistidas ou manipuladas.


Integridade das Informações – Em um ambiente SOA, a integridade das informações deve ser suportada, impedindo que as informações possam ser alteradas. Essa integridade é garantida através de uma assinatura digital, que permite que as partes envolvidas possam verificar o conteúdo que está sendo transmitido e/ou recebido, avaliando se algo ao longo do percurso foi alterado/modificado de forma não autorizada.


Controle de Acesso as Informações – Em um ambiente SOA, muitos serviços são disponibilizados, serviços estes que serão consumidos por clientes. Uma boa prática é o estabelecimento de políticas de acesso, que são aplicadas aos serviços, impedindo ou restringindo assim os serviços a clientes específicos. Estas políticas também podem ser referenciadas como “Access Control Lists (ACLs).

Auditoria -  Um fator muito importante em um ambiente SOA, é o da implementação de “boas praticas” relacionadas a auditoria, permitindo assim que levantamentos sejam feitos em logs no sentido de detectar possíveis tentativas de fraudes relacionadas com as operações das aplicações. Eu particularmente trabalhei em uma multinacional americana,  auditada pela Sarbanes-Oxley Act (SOX),  empresa esta que constantemente era auditada, sendo a questão segurança,  item mandatório em todas a operações onde houvesse troca de informações, principalmente informações relacionadas a terceiros.


Privacidade das Informações – Muitas empresas, trocam informações confidenciais relacionadas por exemplo a consumidores. Por exemplo, uma concessionária, pode através de um serviços, solicitar e/ou enviar informações de um determinado cliente. Estas informações podem conter por exemplo, número do CPF, CNPJ, cartão de crédito, endereço, enfim, uma série de informações que devem ser confidenciais as empresas envolvidas em uma determinada transação. Em outros casos, pode-se solicitar e ou enviar comportamento de compra e/ou venda de um determinado cliente, e em alguns casos essas informações devem e podem ser mantidas como anônimas. Um ambiente SOA, deve possuir práticas que permita que as informações classificadas e/ou relacionadas como privativas, não seja acessada ou disponibilizada para pessoas/empresas erradas.


Autenticação – Uma outra questão em um ambiente orientado a mensagens, é o de estabelecer entre o consumidor e o servidor, uma forma de identificação e autorização (implementada pela política) das operações que estão sendo processadas. O consumidor ao enviar uma solicitação/mensagem ao servidor, envia uma “identificação”, provando sua identidade, que será recebida e verificada por um servidor de autenticação.

É claro que existe uma série de outras questões que devem ser levantadas e planejadas em um ambiente envolvendo troca de informações entre aplicações.


No próximo tópico, pretendo falar um pouco sobre “Message-Leve Security” e “Transport-Level Security”.

Abraços.

Twitter    - @javalittle