Tutoriais e Documentação

OpenHCL: Entendendo a plataforma aberta da Microsoft para visualização de código.

A Microsoft está criando a infraestrutura virtual segura do Azure em ambiente público, como parte de seus esforços para ampliar a execução confiável.

shutterstock 324149159 cloud computing building blocks abstract sky with polygons and cumulus clouds
Imagem: JonPauling/GettyImages

A virtualização é a tecnologia fundamental por trás dos serviços de computação confidenciais da Microsoft, permitindo o uso seguro de dados criptografados para garantir proteção durante o armazenamento, transferência e operação. A utilização de ambientes virtuais criptografados em hipervisores tradicionais é eficaz, porém restringe as funções do sistema operacional disponíveis em um ambiente de execução seguro.

Expandindo a funcionalidade do hipervisor.

Aqui é onde entra uma nova abordagem à virtualização, conhecida como “paravisor” pela Microsoft. Essa abordagem se baseia no conceito de paravirtualização, que estabelece mais conexões entre o anfitrião e os ambientes virtualizados. Um paravisor requer que o sistema operacional do cliente seja consciente da virtualização, com um conjunto específico de APIs e drivers que podem ser utilizados por essas APIs conforme necessário. Isso permite que o sistema operacional do cliente lide com a computação de forma isolada, enquanto o sistema operacional do host compartilha I/O e outros serviços comuns entre os processos do host e os virtualizados.

Se estiver utilizando os recursos de segurança baseados em virtualização no Windows, estará utilizando uma máquina virtual que oferece suporte à paravirtualização. Isso assegura que as operações seguras tenham acesso prioritário ao hardware e evita possíveis impactos negativos no desempenho, proporcionando uma experiência consistente aos usuários, independentemente de estarem executando processos seguros ou não seguros.

Ferramentas como a plataforma Confidential Computing do Azure contam com paravisores, que não necessitam de atualizações do sistema operacional sempre que o serviço de virtualização subjacente é atualizado. O código dos paravisores continuará funcionando conforme novos hardwares são implantados e novos recursos são habilitados. Uma forma útil de compreender os paravisores da Microsoft é considerá-los como um ambiente de execução dentro de um VM convidado, porém com privilégios superiores ao VM, fornecendo serviços a ele.

Utilizar um paravisor para garantir a segurança da computação diminui o perigo em geral, já que não é necessário um sistema operacional convidado personalizado para funcionar em um ambiente de execução confiável. Caso não se tenha um paravisor, o sistema operacional convidado teria que ser modificado com códigos extras para suportar a execução em um ambiente de computação segura.

RELACIONADO:  6 melhores práticas para manter os custos da Kubernetes sob controle

É essencial fazer atualizações sempre que há uma nova versão do sistema operacional disponível. Não devemos restringir as opções aos sistemas operacionais recomendados pelo fornecedor da plataforma, mas garantir que também sejam consideradas outras versões menos conhecidas. Ignorar essas atualizações pode acarretar riscos de segurança, por mais breves que possam ser.

Em vez disso, ao utilizar um hipervisor, não é necessário ter versões específicas do sistema operacional, e é possível utilizar qualquer sistema operacional suportado de sua preferência. Não é preciso aguardar pelas empresas como Microsoft, Canonical, Red Hat ou outras para disponibilizarem uma versão customizada pronta para ser utilizada. Caso haja alguma vulnerabilidade crítica com uma atualização de segurança para o sistema operacional escolhido, você pode simplesmente implementá-la como parte do processo padrão de atualização de imagem e sistema operacional.

Introduzindo o OpenHCL.

O visualizador do Azure, que antes era proprietário e fechado, agora foi transformado em uma nova versão de código aberto chamada OpenHCL. Esse novo software está sendo desenvolvido de forma colaborativa no GitHub, permitindo que os usuários contribuam, desde que concordem com os termos da licença de contribuinte da Microsoft. O OpenHCL foi criado para funcionar em diversas plataformas, como Linux e macOS, e é compatível com os hipervisores da Microsoft, Apple e KVM, suportando ambientes x64 e Arm64.

A arquitetura recente da Microsoft para o seu hipervisor é de certa forma simples. Ela utiliza o hipervisor atual para criar uma camada de abstração do hardware, juntamente com um sistema operacional host que oferece suporte para ferramentas de gestão e armazenamento. Dentro de uma máquina virtual habilitada para OpenHCL, existe um pequeno núcleo Linux que suporta drivers de dispositivo, além de um ambiente OpenVMM que suporta o sistema operacional convidado.

O OpenVMM é responsável por executar os processos de modo de usuário OpenHCL. Ele controla o acesso ao dispositivo e realiza a tradução entre o sistema operacional host e o convidado. Escrito em Rust, o OpenVMM diminui os perigos ligados a aplicações de sistema com privilégios elevados. Ao empregar uma linguagem segura em termos de memória, o OpenVMM reduz os riscos de vazamentos de memória, algo crucial ao hospedar ambientes de execução seguros.

RELACIONADO:  A transferência da aplicação para a nuvem continua sendo algo impossível de se concretizar.

Existe outra funcionalidade valiosa proporcionada pelo OpenVMM. Uma vez que ele oferece suporte para a inicialização UEFI, é possível utilizá-lo para implementar as Máquinas Virtuais de Inicialização Confiável (Trusted Launch VMs), conforme definido pela Microsoft, visando proteger contra rootkits e malware de nível kernel.

Criando um ambiente de testes utilizando OpenHCL e OpenVMM.

Rodar OpenHCL em um ambiente de teste é bastante simples. É possível compilar seus próprios binários em um sistema de desenvolvimento Linux (ou usar o WSL2). Outra opção é baixar um binário pré-construído no formato Independent Guest Virtual Machine (IGVM). No momento, o OpenHCL não é suportado e é recomendado apenas para ambientes de desenvolvimento e teste.

Depois de obter uma cópia, é possível testá-la utilizando o Hyper-V ou o OpenVMM. No Windows, a opção mais próxima seria o Hyper-V, pois a Microsoft utiliza o OpenHCL no Azure, rodando sobre o próprio sistema operacional derivado do Windows. O suporte ao OpenHCL no Windows ainda é recente, sendo compatível apenas com a versão mais recente, o Windows 11, 24H2.

Depois de ativar o suporte Hyper-V, será necessário usar o PowerShell para permitir o uso de imagens não assinadas. Posteriormente, é preciso colocar o arquivo OpenHCL .bin baixado em um local acessível, como recomendado na documentação, preferencialmente em um diretório dentro do windows\system32. Em seguida, é necessário criar variáveis de ambiente para indicar o caminho do OpenHCL e o nome desejado para a máquina virtual.

Esses comandos são fundamentais para um script básico que prepara a inicialização confiável no sistema OpenHCL. Essa ação resulta na criação de uma máquina virtual OpenHCL sem discos virtuais, pois você está incluindo suporte para um hipervisor dentro do ambiente Hyper-V. Agora, basta adicionar um disco rígido virtual com uma imagem pronta para uso, seja uma que você tenha construído ou baixado de uma fonte confiável.

Depois que você configurar uma máquina virtual no OpenHCL, é possível utilizar a ferramenta OpenVMM para adicionar recursos à sua máquina virtual. A principal funcionalidade dessas ferramentas de gerenciamento é um CLI que possibilita o gerenciamento de discos, portas, ajuste de vCPUs e memória. Além disso, há a opção de utilizar um console serial para interagir com o sistema operacional convidado e acesso via VNC a um console gráfico.

RELACIONADO:  O que o futuro reserva para a infraestrutura de Kubernetes e computação em nuvem.

Não deve se surpreender se não encontrar documentação para todos os recursos do OpenHCL, já que esta versão inicial é recente e parte da documentação ainda está sendo desenvolvida. No entanto, fica evidente que há um projeto ambicioso em andamento que promete trazer perspectivas sobre o futuro do Windows (tanto cliente quanto servidor) e da plataforma de infraestrutura como serviço do Azure.

Garantir a confidencialidade de todo o processamento de dados.

Post de blog da Microsoft anunciando o OpenHCL discute a importância de melhorar a segurança das máquinas virtuais confidenciais. Ao adotar o OpenHCL, que é compatível com tanto VMs padrão quanto confidenciais, a Microsoft visa a hospedar todas as VMs confidenciais no Azure, garantindo a segurança da computação e dos dados, com todos os cálculos ocorrendo em ambientes confiáveis.

Este progresso não ocorrerá rapidamente. Ainda é necessário realizar várias ações para assegurar que as máquinas virtuais seguras tenham acesso equivalente a dispositivos e serviços de sistema operacional em comparação com as não seguras, além de obter o mesmo nível de desempenho. Já podemos observar os primeiros passos desse movimento com a introdução de um novo hipervisor aberto e com enclaves de segurança baseados em virtualização (VBS) no Windows, assim como a exigência de armazenamento confiável baseado em hardware para chaves de criptografia no Windows 11.

Realizar todas as tarefas no computador, na nuvem e em ambientes de máquinas virtuais seguras pode parecer algo distante atualmente, no entanto, ferramentas como OpenHCL são fundamentais para um futuro mais seguro, onde a execução confiável será onipresente. Embora estejamos no início desse processo, é viável utilizar esse primeiro lançamento público e seu repositório no GitHub para ter uma ideia do caminho que estamos percorrendo.

Artigos relacionados

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button