Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
DESENVOLVIMENTO DE UMA INFRA-ESTRUTURA PARA COMPOSIÇÃO DINÂMICA E SEGURA DE SERVIÇOS WEB
Área de Sistemas Distribuídos
por
Jorge Roberto Lohn
Michelle Silva Wangham, Dra. Orientadora
São José (SC), novembro de 2008
UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
DESENVOLVIMENTO DE UMA INFRA-ESTRUTURA PARA COMPOSIÇÃO DINÂMICA E SEGURA DE SERVIÇOS WEB
Área de Sistemas Distribuídos
por
Jorge Roberto Lohn
Relatório apresentado à Banca Examinadora do Trabalho de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientadora: Michelle Silva Wangham, Dra.
São José (SC), novembro de 2008
DEDICATÓRIA
Aos meus pais, Vitor Valentin Lohn e Terezinha Lúcia Lohn,
pelo apoio incondicional, amor, carinho e dedicação.
A todos os professores, amigos e colegas, por estarem ao meu lado nesta jornada.
AGRADECIMENTOS
Aos meus pais, Vitor Valentin Lohn e Terezinha Lúcia Lohn, por sempre me incentivarem e
acreditarem na minha capacidade, pelas palavras amigas e de incentivo que sempre recebi de vocês,
principalmente nas horas difíceis, aqui expresso todo o meu amor e gratidão, e afirmo que sou quem
sou por me espelhar em vocês.
À professora Michelle Silva Wangham pela orientação, compreensão, incentivo nas horas
difíceis e pelo apoio recebido no decorrer deste projeto.
A todos os professores que de alguma forma contribuíram para o meu crescimento pessoal e
profissional.
Ao meu filho, que pelos poucos dias vividos, me ensinou a lutar com todas as forças pela
vida. Saibas que, se estou conseguindo realizar este trabalho é por sua causa; eu te amo meu filho.
À minha companheira, Janaína Matias, pelo carinho, incentivo, dedicação e compreensão
durante todo o desenvolvimento deste trabalho.
A todos os meus amigos e colegas, que tive a felicidade de encontrar na minha vida, pelo
carinho, companheirismo, momentos alegres e por toda a força nos momentos de adversidade.
SUMÁRIO
LISTA DE ABREVIATURAS ................................................................. vi LISTA DE FIGURAS ............................................................................ viii RESUMO ................................................................................................... ix ABSTRACT ............................................................................................... x 1 INTRODUÇÃO ................................................................................. 11 1.1 PROBLEMATIZAÇÃO ................................................................... 13 1.1.1 Formulação do Problema ............................................................................... 13 1.1.2 Solução Proposta ............................................................................................. 15 1.2 OBJETIVOS ...................................................................................... 16 1.2.1 Objetivo Geral ................................................................................................. 16 1.2.2 Objetivos Específicos ....................................................................................... 17 1.3 METODOLOGIA ............................................................................. 17 1.4 ESTRUTURA DO TRABALHO ..................................................... 18 2 FUNDAMENTAÇÃO TEÓRICA ................................................... 20 2.1 ARQUITETURA ORIENTADA A SERVIÇOS ............................ 20 2.2 SERVIÇOS WEB .............................................................................. 22 2.2.1 WSDL ............................................................................................................... 25 2.2.2 SOAP ................................................................................................................ 28 2.2.3 UDDI ................................................................................................................. 30 2.3 COMPOSIÇÃO DE SERVIÇOS WEB .......................................... 31 2.3.1 Orquestração de Serviços Web ...................................................................... 33 2.3.2 WS-BPEL ......................................................................................................... 34 2.4 COMPOSIÇÃO DINÂMICA DE SERVIÇOS WEB .................... 38 2.4.1 OWL-S .............................................................................................................. 39 2.5 CONCEITOS DE SEGURANÇA EM SISTEMAS COMPUTACIONAIS .............................................................................. 41 2.6 SEGURANÇA EM SERVIÇOS WEB ............................................ 45 2.6.1 Segurança em XML ........................................................................................ 46 2.6.2 WS-Security ..................................................................................................... 53 2.6.3 WS-Policy ......................................................................................................... 55 2.7 SEGURANÇA DE SERVIÇOS WEB COMPOSTOS ................... 57 3 INFRA-ESTRUTURA PARA COMPOSIÇÃO DINÂMICA DE PROCESSOS DE NEGÓCIOS SEGUROS .......................................... 60 3.1 VISÃO GERAL DA INFRA-ESTRUTURA PROPOSTA ............ 62 3.2 COMPOSITOR DINÂMICO DE PROCESSOS DE NEGÓCIOS SEGUROS ................................................................................................ 64
v
3.2.1 Compositor de Políticas de Qualidade Proteção para Serviços Web Compostos .................................................................................................................. 66 3.2.2 Aplicação da Política Composta de Qualidade de Proteção ....................... 68 3.3 MODELAGEM DA INFRA-ESTRUTURA PROPOSTA ............ 71 3.4 AGÊNCIA DE VIAGENS
ESTUDO DE CASO ......................... 77
3.4.1 Modelagem da Agência de Viagens ............................................................... 80 3.4.2 Implementação e Resultados .......................................................................... 89 3.5 CONSIDERAÇÕES GERAIS ......................................................... 98 4 CONCLUSÃO ................................................................................. 100 4.1 PRODUÇÕES CIENTÍFICAS ...................................................... 102 4.2 TRABALHOS FUTUROS ............................................................. 102 REFERÊNCIAS BIBLIOGRÁFICAS ................................................. 104 A ESTRUTURA DE CLASSES DA ONTOLOGIA DA AGÊNCIA DE VIAGENS ........................................................................................ 111 B ONTOLOGIA DO SERVIÇO WEB DA EMPRESA AÉREA ..... 112 C PROCESSO BPEL DO COMPOSITORPNSEG ........................... 117 D CASOS DE TESTE ........................................................................... 119
LISTA DE ABREVIATURAS
3DES Triple Data Encryption Standard AES Advanced Encryption Standard API Application Programming Interface B2B Business to Business BPEL Business Process Execution Language BPEL4WS Business Process Execution Language for Web Services CORBA Common Object Request Broker Architecture CSS Cascading Style Sheets DAML DARPA Agent Markup Language DCOM Distributed Component Object Model DoS Denial of service FTP File Transfer Protocol HTTP Hypertext Transfer Protocol IDL Interface Definition Language IEC International Electrotechnical Commission IETF Internet Engineering Task Force ISO International Organization for Standardization JSF JavaServer Faces LDAP Lightweight Directory Access Protocol MD5 Message-Digest Algorithm NASSL Network Application Service Specification Language OASIS Organization for the Advancement of Structured Information Standards OIL Ontology Inference Layer OV Organizações Virtuais OWL Web Ontology language PKI Public Key Infrastructure RMI Remote Method Invocation RSA Rivest Shamir Adelman SMTP Simple Mail Transfer Protocol RMI Remote Method Invocation RDF Resource Description Framework RPC Remote Procedure Call SAML Security Assertion Markup Language SDL Service Description Language SHA Secure Hash Algorithms SMTP Simple Mail Transfer Protocol SOA Service Oriented Architecture SSL Secure Sockets Layer SSO Single Sign On TCP Transmission Control Protocol TLS Transport Layer Security UDDI Universal Description, Discovery and Integration UDP User Datagram Protocol UML Unified Modeling Language URI Uniform Resource Identifier URL Uniform Resource Locator
vii
UUID Universally Unique Identifiers XACML eXtensible Access Control Markup Language XKMS XML Key Management Specification XML eXtensible Markup Language XSD XML Schema Definition W3C World Wide Web Consortium WS Web Services WS-I Web Services Interoperability Organization WS-BPEL Web Services Business Process Execution Language WSDL Web Service Description Language WSFL Web Service Flow Language WSCI Web Services Choreography Interface
LISTA DE FIGURAS
Figura 1 - Interação entre as entidades da SOA. ............................................................................... 21 Figura 2 - Colaboração típica na Arquitetura dos Serviços Web. ..................................................... 25 Figura 3 - Estrutura de um documento WSDL .................................................................................. 26 Figura 4 - Mensagem SOAP. ............................................................................................................. 29 Figura 5 - Processamento Multi-Ponto de uma Mensagem SOAP ................................................... 29 Figura 6 - Composição de Serviços Web. ......................................................................................... 32 Figura 7 - Processo definido através da WS-BPEL ........................................................................... 37 Figura 8 - Formas de assinaturas providas pela especificação XML Signature. ............................... 48 Figura 9 - Política expressa com o padrão WS-Policy ....................................................................... 57 Figura 10 - Infra-estrutura de segurança proposta neste trabalho. .................................................... 63 Figura 11 - Compositor de processos dinâmicos ............................................................................... 65 Figura 12 - Visão geral do serviço compositor de políticas .............................................................. 67 Figura 13- Atividades realizadas pelo serviço compositor de políticas ............................................ 67 Figura 14
Aplicando as políticas de segurança ao processo BPEL ................................................ 68 Figura 15 - Diagrama de seqüência que mostra os interceptadores .................................................. 70 Figura 16 - Atividades realizadas pela infra-estrutura de segurança. ................................................ 73 Figura 17 - Casos de uso do compositor de processos dinâmicos. .................................................... 73 Figura 18 - Estrutura do estudo de caso (Agência de Viagens) ......................................................... 79 Figura 19 - Casos de uso da Agência de Viagens............................................................................ 81 Figura 20 - Diagrama de Componentes da Agência de Viagens ....................................................... 86 Figura 21 - Diagrama de Seqüência da agência de Viagens .............................................................. 87 Figura 22
Formulário da aplicação web da Agência de Viagens ................................................... 90 Figura 23 - Parte do Arquivo Service.xml do Serviço Web AereoWS1 ........................................... 92 Figura 24 - Ws-Policy representando as políticas do Serviço AereoWS .......................................... 93 Figura 25 - Anexando a política a WSDL ......................................................................................... 93 Figura 26
Estrutura da ontologia descrita para representar o serviço AereoWS1 .......................... 94 Figura 27
Parte do arquivo AereoWS1Service.owl ........................................................................ 94 Figura 28
Trecho do arquivo AereoWS1Process.owl .................................................................... 95 Figura 29
Parte do arquivo AereoWS1Grounding.owl .................................................................. 96 Figura 30
Processo BPEL CompositorPNSeg ................................................................................ 97
RESUMO
LOHN, Jorge Roberto. Desenvolvimento de uma infra-estrutura para composição dinâmica e segura de Serviços Web. São José, 2008. 124 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, São José, 2008.
Processos de negócios descrevem serviços complexos que transpassam os limites organizacionais e são providos por diferentes parceiros. Os Serviços Web são ferramentas poderosas de integração e são peças fundamentais para a área de processos de negócios baseados em XML. A composição de Serviços Web cria serviços compostos a fim de solucionar determinados problemas, além de criar serviços coesos e reutilizáveis. A composição dinâmica de processos de negócio proporciona uma flexibilidade e fácil adaptação às mudanças nas regras de negócio. Existem trabalhos que tratam da segurança em Serviços Web, porém são poucos os trabalhos que visam proporcionar a segurança em processos de negócio compostos dinamicamente. Foram tais características que motivaram o desenvolvimento do presente trabalho. O objetivo deste trabalho é desenvolver uma infra-estrutura para composição dinâmica e segura de processos de negócios em redes colaborativas orientadas a serviços que promova a aplicação da política de segurança composta nos processos de negócio. A infra-estrutura para composição dinâmica e segura é composta por três partes: (i) o compositor de processos dinâmicos, o qual visa selecionar os parceiros a partir de instâncias de ontologia; (ii) o compositor de políticas de qualidade proteção para Serviços Web compostos, o qual tem por objetivo associar políticas de segurança às trocas de mensagem de um processo de negócio; e (iii) uma camada de segurança que aplique as políticas de segurança, garantindo assim a comunicação segura entre todos os participantes. Uma pesquisa bibliográfica sobre segurança em Serviços Web compostos foi realizada visando consolidar os conceitos envolvidos com o problema e estudar as tecnologias necessárias para o desenvolvimento da infra-estrutura proposta. Um estudo de caso, Agência de Viagens, foi descrito e modelado para avaliar a infra-estrutura proposta neste trabalho. Em seguida, através de diagramas UML, foi feita a modelagem da infra-estrutura proposta e da agência de viagens. Foram desenvolvidos alguns casos de teste para testar a infra-estrutura criada. Como resultado, tem-se o detalhamento da infra-estrutura necessária para prover a segurança nas composições dinâmicas de Serviços Web. A implementação da infra-estrutura não está completa, porém o protótipo implementado, direcionado ao estudo de caso, possibilitou aferir a aplicabilidade da infra-estrutura proposta neste trabalho.
Palavras-chave: Composição Dinâmica de Serviços Web. Segurança em Processos de Negócio. Redes Colaborativas.
ABSTRACT
Business Processes describe complex services that transpose the organizational limits and are provided by different partners. The Web services are powerful tools of integration and are basic parts for the area of business processes based on XML. The composition of Web Services allows services composition in order to resolve certain problems and create cohesive and reusable services. The business processes dynamic composition provides a flexible and easy adaptation to changes in the rules of business. The objective of this work is to develop an infrastructure for safe and dynamic composition of business processes in collaborative networks geared to services that promote the implementation of security policy consists in business processes. The infrastructure for safe and dynamic composition is composed of three parts: (i) the dynamic processes composer, which aims to select partners from instances of ontology, (ii) the policies of quality composer protection for composite Web services, which aims to link security policies, the exchange of messages in a process of business, and (iii) a layer of security to apply the security policies, thus ensuring secure communication between all participants. A literature search on security in composite Web Services was held aimed at consolidating the concepts involved with the problem to be solved, studying the technologies needed for developing of the infrastructure proposal. A case study, travel agency, was described and modeled for assessing the infrastructure proposed in this paper. Then, through UML diagrams, was the modeling of proposed infrastructure and the travel agency. There have been some test cases to test the infrastructure created. As a result, we have the detail of the infrastructure needed to provide security in the dynamic compositions of Web Services Implementation of the infrastructure is not complete, but the prototype implemented, directed to the case study, assess the possible applicability of the infrastructure proposed in this paper.
Keywords: Dynamic Composition of Web Services . Security in business processes. Collaborative Networks.
1 INTRODUÇÃO
Com a evolução da Internet nos últimos anos, principalmente em relação ao aumento da
velocidade de transmissão e do desenvolvimento de tecnologias que permitem a criação de sistemas
robustos, em especial no ambiente web, muitas empresas estão fazendo da Internet o seu escritório.
A Internet fornece uma poderosa infra-estrutura de colaboração e comunicação, estimulando a
criação de redes colaborativas para diversos objetivos. Uma rede colaborativa é constituída por uma
variedade de entidades autônomas, geograficamente distribuídas, que colaboram para alcançar um
objetivo compatível ou comum e cujas interações são suportadas pelas redes de computadores
(CAMARINHA-MATOS & AFSARMANESH, 2005). A utilização de redes colaborativas estão crescendo, principalmente, para atender novas
oportunidades de negócio. Empresas se unem formando uma rede colaborativa, criando desta
maneira processos de negócio complexos, difíceis de serem gerenciados e controlados
(CAMARINHA-MATOS & AFSARMANESH, 2005). Por exemplo, uma determinada empresa
recebe uma boa oportunidade de negócio, porém, apenas com seus recursos e habilidades não é
capaz de efetuar o trabalho. Nesta situação, esta pode unir-se temporariamente, através de uma
organização virtual, a outras empresas que forneçam as habilidades e recursos necessários para que
juntas consigam atender a oportunidade de negócio. Após o encerramento das atividades, esta rede
de colaboração é desmanchada. Dentro do cenário de redes colaborativas, a cooperação na forma de
organizações virtuais representa uma estratégia moderna que vem sendo adotada por muitas
empresas, profissionais e laboratórios espalhados ao redor do mundo, visando atender novas
oportunidades de negócios, ampliar suas participações em novos mercados e/ou alcançar excelência
científica para o desenvolvimento de projetos inovadores (WANGHAM et al., 2005). Devido à necessidade de uma rápida adaptação dos negócios para atender novos
consumidores e novas condições de mercado, cada vez mais as organizações, através das redes
colaborativas, procuram se unir para criar processos de negócios que transpassam os seus limites
organizacionais. Os Serviços Web possibilitam esta composição e combinação de diferentes
provedores de serviços, permitindo a criação de serviços mais complexos e sofisticados. Além
disso, os Serviços Web possibilitam que empresas compartilhem seus sistemas legados, diminuindo
assim os custos da integração entre os parceiros de negócio.
Conforme consta em W3C (2004a), os Serviços Web seguem a Arquitetura Orientada a
Serviços e são componentes de softwares projetados para suportar interações entre aplicações
12
heterogêneas sobre a Internet. A Arquitetura Orientada a Serviço é um paradigma para organização
e utilização de habilidades distribuídas que estão sob controle de diferentes domínios proprietários.
Complementando, a Arquitetura Orientada a Serviço é um meio para organizar as soluções que
promovem o reuso, o crescimento e a interoperabilidade (NEWCOMER & LOMOW, 2004).
As redes colaborativas são, geralmente, caracterizadas como um sistema aberto, que faz uso
da Internet. Devido a isto, as vantagens inerentes dos Serviços Web, tornam esta tecnologia ideal
para compor a camada de infra-estrutura que dará o suporte para as trocas de informações, que
fornecerá as funcionalidades de coordenação e de colaboração e que permitirá que relações de
negócios entre empresas sejam estabelecidas de maneira simples e dinâmica (ECOLEAD, 2005).
De acordo com De Mello et al. (2006) e Carminati, Ferrari e Hung (2005), as principais
características que tornam os Serviços Web uma tecnologia emergente e promissora para a
realização de transações comerciais são: (1) o fato de possuir um modelo fracamente acoplado e
transparente, garantindo a interoperabilidade entre os serviços; (2) utilizar-se de padrões
amplamente difundidos como o HyperText Transfer Protocol (HTTP) e eXtensible Markup
Language (XML); (3) possuir interfaces auto-descritivas e baseadas em XML; e (4) tornam mais
fácil a composição ou a combinação de diferentes provedores, visando formar serviços mais
complexos e sofisticados.
No contexto de uma arquitetura orientada a serviços, compor Serviços Web e assim criar
processos de negócios de alto nível, que transpassem diferentes organizações, requer o uso de
padrões amplamente aceitos para modelar as interações B2B (business to business) e para
possibilitar a integração de aplicações corporativas (EAI- Enterprise Application Integration)
(PELTZ, 2003). Conforme definido em Peltz (2003), a orquestração e a coreografia de Serviços
Web são abordagens baseadas em padrões abertos para conectar os serviços e criar processos de
negócios de alto nível.
A orquestração apresenta um processo de negócio executável que permite executar vários
Serviços Web em uma determinada seqüência lógica para atingir um determinado resultado. Com a
orquestração, o processo é sempre controlado por uma das partes do negócio, o que difere da
coreografia que é mais colaborativa e que permite que cada parte envolvida descreva sua
participação na interação (PELTZ, 2003). A coreografia registra a seqüência de mensagens que
pode envolver múltiplas partes e múltiplos recursos, descreve tipicamente a troca de mensagens
13
públicas que ocorrem entre os Serviços Web, ao invés do processo de negócio específico que uma
única parte executa (PELTZ, 2003).
A composição dinâmica de Serviços Web visa ligar, automaticamente, diferentes serviços
para atingir um objetivo complexo, tendo como base, normalmente, dados semânticos adicionais
que descrevem os Serviços Web (BERNERS-LEE, HENDLER & LASSILA, 2001) e que podem
ser usados para geração dinâmica da seqüência de orquestração (WU et al., 2003). O uso da Web
semântica na composição de Serviços Web é um tópico de pesquisa muito relevante devido ao seu
potencial em alcançar uma integração de aplicações que seja dinâmica, escalável e com custo
efetivo (WU et al. 2003). Com a Web semântica, processos podem fazer interpretações sobre os
recursos disponíveis no ambiente de forma não ambígua. Tais interpretações são possíveis através
do emprego de linguagens de descrições e técnicas de inferências baseadas em ontologias.
1.1 PROBLEMATIZAÇÃO
1.1.1 Formulação do Problema
Em muitos casos, as partes que compõem as redes colaborativas não se conhecem e, mesmo
em empresas que são grandes parceiras, a segurança sempre é uma preocupação. Devido à
necessidade do compartilhamento de informações importantes e até mesmo sigilosas, as redes
colaborativas precisam de uma efetiva infra-estrutura de segurança para impedir que um membro
consiga acesso não autorizado às informações. Uma vez que estas redes exigem que as organizações
tenham relacionamentos com um amplo domínio de parceiros, apesar da tendência para trabalhos
colaborativos, muitas organizações e/ou profissionais ainda têm receios em compartilhar
informações sensíveis, quando há a necessidade de colaboração com parceiros desconhecidos
(WANGHAM et al., 2005). No ambiente de redes colaborativas, deve-se ter uma política de segurança global, além
daquelas utilizadas por cada empresa. Cada empresa que compõem uma rede colaborativa possui
suas próprias políticas, logo neste ambiente colaborativo têm-se várias políticas de segurança. Cada
domínio transposto por um processo de negócio pode prover seu próprio conjunto de credenciais de
segurança, tomando como base suas tecnologias subjacentes de segurança e suas políticas de
segurança e de negócios (DE MELLO et al., 2005). Ou seja, havendo a necessidade de colaboração
há ainda a necessidade de um acordo entre os parceiros envolvidos.
14
A segurança é sempre uma questão importante em sistemas distribuídos. Vários padrões são
utilizados para prover segurança às informações expressas em XML (IMAMURA et al., 2002;
BARTEL et al., 2002) e como conseqüência aos Serviços Web. Entretanto, quando se considera não
mais um serviço único, mas sim uma orquestração de Serviços Web, constata-se que a segurança
dos processos de negócios não foi ainda profundamente investigada e que ainda não existem
soluções concretas e completas (KOSHUTANSKI & MASSACCI, 2003; CHARFI & MEZINI,
2005; CARMINATI, FERRARI & HUNG, 2005). As tecnologias desenvolvidas para prover a
comunicação segura, a autenticação e autorização precisam ser aprimoradas para que a composição
dinâmica seja levada em conta.
Nos ambientes de redes colaborativas, o uso de mecanismos de segurança que garantam
autenticidade, confidencialidade, integridade, disponibilidade e não-repúdio das informações,
conforme especificado na política de segurança da organização virtual, reforça a construção da
confiança entre as organizações (RABELO et al, 2003).
Conforme constatado em (CARMINATI, FERRARI & HUNG, 2005), geralmente, um
provedor de serviços tem preocupações de segurança com relação aos provedores ou serviços com
os quais este coopera durante um processo de negócio. É comum que os Serviços Web estejam
acessíveis apenas para os parceiros de negócios que possuam credenciais de segurança apropriadas.
Isto significa que o compositor do Serviço Web tem que conhecer as políticas de segurança dos
serviços parceiros, antes de escrever o processo executável que invocará o serviço. Neste cenário,
uma política de segurança especifica quais mecanismos de autenticação, algoritmos de cifragem e
de assinatura digital são suportados por um Serviço Web parceiro.
As partes envolvidas necessitam de suporte apropriado para garantir esta qualidade de
proteção. Ou seja, estas necessitam negociar e chegar a um acordo de quais mecanismos,
usualmente, algoritmos de cifragem baseados em chaves e de assinaturas digitais, serão usados,
visando garantir a compatibilidade e a interoperabilidade entre os mecanismos de segurança.
Nas redes colaborativas, para acompanhar as mudanças no mundo dos negócios e para
agilizar a criação de processo de negócios sob demanda, há a necessidade de que a composição de
Serviços Web seja automática, flexível, escalável, auto-gerenciada e segura.
A partir da contextualização apresentada, pôde-se formular as seguintes questões de
pesquisa, indicando os desafios enfrentados nesta pesquisa:
15
como desenvolver processos de negócios, através da composição dinâmica de Serviços
Web, em redes colaborativas orientadas a serviços e abertas?
como estabelecer dinamicamente os parceiros envolvidos em um processo de negócios
baseado em orquestração de Serviços Web?
como promover e aplicar um acordo entre as políticas de segurança dos diversos
modelos administrativos atravessados durante a execução de um processo de negócios?
1.1.2 Solução Proposta
Atualmente, muitas organizações precisam se unir temporariamente para atender uma
oportunidade de negócio, sendo que este fenômeno está cada vez mais freqüente. Existe neste
cenário uma grande necessidade de integrar todos os participantes desta rede de uma forma
automática e segura. Este trabalho está focado nos aspectos de segurança da composição dinâmica
de Serviços Web no ambiente das Organizações Virtuais (OV), um tipo de rede colaborativa.
Para a composição de serviços é utilizada a orquestração e como a WS-BPEL (Web Services
Business Process Execution Language), padronizada pela OASIS, é a linguagem mais popular para
orquestração de Serviços Web, com grande aceitação na academia e na indústria (CHARFI &
MEZINI, 2005) esta foi a linguagem escolhida para a orquestração dos Serviços Web. Este trabalho
não utilizou a coreografia para a composição de Serviços Web.
Para tratar o problema apresentado, o presente trabalho pretende definir uma infra-estrutura
para redes colaborativas, totalmente orientada a serviços, com suporte a composição dinâmica de
processos de negócios. Este protótipo suporta o estabelecimento dinâmico dos parceiros envolvidos,
define e aplica a política de segurança do processo de negócio. Neste trabalho, o foco está em
prover a segurança lógica, garantindo a autenticidade, confidencialidade e a integridade das
informações trocadas. As propriedades da disponibilidade e do não-repúdio das informações não
serão garantidas na infra-estrutura de segurança. Além disso, não foi considerada a segurança física
e ambiental dos sistemas de informação das organizações.
Além dos aspectos funcionais, propriedades não funcionais de qualidade de serviço, tais
como os que expressam relações de confiança ou regras de políticas de segurança, precisam ser
garantidas para que a linguagem de composição WS-BPEL seja amplamente adotada na indústria.
Como esta linguagem de composição não fornece meios para especificar e garantir propriedades de
16
segurança e como os padrões de segurança não tratam diretamente das implicações provenientes da
criação de serviços complexos que atravessam diferentes domínios administrativos, uma infra-
estrutura de segurança que contribua para a construção de processos de negócios seguros em redes
colaborativas se mostra extremamente necessária. Para garantir os requisitos não funcionais,
principalmente de segurança, serão adicionados à descrição dos processos de negócios e no uso de
padrões de segurança já consolidados e aceitos na indústria, o WS-Security (OASIS, 2006b), o WS-
Policy (W3C, 2007b), entre outros.
Com a Web semântica, processos podem fazer interpretações sobre os requisitos e
competências de segurança, definidos em cada domínio administrativo, de forma não ambígua. Tais
interpretações são possíveis através do emprego de linguagens de descrições e de técnicas de
inferências baseadas em ontologias (motores lógicos semânticos). Fez parte deste trabalho, o
desenvolvimento de um processo de negócio modelado e executado em conformidade com o padrão
WS-BPEL sendo que o mesmo foi integrado ao protótipo de segurança. A integração do protótipo
ao processo de negócio foi realizada da forma mais transparente e automática possível.
Ao longo do desenvolvimento deste projeto foram utilizadas apenas ferramentas de código
aberto, já que estas ferramentas proporcionaram maior flexibilidade durante a implementação do
protótipo da infra-estrutura de segurança. Como linguagem de programação foi utilizada a
linguagem Java, que provê um excelente suporte ao desenvolvimento de aplicações distribuídas
orientadas a serviços e que possui bibliotecas e ferramentas para implantação da orquestração e para
o uso de web semântica. Foi utilizado o framework Apache Axis 2 para realizar as implementações
dos Serviços Web e algumas bibliotecas da Apache para prover segurança ao ambiente de rede
colaborativa
1.2 OBJETIVOS
1.2.1 Objetivo Geral
Desenvolver uma infra-estrutura para composição dinâmica e segura de processos de
negócios em redes colaborativas orientadas a serviços que promova a aplicação da política de
segurança composta nos processos de negócio.
17
1.2.2 Objetivos Específicos
De forma a alcançar o objetivo geral definido, os seguintes objetivos específicos serão
perseguidos:
analisar as ameaças e implicações de segurança decorrentes da composição de Serviços
Web dinâmicos;
desenvolver um serviço que possibilite a composição dinâmica dos parceiros de uma
orquestração de Serviços Web;
definir uma infra-estrutura de segurança que promova a aplicação da política de
segurança composta em processos de negócios executáveis;
definir e implementar um processo de negócio exemplo (Agência de Viagens) que utiliza
a web semântica para informar as características dos Serviços Web que serão utilizadas
na escolha dos parceiros durante a composição dinâmica;
implementar um protótipo que engloba o compositor de processos dinâmicos e a infra-
estrutura de segurança proposta para redes colaborativas orientadas a serviço; e
integrar o protótipo desenvolvido ao processo de negócio exemplo para verificar a
aplicabilidade do protótipo desenvolvido.
1.3 Metodologia
Este trabalho pode ser considerado uma pesquisa aplicada, pois teve por objetivo solucionar
um problema específico, possibilitar a composição dinâmica de processos de negócio e garantir as
propriedades de segurança em tal ambiente.
Neste trabalho, foi utilizada a técnica de pesquisa bibliográfica para obter informações sobre
os assuntos relacionados à segurança em Serviços Web compostos. Entre estes assuntos está a
arquitetura de Serviços Web, suas características e benefícios, e a composição de Serviços Web.
Para finalizar este estudo bibliográfico foram apresentados os conceitos de segurança em sistemas
computacionais e como é possível especificar requisitos não funcionais, principalmente de
segurança, na arquitetura de Serviços Web. Este levantamento foi realizado por meio de diversas
fontes, dentre estas, livros, artigos publicados em conferências e em periódicos, sites de Internet,
entre outros.
18
Após a consolidação da fundamentação teórica para a realização do trabalho foi projetado o
protótipo da infra-estrutura para composição dinâmica e segura de Serviços Web. As
funcionalidades da infra-estrutura para composição dinâmica e segura de Serviços Web, os
requisitos funcionais, requisitos não funcionais e regras de negócio da infra-estrutura foram
definidos. Também foram elaborados diagramas de UML para modelar esta infra-estrutura e o
estudo de caso.
Após a modelagem, iniciou-se a etapa de desenvolvimento, onde foram implementadas parte
da infra-estrutura para composição dinâmica e segura de Serviços Web e o estudo de caso.
Finalizando, foram realizados alguns testes para comprovar a aplicabilidade da infra-estrutura
desenvolvida.
1.4 Estrutura do trabalho
O presente trabalho está estruturado em quatro capítulos, conforme descrito a seguir.
O Capítulo 1 apresentou os problemas existentes na criação de processos de negócio de alto
nível, principalmente, para prover segurança em tal ambiente. A partir da identificação dos
problemas a serem enfrentados foram identificados os objetivos do trabalho. Ainda neste capítulo
uma breve descrição da solução proposta e seu escopo foram apresentados, bem como a
metodologia utilizada no desenvolvimento da solução.
O Capítulo 2 apresenta uma revisão bibliográfica sobre a arquitetura orientada a serviços;
arquitetura dos Serviços Web, funcionalidades, benefícios e seus principais elementos;
posteriormente são apresentadas as principais formas de composição de Serviços Web,
aprofundando-se na orquestração de Serviços Web e na linguagem WS-BPEL. Os conceitos de
segurança em sistemas computacionais e os meios para prover segurança em Serviços Web e suas
principais especificações também são apresentados, já que estes são essenciais para fundamentação
teórica do trabalho a ser desenvolvido. Por fim, são apresentados alguns trabalhos relacionados que
visam prover segurança em Serviços Web compostos.
No Capítulo 3 é apresentado o projeto detalhado da infra-estrutura para composição
dinâmica e do estudo de caso (Agência de Viagens) que foram desenvolvidos, incluindo sua
especificação e a sua modelagem em UML (Unified Modeling Language). A implementação da
infra-estrutura para composição dinâmica e da Agência de Viagens, bem como as tecnologias e
19
técnicas utilizadas, também são descritas neste capítulo. Por fim, os resultados obtidos, os
problemas e dificuldades encontrados durante o desenvolvimento deste trabalho são analisados.
Finalizando, no Capítulo 4, são apresentadas as considerações finais, onde são abordadas as
dificuldades encontradas, as contribuições deste trabalho e as sugestões de trabalhos futuros.
2 FUNDAMENTAÇÃO TEÓRICA
Neste capítulo será apresentada a arquitetura orientada a serviços e os seus principais
benefícios. Os Serviços Web e as suas especificações como WSDL (Web Services Description
Language), SOAP e UDDI (Universal Description, Discovery and Integration) serão apresentados
na Seção 2.2. Em seguida, serão apresentadas as formas de compor os Serviços Web de forma
estática e dinâmica, a fim de fornecer serviços mais complexos e com maior valor agregado,
visando solucionar problemas de alto nível de complexidade.
Ainda neste capítulo serão apresentados os conceitos de segurança e as especificações para
adicionar requisitos não funcionais aos Serviços Web. A análise de segurança em Serviços Web
está subdividida na segurança em arquivos XML e nas especificações WS-Security e WS-Policy. Por
fim, serão apresentados alguns trabalhos relacionados que tratam da segurança em Serviços Web
compostos.
2.1 Arquitetura Orientada a Serviços Conforme a OASIS (2006a), a Arquitetura Orientada a Serviços (Service Oriented Architecture
SOA) é um paradigma para organização e utilização de competências distribuídas que estão sob
controle de diferentes domínios proprietários. Segundo Papazoglou (2003), a arquitetura orientada a
serviços é uma caracterização de sistemas distribuídos, em que as funcionalidades do sistema são
expostas via descrição de uma interface, permitindo a publicação, localização e a invocação por
meio de um formato padronizado.
Segundo Weerawarana et al. (2005) e conforme ilustrado na Figura 1, são necessários três
passos para definir uma arquitetura orientada a serviço. Primeiro, é necessário prover uma definição
abstrata do serviço, a qual deve incluir os detalhes para que o serviço consiga ser invocado (bind) de
maneira correta. No segundo passo, os provedores de serviços precisam publicar (publish) os
detalhes do serviço para que quem for utilizar o serviço possa entender mais precisamente o que
este serviço faz e também para que este possa obter as informações necessárias para invocar
métodos deste serviço. No terceiro passo, os clientes, que precisam de um serviço, devem localizar
(find) os serviços que oferecem o que estão procurando. Para que estas atividades,
invocar/publicar/localizar (bind/publish/find), funcionem corretamente, padrões foram definidos
para gerenciar o que publicar, como localizar uma informação e como se deve especificar os
detalhes a respeito de como invocar o serviço.
21
Figura 1 - Interação entre as entidades da SOA.
Fonte: De Mello et al. (2006).
Os serviços estão baseados em trocas de mensagem entre os clientes e os provedores. Para
que estas trocas de mensagem ocorram, é necessário que as mensagens sigam um formato padrão, o
qual proporciona a neutralidade da tecnologia, propiciando que os clientes e provedores utilizem de
tecnologias diferentes para a implementação das camadas inferiores. Os serviços são definidos
como fracamente acoplados, indicando a transparência de localização (DE MELLO et al., 2006).
Segundo De Mello et al. (2006), o cliente precisa apenas conhecer a interface do serviço,
não sendo necessário conhecer a implementação interna do mesmo.
As interfaces dos serviços são auto-descritivas e baseadas em padrões abertos. Ou seja, a interface de um serviço define um conjunto de métodos públicos, juntamente com seus parâmetros, valores de retorno e meios para tratar possíveis exceções, porém não provê uma implementação. Com isto, pode-se assumir que a interface é um contrato entre o provedor do serviço e o cliente, sendo que o provedor deverá implementar todos os métodos ali descritos e o cliente só poderá invocar tais métodos (DE MELLO et al., 2006, p. 4).
Segundo OASIS (2006a), os principais benefícios da arquitetura baseada em serviços são
facilitar o gerenciamento dos sistemas corporativos de larga escala, facilitar o provisionamento e
uso de serviços na Internet e reduzir custos na cooperação entre as organizações. Esta arquitetura
oferece um paradigma escalável único para organizar grandes sistemas em redes, pois permite a
interoperabilidade entre os componentes individuais. Com SOA, torna-se mais fácil desenvolver
sistemas de larga escala, evolutivos e gerenciáveis.
22
Conforme De Mello et al. (2006), os serviços, por estarem muito vinculados às funções de
negócio, oferecem uma forma de modularidade diferente das oferecidas pelas linguagens de
programação como os módulos, objetos e componentes. Um serviço oferece uma função de negócio
completa, composta por vários componentes, enquanto os componentes representam uma entidade
ou regra de negócio. Os serviços podem ser reutilizáveis e empregados em novas transações, dentro
ou através da organização. Essa modularidade permite as organizações um gerenciamento melhor
de suas regras de negócio.
A arquitetura dos Serviços Web é baseada na arquitetura orientada a serviços e será descrita
em maiores detalhes na seção a seguir.
2.2 Serviços Web
Os Serviços Web (Web Services - WS) surgiram a partir de meados de 2000
(WEERAWARANA et al., 2005). Segundo a W3C (2004a), um Serviço Web é um componente de
software designado para suportar a interoperabilidade entre máquinas através de uma rede. Possui
uma interface descrita em um formato XML, chamada Web Services Description Language
(WSDL), capaz de ser processada por uma aplicação. Outros sistemas ou serviços interagem com
um Serviço Web utilizando mensagens SOAP1, geralmente usando HTTP (Hypertext Transfer
Protocol) e XML (eXtensible Markup Language) serializado, em conjunto com outros padrões web.
Conforme De Mello et al. (2006), os Serviços Web são classificados como um tipo
específico de serviço, sendo este identificado através de um identificador uniforme de recursos
(URI
Uniform Resource Identifier). Estes serviços são independentes de plataforma, de
linguagens de programação e arquitetura de máquina. Os Serviços Web utilizam padrões abertos e
bastante difundidos, tais como o XML e o HTTP. Estes padrões conseguem garantir a
interoperabilidade entre clientes e provedores de serviços, sem que os mesmos necessitem possuir o
conhecimento prévio de quais tecnologias estão presentes em cada lado. Esta facilidade de
comunicação é ideal para que relações de negócios entre empresas (B2B
Business to Business)
sejam estabelecidas de maneira simples e dinâmica. Segundo Coulouris, Dollimore e Kindberg
1 Em sua criação, SOAP era um acrônimo para Simple Object Access Protocol, porém na versão 1.2 tal definição foi descartada pelo W3C, por achar que a mesma era equivocada. Assim, hoje SOAP é simplesmente o nome do protocolo e não mais um acrônimo.
23
(2007), originalmente, o protocolo SOAP era utilizado apenas com o HTTP, porém na versão mais
atual do protocolo SOAP foram adicionados o suporte aos protocolos SMTP, TCP ou UDP.
Conforme Vogels (2003),é comum confundir os Serviços Web com objetos distribuídos
como o CORBA (Common Object Request Broker Architecture), DCOM (Distributed Component
Object Model) e RMI (Remote Method Invocation). Para Vogels (2003), os Serviços Web são
tecnologias de sistemas distribuídos, os quais estão sendo utilizados em áreas nas quais aplicações
com objetos distribuídos falharam no passado.
Conforme De Mello et al. (2006), os Serviços Web e as tecnologias de objetos distribuídos
até possuem características em comum, porém os Serviços Web não são objetos distribuídos.
Ambos possuem uma linguagem para descrição de interfaces, a qual garante interações de rede bem
definidas, além de mecanismos semelhantes para registro e localização de objetos ou serviços.
Porém, Serviços Web não possuem o conceito de referência de objetos, o qual é essencial para os
sistemas de objetos distribuídos. Pelo conceito de referência de objetos é possível manter o estado
do objeto, o que não é possível nos Serviços Web.
Conforme De Mello et al. (2006), a principal diferença entre os Serviços Web e os objetos
distribuídos é o ciclo de vida. O ciclo de vida dos objetos distribuídos é composto pelas seguintes
fases:
diante de um pedido, uma fábrica cria uma instância de um objeto;
o cliente que requisitou o pedido, executa operações no objeto instanciado; e
em algum momento posterior, o cliente remove a instância do objeto.
Os Serviços Web não possuem um ciclo de vida com tais características: objetos, referências
e fábricas. Os Serviços Web não fornecem nenhuma facilidade para manter estado na computação
distribuída. Também não é possível com os Serviços Web definir relações entre as invocações
realizadas a um serviço ou a serviços relacionados (DE MELLO et al., 2006). Segundo Coulouris,
Dollimore e Kindberg (2007), como os Serviços Web não podem ser instanciados torna-se
desnecessário a coleta de lixo e a referência a objetos remotos.
Conforme Coulouris (2007), um Serviço Web é ativado pelo acesso a URL (Uniform
Resource Locator) no qual este se encontra. A URL é uma referência persistente permitindo que o
24
serviço esteja sempre disponível naquela URL enquanto o serviço ou servidor existir. Um Serviço
Web pode funcionar continuamente ou ser ativado sob demanda.
Ambientes como uma rede local são caracterizados pela homogeneidade de plataforma e por
possuírem um tempo de latência conhecido. Segundo Vogels (2003), tal tipo de ambiente é ideal
para a tecnologia de objetos distribuídos, visto que é uma tecnologia madura e, dentro de tal
ambiente, bem robusta. Em ambientes como a Internet, em que a interoperabilidade e o suporte para
plataformas e redes heterogêneas são essenciais, os Serviços Web demonstram ser os mais
adequados.
Segundo Coulouris, Dollimore e Kindberg (2007), para utilizar os Serviços Web, não se faz
necessário qualquer aplicativo adicional no servidor ou no cliente, basta que a linguagem de
programação dê suporte ao XML e ao HTTP. Estas características definem os Serviços Web como
auto-contidos e auto-descritivos, já que tanto cliente quanto servidor só precisam se preocupar com
o formato e com o conteúdo das mensagens. Nos servidores, pode-se aproveitar a estrutura
existente, utilizando os servidores web para gerenciar os Serviços Web.
Para Vogels (2003), os Serviços Web são compostos por quatro elementos:
serviço: é um componente de software capaz de processar um documento XML
recebido através de uma combinação de protocolos de transporte e de aplicação. O
serviço não está preocupado em como o componente está construído, quais técnicas
de orientação a objeto foram utilizadas, se é um processo standalone ou se é parte da
Web ou de um servidor de aplicação. O único requisito necessário para este
componente é o de ser capaz de processar documentos XML bem definidos;
documento XML: este documento é o componente chave para os Serviços Web,
porque contém todas as informações específicas da aplicação que o cliente enviou
para ser processada pelo Serviço Web;
endereço: combinação entre protocolo e endereço de rede que um cliente usa para
acessar o serviço; e
envelope: este componente é considerado opcional, porém este fornece um excelente
mecanismo para gerenciar as mensagens. O envelope pode encapsular a mensagem,
25
possibilitando que o documento XML que será processado fique separado das outras
informações enviadas na mensagem entre as aplicações.
Para descrever um Serviço Web, uma interface WSDL (Web Service Description Language)
(W3C, 2001; W3C, 2007a) deve ser criada. Uma vez criada a interface WSDL, o Serviço Web deve
ser publicado no diretório de registro de serviços, conforme ilustrado no passo 1 da Figura 2. Um
Serviço Web é publicado através de um registro UDDI (Universal Description, Discovery and
Integration) (OASIS, 2004a), o qual define uma forma padronizada para publicação e descoberta de
serviços dentro da arquitetura orientada a serviço (SOA).
Após o serviço ter sido publicado é possível acessá-lo. O cliente primeiramente pesquisa o
Serviço Web que deseja acessar no diretório UDDI, (ver passo 2); é neste diretório que ficam
armazenados todos os serviços publicados, sendo que os registros UDDI são identificados de forma
única. O retorno desta consulta é a WSDL do serviço, conforme passo 3 da Figura 2. De posse da
WSDL do serviço, o cliente consegue invocar as operações desejadas, conforme o passo 4.
Figura 2 - Colaboração típica na Arquitetura dos Serviços Web.
Fonte: De Mello et al. (2006).
Uma descrição mais detalhada da linguagem WSDL, do protocolo SOAP e do UDDI será
apresentada nas seções a seguir.
2.2.1 WSDL
Segundo Weerawarana et al. (2005), a primeira versão da WSDL (Web Services Description
Language) foi lançada em setembro de 2000, a qual era uma combinação de duas linguagens de
descrição, a NASSL (Network Application Service Specification Language) da IBM e a SDL
(Service Description Language) da Microsoft. Posteriormente, a WSDL foi submetida a W3C para
padronização e a versão 1.1 foi publicada em 2001 (W3C, 2001). Atualmente, a W3C já finalizou a
26
versão 2.0 da WSDL (W3C, 2007a), que tornam esta linguagem menos expressiva, contudo mais
fácil de ser utilizada. A versão da WSDL abordada neste trabalho é a versão 1.1, que é o padrão de
fato, amplamente suportado pelas mais diversas ferramentas de desenvolvimento de Serviços Web.
Conforme W3C (2001), a WSDL é uma gramática em XML, extensível, utilizada para
especificar as interfaces de Serviços Web, ou seja, como acessar o serviço. A interface WSDL é
independente de linguagem, plataforma e arquitetura de máquina, pois o mesmo é um documento
XML. A WSDL é utilizada para descrever os Serviços Web; possui todas as operações disponíveis,
o formato da mensagem a ser enviada para o serviço e qual será o retorno para o consumidor do
serviço. Os tipos de dados estão especificados junto ao formato das mensagens. A WSDL necessita
de um poderoso sistema para descrever o formato das mensagens, suportando o XML Schemas
(W3C, 2004b), como sistema padrão.
Segundo a W3C (2001), o elemento é o elemento raiz de um documento
WSDL, este elemento pode ser dividido logicamente em duas partes, conforme a Figura 3:
abstrata: descreve as mensagens trocadas entre o Serviço Web e os clientes, sendo
que as mensagens são descritas independentemente dos formatos; e
concreta: vincula uma mensagem com um protocolo de transporte e os detalhes de
formato.
Figura 3 - Estrutura de um documento WSDL
Fonte: Weerawarana et al. (2005).
27
Uma WSDL é composta pelos seguintes elementos (W3C, 2001):
portType: define, de forma abstrata, as operações e o que cada operação requer, com
suas entradas e saídas para uma determinada mensagem;
o operation: define, abstratamente, uma operação suportada pelo serviço.
Seguem um desses padrões:
one-way: o serviço recebe uma mensagem do cliente, porém o serviço
não produz nenhuma resposta;
request-response: o serviço recebe uma mensagem do cliente e
produz uma mensagem de resposta;
solicit-response: o serviço envia uma mensagem e obtém uma
mensagem de resposta; e
notification: o serviço envia uma mensagem para o cliente e não
recebe nenhuma resposta.
message: define, de forma abstrata, as mensagens que serão trocadas. A mensagem
consiste de partes lógicas, cada uma associada com a definição dos tipos;
types: provê a definição dos tipos de dados, utilizando XML Schemas (XSD), ou
algum outro sistema de definição de tipos, utilizados nas trocas de mensagens;
binding: especifica concretamente o protocolo e o formato dos dados para as
operações e mensagens definidas em um portType particular;
service: declara o endereço das portas para os binding. Ou seja, indica onde
encontrar um serviço usando sua porta; e
o port: especifica uma combinação entre o endereço e o binding, definindo um
endereço único para acessar o serviço.
28
2.2.2 SOAP
Segundo Weerawarana et al. (2005), o protocolo SOAP foi projetado para permitir
interações assíncronas entre cliente e servidor. O SOAP define um esquema XML para representar
as requisições e respostas. Originalmente, era baseado apenas no protocolo HTTP, mas na versão
1.2 foi adicionado o suporte aos protocolos SMTP, TCP ou UDP. Segundo Coulouris, Dollimore e
Kindberg (2007), o protocolo SOAP é uma extensão do XML-RPC da Userland.
Segundo De Mello et al. (2006), a utilização do SOAP sobre o protocolo HTTP se tornou
comum nas implementações de Serviços Web, devido as facilidades proporcionadas pelo HTTP.
Destacam-se: a infra-estrutura já existente dos servidores HTTP e a facilidade em atravessar os
limites de segurança impostos pelos firewalls.
Segundo Coulouris, Dollimore e Kindberg (2007), a especificação do protocolo SOAP
declara:
como o XML deve ser utilizado para representar o conteúdo de mensagens individuais;
como duas mensagens podem ser combinadas a fim de formar um padrão de requisição e
resposta;
define regras de como os destinatários das mensagens devem processar os elementos
XML; e
como os protocolos HTTP e SMTP devem ser usados para comunicar mensagens SOAP.
Conforme De Mello et al. (2006), e como apresenta a Figura 4, a mensagem SOAP é um
documento XML que define um envelope, o qual é o elemento raiz do documento. O envelope
SOAP contém as declarações dos espaços de nome a serem utilizados. O envelope pode ser
composto pelo header (opcional) e pelo body (obrigatório).
29
Figura 4 - Mensagem SOAP.
Fonte: Cerami (2002).
O elemento header é opcional e contém informações de como a mensagem deve ser
processada, definições de roteamento das mensagens, asserções de autenticação e autorização, entre
outras. O elemento header geralmente é utilizado pelos nós intermediários. Por sua vez, o elemento
body é obrigatório e contém a mensagem como um todo. Este elemento pode ser composto por
qualquer tipo de informação representável em XML. O elemento body ainda pode conter um
elemento fault para transportar informações sobre as mensagens de erro que possam ocorrer durante
o processamento da mensagem (DE MELLO et al., 2006).
Segundo Coulouris, Dollimore e Kindberg (2007), as mensagens SOAP são independentes
do tipo de transporte utilizado, pois o envelope não possui nenhuma referência ao endereço de
destino. Além disso, a especificação também define um conjunto de regras para o processamento de
mensagens SOAP por serviços, ou nós intermediários, os quais uma mensagem SOAP passa antes
de ser processada pelo destinatário final, conforme ilustrado na Figura 5. O atributo papel é
utilizado para especificar se todos os nós intermediários, nenhum destes ou se apenas o destinatário
final deve processar o elemento.
Figura 5 - Processamento Multi-Ponto de uma Mensagem SOAP
Fonte: Weerawarana et al. (2005).
30
2.2.3 UDDI
Conforme definido em OASIS (2004a), os Serviços Web são mais significantes apenas se os
potenciais clientes conseguem localizar as informações necessárias para executar o serviço. UDDI é
a definição de um conjunto de serviços, os quais suportam a descrição e descoberta de negócios,
organizações e outros provedores de Serviços Web, disponibilizando os Serviços Web e suas
interfaces, possibilitando assim o acesso a estes serviços. UDDI é baseado em um conjunto de
padrões como: HTTP, XML, XML Schema e SOAP e fornece interoperabilidade e a arquitetura
fundamental para softwares baseados em Serviços Web. Os dados e metadados dos Serviços Web
são armazenados em diretórios UDDI (UDDI registry), associando a cada estrutura de dados, um
identificador único, denominado UDDI key, criado de acordo com regras de classificação
especificadas por cada organização. Tal classificação permite aos consumidores realizarem
consultas mais refinadas, permitindo, por exemplo, buscar por provedores que forneçam
determinado serviço dentro de uma localização geográfica específica.
Conforme OASIS (2004a), os dados são armazenados no diretório UDDI em quatro
estruturas:
businessEntity: descreve uma organização provedora de serviços Web. Contêm informações
não-técnicas, como nomes, informações para contato e informação de classificação;
businessServices: descreve um conjunto de serviços Web relacionados, oferecidos pela
mesma organização;
bingingTemplate: contém o endereço de uma instância do Serviço Web e referência para a
descrição técnica do serviço; e
tModel: descreve um modelo técnico que representam um conceito reutilizável, tais como
tipo do Serviço Web, ou um protocolo utilizado pelos Serviços Web.
A especificação UDDI fornece uma API para pesquisar serviços com base em dois
conjuntos de operações de consulta (WEERAWARANA et al., 2005):
conjunto de operações que recuperam uma entidade a partir de uma chave correspondente
(get_BusinessDetail,get_ServiceDetail, get_bindingDetail e get_tModelDetail); e
31
conjunto de operações que recuperam as entidades que correspondem a um conjunto de
critérios (find_business, find_service, find_binding e find_tModel).
2.3 Composição de Serviços Web
Segundo Weerawarana et al. (2005), embora diversas metodologias de composição de
componentes de software e mesmo de processos de negócio já tenham sido elaborados ao longo dos
anos e o assunto seja relativamente bem compreendido e estudado, a composição de Serviços Web
exige uma nova abordagem que possibilite um fraco acoplamento, mudanças freqüentes, alta
disponibilidade, qualidade de serviço, etc. Neste ambiente, muitos requisitos são identificados para
o modelo de composição (WEERAWARANA et al., 2005 apud CARPES, 2008, p.16):
a) integração flexível: o modelo de composição precisa ser rico suficiente para modelar cenários
de negócios no qual é possível integrar diversos parceiros de forma flexível. Porém, o mais
importante é fornecer uma maneira que permita a rápida adaptação deste processo de negócio;
b) composição recursiva: a fim de prover escalabilidade e o reuso da lógica de negócio é
fundamental tornar o processo de negócio passível de composição. Portanto, é necessário
disponibilizar o processo de negócio como um Serviço Web padrão, ou seja, disponibilizar a sua
interface WSDL, possibilitando que este possa ser agregado em outras composições e assim
sucessivamente;
c) separação dos conceitos ortogonais: em um framework para composição de Serviços Web, a
lógica dos processos de negócio precisa ser desacoplada dos mecanismos de suporte, como a
infra-estrutura de segurança, de qualidade de serviço e de coordenação de transações. Os
detalhes destes aspectos ortogonais à composição devem ser anexados de forma transparente em
diferentes partes da definição do processo, por meio de mecanismos como a WS-Policy (W3C,
2007b);
d) modelo de ciclo de vida baseado em conversações longas: em um processo de negócio deve
existir uma definição clara do gerenciamento do ciclo de vida, a qual deve gerenciar múltiplas
conversações longas com os serviços que este está interagindo; e
e) recuperabilidade: processos de negócio, especialmente os de longa duração, precisam prover
mecanismos para captura e tratamento de falhas quando erros ocorrerem durante a execução do
processo.
32
Uma das principais características dos Serviços Web é a facilidade de composição,
tornando-os uma tecnologia interessante. Conforme Charfi e Mezini (2005), a composição de
Serviços Web visa combinar serviços de diferentes provedores a fim de criar um Serviço Web mais
sofisticado e com maior valor agregado. Segundo Milanovic e Malek (2004), desenvolvedores e
usuários podem solucionar problemas complexos a partir da combinação de serviços básicos, em
uma ordem conveniente à solução do problema. A composição de serviços acelera o
desenvolvimento de aplicações e permite a reutilização de serviços, diminuindo tempo e custo para
o desenvolvimento de processos de negócio (MILANOVIC & MALEK, 2004).
Conforme Peltz (2003), existem duas formas de composição de processos de negócios a
partir dos Serviços Web, a orquestração e a coreografia. A orquestração apresenta um processo de
negócios executável, permitindo invocar vários Serviços Web em uma determinada seqüência
lógica para atingir um determinado resultado. Já a coreografia apresenta uma forma mais
colaborativa e que permite que cada parte envolvida descreva sua participação através das
interações. Na Figura 6, tem-se uma representação gráfica da orquestração e da coreografia.
Figura 6 - Composição de Serviços Web.
Fonte: Peltz (2003).
A orquestração de Serviços Web cria um novo serviço através da composição de dois ou
mais Serviços Web ou até mesmo de outras orquestrações. Os serviços que fazem parte de uma
orquestração podem ser serviços internos ou externos à organização. O serviço resultante de uma
orquestração é conhecido como serviço orquestrado, o qual deve ser executado em um motor de
orquestração (PELTZ, 2003).
33
Segundo Juric (2006), a coreografia não possui um coordenador central. Cada Serviço Web
presente em uma coreografia sabe exatamente quando executar a operação e quem pode interagir
com este. A coreografia é um esforço colaborativo focado nas trocas de mensagens em um processo
de negócio público. Diferentemente da orquestração em que os participantes não precisam saber que
estão fazendo parte de uma orquestração, na coreografia todos os participantes devem estar cientes
do processo de negócio, das operações que executam, das trocas de mensagens e do tempo em que
as trocas de mensagem devem acontecer.
Ao longo dos anos foram desenvolvidas algumas linguagens para representar as
composições de Serviços web. Segundo Milanovic e Malek (2004), fazem parte da primeira geração
de linguagens de composição, a IBM s Web Service Flow Language (WSFL), desenvolvida pela
IBM, e a Web Services Choreography Interface (WSCI), desenvolvida pela BEA Systems. A
segunda geração de linguagem de composição trouxe a linguagem BPEL4WS, ou simplesmente
BPEL, a qual combina as especificações WSCI e WSFL com a especificação XLANG da
Microsoft. A linguagem BPEL4WS foi padronizada pela OASIS e atualmente é conhecida como
WS-BPEL, a qual se encontra na revisão 2.0 (OASIS, 2007).
Neste trabalho, a orquestração de Serviços Web é utilizada para realizar a composição de
processos de negócios executáveis e a WS-BPEL é a linguagem utilizada para descrever os serviços
orquestrados. Uma descrição mais detalhada sobre orquestração de Serviços Web e sobre a
linguagem WS-BPEL será apresentada nas seções a seguir.
2.3.1 Orquestração de Serviços Web
A orquestração é a forma mais simples de composição e a mais bem estudada. Na
orquestração, o controle sobre a composição é realizado pelo ponto de vista de apenas uma parte
envolvida (PELTZ, 2003). As outras partes podem nem sequer sabem que estão participando de
uma composição. O controlador da composição (motor de orquestração) realiza as invocações aos
provedores de serviços e é visto por estes como um cliente qualquer.
Conforme Papazoglou et al. (2006), a orquestração descreve como os serviços interagem
uns com os outros no nível de mensagem, incluindo a lógica de negócio e a ordem de execução das
interações sobre a perspectiva e o controle de um simples endpoint.
34
Conforme consta em Peltz (2003), a orquestração de Serviços Web deve ser dinâmica,
flexível e adaptável para permitir realizar facilmente as mudanças necessárias no processo de
negócio. A separação entre a lógica do processo e os Serviços Web promove esta flexibilidade. Os
projetistas de processos podem compor serviços de alto nível a partir dos processos orquestrados
existentes, bastando expor estes processos através de suas próprias interfaces, ou seja, permitindo a
recursividade em Serviços Web.
2.3.2 WS-BPEL
Conforme Charfi e Menzine (2005), o padrão mais popular e de grande aceitação na
academia e na indústria é a linguagem para execução de processos de negócios de Serviços Web
(WS-BPEL - Web Services Business Process Execution Language) (OASIS, 2007).
A primeira versão da especificação foi publicada em 2002, sendo chamada de BPEL4WS.
Em 2003, foi lançada a versão 1.1 (ANDREWS et al., 2003), a qual posteriormente foi submetida à
OASIS para padronização. Em maio de 2007, a OASIS lançou a especificação do WS-BPEL 2.0
(OASIS, 2007).
A WS-BPEL define o conjunto de atividades participantes da orquestração, especificando
padrões de fluxo de controle e de dados. O resultado de uma composição é sempre uma nova
WSDL, formando desta forma um Serviço Web composto. A WS-BPEL define os pontos de acesso
ao serviço e também define papéis e as interações entre estes papéis. Os papéis podem ser utilizados
como mecanismo de controle de acesso a certos serviços. A WS-BPEL provê suporte aos diversos
gêneros de fluxos (seqüencial, paralelo, condicional, entre outros), os quais permitem a construção
de um processo de negócio, além de fornecer facilidades para o tratamento robusto de exceções,
suporte para transações e conversações de longa duração (OASIS, 2007).
A especificação de um processo WS-BPEL é divida em duas partes: uma parte declara os
serviços envolvidos, as variáveis, tratadores de falhas, tratadores de eventos e outros recursos a
serem usados no contexto do processo; a outra parte declara o workflow por meio de atividades
(OASIS, 2007).
Segundo Weerawarana et al. (2005), na especificação WS-BPEL os processos podem ser
abstratos ou executáveis. Um processo abstrato é utilizado para descrever os padrões observáveis
de troca de mensagem, permitindo fornecer uma visão para os parceiros de negócio sem precisar
35
expor a lógica interna do processo de negócio. Para um parceiro de negócio saber como interagir
com o processo de negócio, basta expor o processo abstrato. Pode-se dizer que um processo abstrato
é uma projeção de um processo executável. Segundo Juric (2006), um processo executável
específica os detalhes exatos do processo de negócio e pode ser executado por um motor BPEL.
Sendo uma linguagem de workflow, no cerne da WS-BPEL, estão as atividades e os fluxos
que as interconectam. As atividades são classificadas em básicas e estruturadas. As atividades
básicas envolvem, de um modo geral, a interação com serviços externos ao processo em si, ou a
manipulação de variáveis do processo. Conforme OASIS (2007), estas são as atividades básicas:
assign: atribui o valor a uma variável;
throw: usada quando um processo precisa informar um erro;
wait: serve para especificar um tempo de espera;
empty: a atividade não faz nada;
extensionActivity: permite especificar novas atividades que não estão na
especificação;
exit: usada para encerrar imediatamente o processo; e
rethrow: utilizada para retornar um erro.
Conforme a OASIS (2007), as atividades estruturadas estabelecem um ordenamento para as
atividades nelas aninhadas, ou seja, são estas que efetivamente gerenciam o fluxo global de um
dado processo. As atividades estruturadas são as seguintes:
sequence: irá executar as atividades seqüencialmente;
if: permite a escolha de opções conforme uma condição;
while: executa uma atividade enquanto uma condição for verdadeira;
repeatUntil: repete as operações enquanto a condição for verdadeira;
36
forEach: irá executar o que estiver dentro de escopo até que a condição final seja
atendida;
pick: cada atividade está associada a um evento; quando o evento ocorre, a atividade
é executada; e
flow: agrupa atividades a serem executadas paralelamente.
Existem ainda as atividades que realizam as trocas de mensagem entre os serviços
participantes da orquestração. Entre estas atividades estão: invoke (invoca um serviço externo),
receive (recebe o pedido de um cliente do Serviço) e reply (retorna os dados para o cliente).
Processos BPEL podem ser executados em qualquer motor de orquestração que esteja em
conformidade com o padrão WS-BPEL. O motor orquestra as invocações dos serviços Web
parceiros, de acordo com a especificação do processo (OASIS, 2007).
Segundo Weerawarana et al. (2005), é possível criar um controle de fluxo a partir da
combinação de atividades estruturadas com pontos de sincronização. Apenas dentro da atividade
é possível definir pontos de sincronização na execução das atividades. Para tanto, dentro de
uma atividade deve ser estabelecidos diversos links, que servirão para conectar atividades
ordenadas entre si. As atividades aninhadas num podem ser definidas como a origem ou
destino de vários links. Adicionalmente, pode-se estabelecer condições de transição (junto às
origens), ou de união (junto aos destinos de mais de um link).
Outros conceitos importantes para a BPEL são as variables e os partnerLinks. Conforme
Juric (2006), as variáveis especificam as informações trocadas nos fluxos de mensagens entre o
processo e seus parceiros, ou ainda as informações manipuladas internamente pelo próprio
processo. É através da manipulação das variáveis que o processo mantém o estado entre as várias
requisições do processo de negócio, efetua a persistência de dados entre as diversas requisições de
serviços participantes da execução de um processo BPEL. Por outro lado, os partnerLinks servem
exatamente para definir as relações de parceria entre o processo BPEL e os diversos Serviços Web.
Cada partnerLink possui um nome e um partnerLinkType. Este descreve a relação entre dois
Serviços Web por meio da definição dos papéis de cada serviço envolvido na relação, cada papel
sendo associado a um portType complementar. A definição de um partnerLinkType pode estar
dentro da WSDL do Serviço Web que provê as operações usadas.
37
Segundo Weerawarana et al. (2005), todo processo tem uma atividade inicial e uma
atividade final explícitas. Cada processo BPEL pode ser instanciado inúmeras vezes, sendo que
cada instância mantêm o estado particular de sua execução com valores particulares para suas
variáveis de estado. Uma atividade é capaz de criar uma instância, ou seja, iniciar a execução de um
processo quando possui o atributo createInstance assinalado. Logo, uma instância pode ser criada
quando um cliente executa uma atividade assinalada para criar uma instância. A Figura 7 apresenta
um esquema de um processo, o qual utiliza-se de vários elementos BPEL. Na Figura 7, passo 1, o
processo de negócio será iniciado quando o cliente invocar o portType do processo
(createInstance). A partir deste momento, o processo irá gerenciar o fluxo de negócio e o controle
de dados e também interagir com outros Serviços Web, através das atividades ,
e , conforme ilustrado na Figura 7, passo 2. Toda interação entre o processo de negócio e
um Serviço Web é realizada através de um portType (do lado do processo de negócio) e um
partnerLink (do lado do Serviço Web) (passo 3, Figura 7). Por fim, o processo enviará uma resposta
para o cliente (passo 4).
Figura 7 - Processo definido através da WS-BPEL
Fonte: Juric (2006).
Visando garantir a robustez da BPEL frente a erros ou a transações mal sucedidas, existem
construções específicas para tratar os erros ocorridos durante a execução do processo BPEL. Para
tanto, adota-se o conceito de escopo como sendo um contexto em que uma ou todas as atividades
são executadas com sucesso, ou fracassam e devem ser compensadas nas partes em que foram bem
38
sucedidas. Assim, para cada escopo deve-se adicionar tratadores de exceções e/ou um compensador
para os escopos aninhados. Um escopo de um tratador de exceção é iniciado no momento em que a
primeira exceção ocorre, a partir deste momento este é quem executa as atividades de compensação
(WEERAWARANA et al., 2005).
Conforme Weerawarana et al. (2005), este recurso é fundamental porque em muitos
processos de negócio não é possível completar todos os trabalhos necessários com apenas uma
transação atômica simples. Em transações de longa duração, comuns em diversos cenários nos quais
são utilizados os Serviços Web, utilizar apenas uma transação atômica implicaria em restrições
extremas de concorrência de acesso aos recursos utilizados por estes serviços. De modo que, caso a
transação não seja bem sucedida, o equivalente ao rollback das transações atômicas é obtido através
da compensação das atividades bem sucedidas já realizadas.
Segundo Charfi e Menzine (2005), a linguagem BPEL não possui recursos para expressar as
capacidades e requisitos de segurança do processo ou de uma atividade. Isto não se caracteriza
como uma limitação da especificação BPEL uma vez que os requisitos não funcionais podem ser
adicionados por outras especificações, possibilitando uma melhor separação de responsabilidades e
permitindo uma composição mais modular. A capacidade de especificar requisitos de segurança na
linguagem BPEL tornaria esta linguagem muito complexa e de difícil aprendizagem.
2.4 Composição Dinâmica de Serviços Web
A composição dinâmica de serviços apresenta desafios interessantes, já que a localização,
seleção e composição de serviços existentes, para satisfazer necessidades específicas de um novo
serviço composto, requerem mecanismos sofisticados de descrição, sincronização, coordenação e
monitoramento (KELLER, 2002). A composição dinâmica de Serviços Web visa ligar,
automaticamente, diferentes serviços para atingir um objetivo complexo, tendo como base,
normalmente, dados semânticos adicionais que descrevem os Serviços Web e que podem ser usados
para geração dinâmica do processo de negócios (BERNERS-LEE, HENDLER & LASSILA, 2001)
e que podem ser usados para geração dinâmica da seqüência de orquestração (WU et al., 2003).
Atualmente, o uso da Web semântica na composição de Serviços Web é um tópico de
pesquisa muito relevante devido ao seu potencial em alcançar uma integração de aplicações que seja
dinâmica, escalável e com custo efetivo (ECOLEAD, 2005; WU et al., 2003). Com a Web
semântica, processos podem fazer interpretações sobre os recursos disponíveis no ambiente de
39
forma não ambígua. Tais interpretações são possíveis através do emprego de linguagens de
descrições e técnicas de inferências baseadas em ontologias.
Durante a fase de identificação dos parceiros que irão contribuir com o processo de
negócios, o papel dos localizadores de serviços é designar um Serviço Web apropriado para cada
atividade. Segundo Carminati, Ferrari e Hung (2005), para que este processo de seleção seja
dinâmico, além de explorar os registros UDDI, este pode ser executado por meio de descritores
semânticos de Serviços Web, como por exemplo, a linguagem OWL (Web Ontology language) que
fornece competências para anotar dados semânticos aos Serviços Web.
Uma tese de mestrado realizada na Universidade Federal do Rio de Janeiro, propõe uma
ferramenta para composição dinâmica de processos de negócio, chamada WebComposer (COSTA,
PIRES & MATTOSO, 2004). Esta ferramenta tem por objetivo compor dinamicamente processos
BPEL e executá-los. Neste trabalho foi utilizada a linguagem OWL-S para descrever os dados
semânticos dos serviços. O WebComposer realiza inferência sobre as ontologias dos serviços para
selecionar os participantes que irão compor o processo BPEL.
2.4.1 OWL-S
Conforme Martin et al. (2004), OWL (Web Ontology language) é uma linguagem para
definição e instanciação de ontologias Web. Foi desenvolvida baseando-se nas linguagens DAML
(DARPA Agent Markup Language) e OIL (Ontology Inference Layer) e construída em cima da
arquitetura XML e RDF. A OWL foi proposta como padrão pelo W3C, agregando diversos pontos
positivos das linguagens anteriores, sendo muito utilizada pela Web Semântica.
Com base na OWL, um grupo de pesquisa composto por pesquisadores de diversas
organizações propôs a OWL-S, originalmente chamada de DAML-S. Esta linguagem é uma
recomendação da W3C e se encontra na sua versão 1.1. OWL-S é uma gramática XML que visa
automatizar algumas tarefas no ambiente dos Serviços Web, como a descoberta automática de
Serviços Web, execução, composição e monitoração de execução. OWL-S é uma linguagem de
ontologia que possibilita especificar dados semânticos nas entradas, nas saídas, nos parâmetros, nas
pré-condições e nos resultados dos Serviços Web (MARTIN et al., 2004).
A especificação OWL-S suporta serviços simples e serviços complexos (compostos),
contudo foram os serviços complexos que motivaram a maior parte dos elementos da ontologia. A
40
seguir é apresentada uma visão geral das tarefas que a linguagem OWL-S possibilita (MARTIN et
al., 2004):
a. descoberta automática de Serviços Web: é um processo automático para localizar os
Serviços Web que provêem uma capacidade particular, a partir de informações do cliente;
b. invocação automática de Serviços Web: permite a invocação automática de um Serviço
Web por um programa computacional ou agente, simplesmente a partir de informações
declarativas do serviço, não sendo necessário pré-estabelecer um serviço; e
c. composição e interoperação automática de Serviços Web: envolve a seleção automática,
composição e interoperação entre os Serviços Web com o objetivo de solucionar tarefas
complexas, a partir de descrições de alto nível do objetivo.
A estrutura da linguagem OWL-S é motivada pela necessidade de prover três tipos essenciais
de conhecimento a respeito dos serviços, cada qual caracterizado por uma pergunta e sua respectiva
resposta (MARTIN et al., 2004):
a. O que o serviço fornece para um cliente potencial?
utilizado para anunciar um serviço
através de um profile; representado pela classe ServiceProfile. Esta classe possui atributos
para descrever o serviço, especificar o nome do serviço, além de atributos atrelados a
execução do serviço, tais como: parâmetros, entradas, saídas, pré-condições e resultados;
b. Como o serviço é utilizado?
expõe meios detalhados de como um cliente consegue
interagir com o serviço, pode ser visto como um processo. Tais informações são
representadas pela classe ServiceModel. Se tratando de um serviço complexo são utilizadas
estruturas de controle para decompor em outros serviços, como: sequence, if-then-else,
repeat-until, repeat-while, etc; e
c. Como alguém interage com o serviço?
através do grouping. Grouping apresenta os
detalhes necessários sobre os protocolos de transporte, formatos das mensagens, serialização
e endereçamento. É representado pela classe ServiceGrouping. Esta classe provê atributos
para especificar a versão da WSDL utilizada, a URI da WSDL que está sendo representada
por este grouping, a operação, bem como informações de entrada e de saída da operação.
41
Cada instância da classe Service, é apresentada por um ServiceProfile, o qual é descrito por
um ServiceModel e suportado por um ServiceGrouping. Cada uma destas três perspectivas provêm
as informações essenciais a respeito de um serviço (MARTIN et al., 2004).
A especificação OWL-S deve ser utilizada em conjunto com a especificação WSDL. Na
interface OWL, deve-se utilizar a classe ServiceGrouping para fazer o vínculo com a interface
WSDL, especificando os seus atributos. Já na WSDL, devem ser utilizados os seguintes atributos:
owl-s-parameter representa o nome do objeto de entrada ou saída no documento OWL-S; o atributo
encodingStyle é utilizado no elemento binding da WSDL quando a mensagem utiliza tipos OWL; e
owl-s-process é utilizado para especificar o nome do processo OWL (MARTIN et al., 2004).
2.5 Conceitos de Segurança em Sistemas Computacionais
O conceito de segurança em um sistema computacional é identificado como a capacidade de
assegurar a prevenção ao acesso e à manipulação ilegítima das informações, ou ainda, de evitar a
interferência indevida na sua operação normal (ISO/IEC, 1999).
Segundo Stallings (2005), a segurança de informação tem sofrido duas importantes
mudanças nas últimas décadas. Antes do uso extensivo de equipamentos de processamento a
segurança das informações era feita por meios físicos e administrativos. Com a introdução do
computador, surgiu a necessidade de ferramentas automatizadas para proteger as informações,
especialmente para sistema