Azure Services Platform : falando sobre "Geneva" e a integração entre a nuvem e o enterprise.
Olá pessoal, tudo certo?
Uma pergunta que surge sobre o uso do Windows Azure é quando iremos para o ambiente enterprise e quando iremos para a nuvem, isto é, quais aplicações são indicadas para o enterprise e quais podem ser colocadas na nuvem.
Para essa análise podemos avaliar dois aspectos interessantes: controle e economia de escala.
Já falamos um pouco sobre essa visão aqui no blog, veja aqui.
Pensando em controle vs. economia de escala, temos 3 grandes participantes em nossa composição de TI: o ambiente on-premise (onde participa o hardware de nossa empresa, local), o ambiente de hosting (baseado em provedores locais, onde podemos inclusive fazer o deploy de servidores colocados) e o ambiente elástico da nuvem, the cloud (onde contratamos por demanda capacidades de computação, provisionando de forma dinâmica e acessando esses recursos através de tecnologias de internet, SOAP, REST, etc.).
Porém, mesmo após nossa decisão sobre a melhor composição entre os diferentes ambientes de TI, vamos conviver com questões de integração entre os ambientes. Aplicações presentes no on-premise deverão ser integradas com aplicações e serviços em hoster's locais ou mesmo na nuvem. Como tratar aspectos de controle de acesso, autenticação e autorização entre esses ambientes?
Pensando na integração com a nuvem, o Windows Azure oferece um mecanismos de autenticação e autorização chamado "Geneva" .
O que é o "Geneva"?
- O "Geneva" é um modelo de autenticação/autorização que trabalha baseado em declarações, o chamado Claim Based Authorization/Claim Based Authentication. O "Geneva" permite a integração de aplicações do enterprise com a nuvem, de uma forma transparente, fornecendo ainda interfaces de programação que permitem a manipulação dos atributos das declarações tanto no enterprise como na nuvem.
O modelo de Claims-Based Access previsto para o Azure envolve vários componentes no ambiente enterprise e cloud, como vemos na arquitetura a seguir:
O que é uma declaração? (Claim)
- Uma declaração é uma informação que pode ser associada a uma entidade no sistema. Em geral, essa entidade é um usuário, mas também pode ser um serviço ou recurso qualquer. Uma declaração consiste de três informações: o tipo da declaração, seu conteúdo e se ela descreve a entidade ou um recurso do objeto.
O que é o "Geneva Server"?
- A partir do desenho acima, o "Geneva Server" fica instalado no ambiente enterprise e fornece um serviço de tokens de segurança, um STS - Security Token Service. Esse serviço suporta o padrão SAML 2.0 (Federated Claims-Based Application), o que permite uma maior flexibilidade na escolha do método de autenticação local para os usuários e aplicações. Ao mesmo tempo, o "Geneva Server" é o componente do enterprise que mantém uma relação de confiança com a nuvem, tornando a autenticação transparente para o usuário junto às aplicações e serviços publicados no Windows Azure.
O que é o Microsoft Services Connector?
- No ambiente enterprise também é possível utilizar o "Microsoft Services Connector", um conector que permite a autorização de usuários junto ao Azure, sem todo o conjunto de serviços do Geneva Server. De fato, o Services Connector é um pacote gratuíto, que já está disponível através do link abaixo:
Microsoft Services Connector - Connecting Business to Services
Ref.: https://www.microsoft.com/servicesconnector/
O que é o Federation Gateway?
- No modelo Windows Azure, o Microsoft Federetaion Gateway é uma camada de segurança presente no sistema operacional que permite a integração com o enterprise, falando o protocolo SAML 2.0, sendo baseado em declarações de segurança. O Federation Gateway está acessível para as aplicações instaladas no Azure através do .NET Services Access Control, o que permite a manipulação de declarações e atributos de forma programática. Ainda, o ambiente enterprise conversa com o Federeation Gateway via "Geneva" Server ou via Microsoft Services Connector, como apresentado no desenho de arquitetura acima.
O que é o "Geneva Framework"?
- O "Geneva" Framework, inicialmente chamado de "Zermatt", é o nome código do novo framework Microsoft para a construção de aplicações e serviços baseados em declarações de segurança (claims-based), permitindo a implementação de cenários de federated security. O "Geneva Framework" fornece um conjunto de API's no ambiente enterprise e no ambiente Azure, tornando a autenticação/autorização de forma programática ainda mais flexível para aplicações e serviços.
Como ficaria uma solução envolvendo o "Geneva" para a integração entre o enterprise e a nuvem?
- Uma solução do enteprise pode autenticar usuários localmente, no AD do enterprise, e exportar declarações baseadas em atributos selecionados para a autorização junto a serviçcos publicados na nuvem. Essa integração será feita através do "Geneva" e seus componentes, como apresentado na figura a seguir:
Como sempre, esse post foi apenas uma introdução sobre o assunto.
Resumindo, podemos dizer que o "Geneva" Server implementa um serviço de tokens de segurança (Windows-based STS), o CardSpace "Geneva" oferece um seletor de identidades para clientes Windows, o "Geneva" Framework é uma biblioteca padrão para a criação de aplicações e serviços que suportam segurança por declarações (claims-aware) e finalmente, o Windows Azure oferece o Federation Gateway e o Access Control, que oferecem mecanismos de autenticação/autorização para aplicações na nuvem, de uma forma integrada com o ambiente enterprise.
Alguns links que usei para escrever esse post relaciono a seguir:
Microsoft Code Name “Geneva”
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=1e3c3efc-e980-4895-9095-86e51c1cd9d8&displaylang=en&tm
“Geneva” Team Blog
Ref.: https://blogs.msdn.com/card/default.aspx
Geneva Whitepapers and Datasheet
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=9CA5C685-3172-4D8F-81CB-1A59BDC9F7E3&displaylang=en#filelist
Também, temos algumas sessões gravadas do PDC 2008 no Channel9 que são imperdíveis, confira:
.NET Services: Access Control Service Drilldown
Ref.: https://channel9.msdn.com/pdc2008/BB28/
Identity: "Geneva" Server and Framework Overview
Ref.: https://channel9.msdn.com/pdc2008/BB42/
Identity: "Geneva" Deep Dive
Ref.: https://channel9.msdn.com/pdc2008/BB43/
Identity: Windows CardSpace "Geneva" Under the Hood
Ref.: https://channel9.msdn.com/pdc2008/BB44/
Finalmente, o próprio SAML 2.0 é um assunto bem interessante. Mas vou deixar o tema para nosso amigo Markus :) Confira aqui.
Por enquanto é só! Até o próximo post :)
Waldemir.