O blog da AWS

Virtualização, Proteção e Continuidade de Aplicações Legado

Por Bruno Tonetto, Arquiteto de Soluções da AWS,
Juliana Takeuchi, Arquiteta de Soluções da AWS e
Clerinsom Sant’Ana, Arquiteto de Soluções Principal da AWS

 

Muitas aplicações atualmente em uso nas empresas foram desenvolvidas há vários anos, continuam críticas para o negócio, porém com uma arquitetura imprópria para acesso remoto ou via internet, tanto em termos de segurança, quanto governança e escalabilidade, e uma completa rearquitetura pode ser inviável em termos de custo e tempo. Existe ainda um desafio na distribuição e atualização dessas aplicações para todos os usuários, incluindo colaboradores e terceiros. Na perspectiva de segurança, as organizações se depararam com cada vez mais ataques vindos de estações de trabalho, que uma vez comprometidas podem impactar todos os servidores e armazenamentos de dados, como acontece em ataques ransomware.

As principais perguntas que ouvimos nos nossos clientes são:

  • Como garantir que a estação de trabalho do usuário seja segura e compatível para a hospedagem de uma aplicação cliente/servidor?
  • Como garantir que o usuário utilize a versão apropriada de navegador web para uma aplicação web antiga?
  • Como distribuir e atualizar a aplicação para diferentes estações de trabalho, diferentes sistemas operacionais, muitas vezes completamente fora do controle da empresa?
  • Finalmente, para aplicações muito críticas, como auditar as ações do usuário?

Como forma de responder a essas perguntas, abordamos o problema de maneira diferente, pois entendemos que como boa prática, não devemos levar os binários e dados para o ambiente do usuário, mas apenas entregar a funcionalidade da maneira mais simples e menos intrusiva, ao mesmo tempo que blindamos a aplicação de qualquer exposição a softwares maliciosos ou até intenções maliciosas do próprio usuário. Indo além das preocupações com segurança, buscamos alocar a capacidade de computação adequada a cada aplicação de forma a otimizar a experiência do usuário e os custos do sistema. Como exemplo, para aplicações que requerem renderização 3D é natural que o usuário precise de uma estação com GPU, porém é comum que esse tipo de utilização aconteça em um volume limitado de horas em um mês, e, portanto, devemos ter custos proporcionais ao tempo de utilização ao invés de pagar por equipamentos ociosos.

Apresentaremos uma arquitetura completa para atender a esses casos de uso, cuja principal solução é o Amazon Appstream 2.0.

 

Introdução ao Amazon Appstream 2.0

O Amazon AppStream 2.0 é um serviço totalmente gerenciado de streaming de aplicações, que permite aos usuários o acesso instantâneo às aplicações de desktop, a partir de qualquer lugar e em qualquer dispositivo compatível.

Através do protocolo de streaming do Amazon AppStream 2.0, os usuários conseguem acessar as suas aplicações com uma performance fluída e responsiva, fornecendo uma experiência praticamente igual a de uma aplicação instalada nativamente no dispositivo do usuário. Além disso, o processo de gerenciamento das aplicações também é simplificado, uma vez que o Amazon AppStream 2.0 possibilita centralizá-las na nuvem AWS.

Um outro benefício bastante relevante quando falamos desse serviço é no âmbito de segurança. O Amazon AppStream 2.0 aumenta a segurança no acesso às aplicações, posto que os usuários passam a não acessar mais diretamente a aplicação em si e sim através de uma URL de streaming a partir do navegador WEB ou cliente nativo para Windows, reduzindo também os riscos de vazamento de dados da empresa, já que as aplicações e os dados não ficam armazenados nos computadores dos usuários.

Pensando também no quesito de otimização de custos, ao migrarmos as aplicações de uma empresa dos dispositivos físicos dos seus usuários para a Nuvem AWS, a empresa pode beneficiar-se de uma redução de custos, dado que não há a necessidade de adquirir, provisionar e operar hardware ou infraestrutura. Os usuários podem acessar sob demanda as aplicações virtualizadas na Nuvem AWS, tendo também a flexibilidade de aumentar ou diminuir a escala em minutos, conforme as necessidades de negócio mudem.

Visão de arquitetura para cenários com ADFS

Na visão de arquitetura básica, temos o Amazon AppStream 2.0 configurado para acessar uma aplicação legado utilizando o Active Directory Federation Service (ou ADFS) como provedor de identidade corporativa. Esse cenário é conveniente caso já se utilize ou já exista o conhecimento sobre o ADFS, caso contrário veja a próxima seção com uso do Amazon Cognito. Nesse cenário, conforme numeração do diagrama abaixo:

  1. O usuário acessa uma URL do ADFS que solicita a autenticação com usuário e senha;
  2. Uma vez autenticado, o usuário é redirecionado para uma URL de streaming do Amazon AppStream 2.0;
  3. O Amazon AppStream 2.0 prepara uma instância de máquina virtual para o usuário, inicializando a aplicação legado (no caso de aplicação desktop) ou inicializando uma instância de navegador web pré-configurado para acesso à aplicação legado.

Portanto, tanto para aplicações desktop quanto web, a experiência do usuário final fica simplificada, pois ele simplesmente acessa as funcionalidades da aplicação legado, sem precisar se preocupar com a instalação da aplicação em seu dispositivo ou com a utilização de um navegador web compatível.

 

Figura 1 – Autenticação via ADFS

 

Para o ADFS, pode se utilizar uma implantação on-premises ou na AWS em EC2 como no diagrama acima. O mesmo se aplica ao Active Directory, com a vantagem de já existir o serviço gerenciado AWS Directory Service. Uma vez que os componentes ADFS e AD estejam disponíveis, utilize o artigo sobre habilitação da federação de identidade do Appstream com o ADFS. A partir desse ponto, o Amazon Appstream 2.0 pode ser configurado para virtualização da sua aplicação legado conforme passo a passo da documentação oficial.

 

Visão de arquitetura totalmente gerenciada

Para uma arquitetura maximizando os benefícios dos serviços gerenciados e serverless da AWS, utilizamos uma abordagem baseada no Amazon Cognito, capaz de modernizar o mecanismo de autenticação de quaisquer aplicações legado, através da implementação de funções do AWS Lambda como abstração ao mecanismo de autenticação preexistente. Como ponto de partida para a arquitetura abaixo, utilizamos os artefatos disponíveis no workshop SaaS Portal with Appstream 2.0. Nesse caso, conforme numeração do diagrama abaixo:

  1. O usuário acessa um endereço servido pelo Amazon CloudFront, com uma página de login que basicamente interage com as APIs do Amazon Cognito;
  2. Ao clicar no botão de login, o evento do Amazon Cognito “Pre Authetication Lambda Trigger” dispara um conjunto de funções Lambda para autenticação customizada, que é capaz de autenticar na aplicação legado e deve ser implementada conforme os requisitos dessa aplicação;
    1. No caso do primeiro acesso, pode ser necessário a implementação do Migrate Lambda Trigger responsável por migrar o usuário existente na aplicação legado, para o Cognito User Pool.
  3. Uma vez autenticado, a página faz uma chamada à API para acesso ao Amazon Appstream 2.0, servida pelo Amazon API Gateway que executa uma função Lambda;
  4. A função Lambda utiliza a API do Amazon Appstream 2.0 para gerar a URL de streaming;
  5. Através da URL de streaming, o navegador do usuário faz acesso seguro à virtualização da aplicação legado.

 

Figura 2 – Autenticação via Amazon Cognito

 

Adicionando gravação das ações do usuário

Um benefício adicional da utilização do Amazon Appstream 2.0 é a possibilidade de gravar a tela de uma sessão e armazenar todos os vídeos diretamente no Amazon S3, permitindo posteriormente auditar comportamento dos usuários durante a utilização das aplicações virtualizadas. Elencamos três possíveis benefícios:

  1. Melhoria de segurança para aplicações críticas ou acessos administrativos – Para aplicações que lidam com dados sensíveis, pode ser importante a possibilidade de auditoria para investigação de utilização má intencionada. Além disso, você poderá publicar um cliente RDP para acesso administrativo de suas instâncias EC2, similar ao conceito de Bastion Hosts e substituindo soluções de PAM (Privileged Access Management) quando a função de rastreabilidade dos acessos e auditoria;
  2. Produtividade e melhor experiência dos usuários – Conhecendo detalhadamente a experiência do usuário, é possível detectar eventuais problemas de interface que impactam a produtividade na utilização das aplicações;
  3. Maior velocidade na resolução de problemas – Finalmente, torna possível a investigação da causa de problemas a partir da experiência real do usuário, facilitando a resolução de problemas técnicos.

O processo de captura se dá por meio de scripts que são executados no momento em que a sessão do usuário inicia e ao término da sessão. Para mais informações e acesso ao código dos scripts, acesse o artigo “How to record a video of Amazon AppStream 2.0 streaming sessions”.

 

Conclusões

Com a pandemia e o trabalho remoto, se torna cada vez mais comum a necessidade de acesso aos sistemas através da internet, criando um grande desafio de modernização e segurança. Adicionalmente, a modernização de aplicações legado para acesso através da internet, pode representar um projeto longo, custoso e possivelmente inviável de rearquitetura e reimplementação.

As arquiteturas nesse blog post são uma poderosa alternativa para evitar esse tipo de projeto custoso. Para isso, abordamos dois cenários de utilização do Amazon Appstream 2.0 para virtualização de aplicações legado, além da possibilidade de gravação das ações dos usuários para três possíveis casos de uso. No primeiro cenário, conseguimos adaptar o Amazon Appstream 2.0 ao mecanismo corporativo de SSO via ADFS, enquanto no segundo cenário, optamos por uma abordagem mais cloud native, se beneficiando dos serviços gerenciados e arquitetura serverless da AWS, principalmente do Amazon Cognito e AWS Lambda, permitindo modernizar o mecanismo legado de autenticação.

Por favor, nos conte o que você achou dessas soluções e como elas se aplicam as suas necessidades de modernização e proteção de aplicações legado. Consulte a página do Amazon Appstream 2.0 e Amazon Cognito, além do workshop SaaS Portal with Appstream 2.0.

 


Sobre os autores

Bruno Tonetto é Arquiteto de Soluções da AWS. Ele trabalha com clientes de petróleo e gás da AWS no Brasil, proporcionando orientação técnica para infraestrutura e arquitetura serverless, para ajudá-los a fazer o melhor uso dos serviços da AWS.

 

 

 

 

Juliana Mayumi Takeuchi é Arquiteta de Soluções da AWS e atua auxiliando e apoiando clientes em sua jornada na nuvem.

 

 

 

 

Clerinsom Sant’Ana é Arquiteto de Soluções da AWS com foco em clientes corporativos na área de Mineração, Logística & Transporte, Manufatura e Aeroespacial.