Essa solução usa computação confidencial no Kubernetes para executar análises de big data com o Apache Spark dentro de contêineres confidenciais com dados do Azure Data Lake e do Banco de Dados SQL do Azure. A computação confidencial é fornecida pelas extensões Intel Software Guard e processadores AMD EPYCTM com Secure Encrypted Virtualization-Secure Nested Paging. Para obter mais informações sobre como provisionar um cluster AKS com VMs confidenciais AMD SEV-SNP, consulte Suporte a pool de nós de VM confidencial no AKS com VMs confidenciais AMD SEV-SNP. Para obter mais informações sobre como implantar um cluster AKS com nós de agente Intel SGX de computação confidencial, consulte Implantar um cluster AKS com nós de agente Intel SGX de computação confidencial usando a CLI do Azure.
Apache®, Apache Ignite, Ignite e o logotipo de chamas são marcas registradas ou marcas comerciais da Apache Software Foundation nos Estados Unidos e/ou em outros países. O uso desta marca não implica aprovação por parte da Apache Software Foundation.
Arquitetura
Baixe um arquivo do PowerPoint dessa arquitetura.
O diagrama anterior descreve a arquitetura: um padrão escalável para processar conjuntos de dados maiores de forma distribuída. Ele também mostra análises confidenciais em mecanismos de banco de dados relacionais e armazenamento de dados confidenciais. Em particular, o aplicativo Spark em contêineres pode processar conjuntos de dados de duas fontes de dados, conforme ilustrado:
Armazenamento do Azure Data Lake - arquivos Parquet/Delta Lake: conforme mostrado na demonstração de exemplo, uma implantação do Spark de quatro pods — um Driver, três Executores no tempo de execução do Secure Container Environment (SCONE) — é capaz de processar 1,5 bilhão de linhas de arquivos Parquet/Delta Lake armazenados no armazenamento do Azure Data Lake em dois minutos, ou aproximadamente 131 segundos.
Banco de Dados SQL do Azure - Sempre Criptografado com enclaves seguros: este exemplo usa o Spark para acessar dados Sempre Criptografados como texto sem formatação usando o driver JDBC SQL do Azure dentro do enclave de contêiner do Spark para executar pipelines de análise e aprendizado de máquina.
Você pode estender facilmente esse padrão para incluir quaisquer fontes de dados que o grande ecossistema do Spark suporta.
Workflow
Persona do operador: um engenheiro de DevOps provisiona clusters Kubernetes, namespaces, contas de serviço e pools de nós de máquina virtual (VM) confidencial (por exemplo, DC4s_v3).
Persona do desenvolvedor: um engenheiro de dados usa o PySpark para escrever um aplicativo de análise projetado para analisar grandes volumes de dados.
Persona de custódia de dados: O engenheiro de dados ou segurança cria uma política de segurança para o aplicativo PySpark a partir de um repositório compartilhado na organização (uma atividade única). Essa política especifica o estado esperado dos dados e do código do aplicativo, os requisitos mínimos de segurança para a plataforma e quaisquer variáveis de ambiente, argumentos de linha de comando ou segredos (como a cadeia de caracteres JDBC, o URI do blob de entrada e um token SAS para acesso). Você também pode disponibilizar essa configuração para o tempo de execução do Spark usando o Kubernetes Secrets ou o Azure Key Vault. (Para mais informações, consulte Usar o Provedor do Azure Key Vault para o Driver CSI do repositório de segredos em um cluster do AKS). A configuração é injetada no enclave somente se as evidências que ele fornece forem validadas por um provedor de atestado. O provedor de atestado (por exemplo, Serviço de Atestado do Azure) também é definido na política de segurança.
Com a ajuda do software de computação confidencial SCONE, o engenheiro de dados cria uma imagem confidencial do Docker que contém o código de análise criptografado e uma versão segura do PySpark. O SCONE funciona dentro de um cluster AKS que tem o Intel SGX habilitado (consulte Criar um cluster AKS com um pool de nós do sistema), o que permite que o contêiner seja executado dentro de um enclave. O PySpark fornece evidências de que os dados confidenciais e o código do aplicativo são criptografados e isolados em um TEE (Trusted Execution Environment) — o que significa que nenhum ser humano, nenhum processo e nenhum log têm acesso aos dados de texto sem formatação ou ao código do aplicativo.
O aplicativo PySpark é implantado no cluster AKS remoto. Ele inicia e envia sua prova de atestado para o provedor do atestado. Se a evidência for válida, um token de atestado será retornado. A infraestrutura remota aceita o token de atestado da API Web da plataforma de serviços médicos e o verifica com um certificado público encontrado no serviço de Atestado do Azure. Se o token for verificado, será quase certo de que o enclave é seguro e que nem os dados nem o código do aplicativo foram abertos fora do enclave. A configuração na diretiva de segurança (variáveis de ambiente, argumentos de linha de comando e segredos) é então injetada em enclaves do PySpark.
Você pode dimensionar horizontalmente a execução do PySpark em vários nós do Kubernetes. Todas as instâncias do PySpark se comunicam por um canal criptografado, e todos os arquivos são criptografados que precisam ser gravados em seus sistemas de arquivos locais (por exemplo, arquivos aleatórios).
Os resultados da análise são criptografados e carregados em um Banco de Dados SQL do Azure com Always Encrypted (que usa criptografia em nível de coluna). O acesso aos dados de saída e às chaves de criptografia pode ser concedido com segurança a outros aplicativos confidenciais (por exemplo, em um pipeline) usando o mesmo tipo de políticas de segurança e evidências de atestado baseadas em hardware descritas neste artigo.
Componentes
O Atestado do Azure é uma solução unificada que verifica remotamente a confiabilidade de uma plataforma. Ele também verifica remotamente a integridade dos binários que são executados na plataforma. Use o Atestado do Azure para estabelecer uma relação de confiança com o aplicativo confidencial.
Os nós de computação confidencial do Azure são hospedados em uma série de VMs específica que pode executar cargas de trabalho confidenciais no AKS em um TEE baseado em hardware. Nesse ambiente, o código em nível de usuário pode alocar regiões privadas de memória, conhecidas como enclaves. Os nós de computação confidencial podem dar suporte a contêineres confidenciais ou a contêineres com reconhecimento de enclave.
O Serviço de Kubernetes do Azure simplifica o processo de implantação e gerenciamento de um cluster do Kubernetes.
O Apache Spark é um mecanismo multilíngue de código aberto para executar engenharia de dados, ciência de dados e aprendizado de máquina em máquinas de nó único e clusters de vários nós, como pods do Kubernetes.
O Banco de Dados SQL do Azure agora oferece o Always Encrypted com enclaves seguros, expandindo os recursos de computação confidencial da tecnologia Always Encrypted do SQL Server para incluir criptografia in-loco e consultas confidenciais avançadas.
O SCONE (Ambiente de Contêiner Seguro) dá suporte à execução de aplicativos confidenciais em contêineres que são executados em um cluster de Kubernetes.
A plataforma SCONE é uma solução da Scotain, um fornecedor independente de software e parceiro do Azure.
Alternativas
Occlum é um LibOS (sistema operacional de biblioteca) de vários processos, com segurança de memória para o Intel SGX. O Occlum possibilita que aplicativos legados sejam executados no Intel SGX com pouca ou nenhuma modificação no código-fonte. O Occlum protege de forma transparente a confidencialidade das cargas de trabalho dos usuários, ao mesmo tempo que permite fácil migração para aplicativos Docker existentes. O Occlum suporta aplicativos Java.
A equipe de engenharia do SCONE mantém uma imagem de contêiner do Apache Spark que executa a versão mais recente do Spark. Uma alternativa que não é específica do Apache Spark é o Fortanix, com o qual você pode implantar contêineres confidenciais para usar com seu aplicativo conteinerizado. O Fortanix fornece a flexibilidade de que você precisa para executar e gerenciar o conjunto mais amplo de aplicativos: aplicativos existentes, novos aplicativos nativos de enclave e aplicativos pré-empacotados.
Detalhes do cenário
Há um crescimento exponencial dos conjuntos de dados, o que resultou em um escrutínio crescente de como os dados são expostos a partir das perspectivas de privacidade e conformidade de dados do consumidor. Nesse contexto, a computação confidencial torna-se uma ferramenta importante para ajudar as organizações a atender às suas necessidades de privacidade e segurança para dados de empresas e consumidores. As organizações podem obter novos insights a partir de dados regulamentados se os dados forem processados de maneira compatível. A computação confidencial é especialmente útil em cenários em que a escala fornecida pela computação em nuvem é necessária para processar os dados de forma confidencial.
A tecnologia de computação confidencial criptografa dados na memória e só os processa depois que o ambiente de nuvem é verificado ou atestado. A computação confidencial impede o acesso a dados por operadores de nuvem, administradores mal-intencionados e software privilegiado, como o hipervisor. Ele também ajuda a manter os dados protegidos durante todo o seu ciclo de vida — enquanto os dados estão em repouso, em trânsito e também agora enquanto estão em uso.
Os contêineres confidenciais no Serviço de Kubernetes do Azure (AKS) fornecem a infraestrutura necessária para que os clientes usem aplicativos populares, como o Apache Spark, para executar limpeza de dados e treinamento de aprendizado de máquina. Este artigo apresenta uma solução que a computação confidencial do Azure oferece para executar um aplicativo Apache Spark em um cluster AKS usando pools de nós com Intel Software Guard Extensions (Intel SGX). Os dados desse processamento são armazenados com segurança no Banco de Dados SQL do Azure usando o Always Encrypted com enclaves seguros.
Observação
A análise de dados confidenciais neste contexto deve implicar a execução de análises em dados confidenciais com tranquilidade contra a exfiltração de dados. Isso inclui uma possível violação de acesso ao contêiner no nível raiz, tanto internamente (por exemplo, por um administrador não autorizado) quanto externamente (por comprometimento do sistema).
A análise de dados confidenciais ajuda a atender às mais altas necessidades de segurança e confidencialidade, removendo da computação as partes não confiáveis, como o operador de nuvem e os administradores de serviço ou convidados. Esse método ajuda a atender às necessidades de conformidade de dados por meio de garantias com suporte de hardware.
Possíveis casos de uso
Muitos setores, especialmente os serviços financeiros, protegem seus dados usando computação confidencial para estes fins:
Estendendo a confidencialidade dos dados para conjuntos de dados entre organizações (ou seja, computação com várias partes):
Fornecendo insights coletivos além dos limites organizacionais usando uma sala limpa virtual:
Proteger dados financeiros ou dados regulamentados de uma operadora de nuvem.
Atendendo a altos requisitos de privacidade e proteção de dados.
Executando treinamento e inferência de modelos de ML em dados confidenciais.
Refinando conjuntos de dados usando ferramentas familiares de preparação de dados.
Proteção de dados de contêiner e integridade de código.
Considerações
Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Os enclaves confidenciais do Azure que usam VMs das séries DCsv3 e DCdsv3 oferecem grandes tamanhos de memória para ajudar a executar aplicativos com uso intensivo de memória, como análises. Esse cenário usa VMs DCsv3 habilitadas para Intel SGX. Só é possível implantar determinados tamanhos em algumas regiões. Para obter mais informações, confira Guia de Início Rápido: Implantar uma VM de Computação Confidencial do Azure no Marketplace e Produtos disponíveis por região.
Segurança
A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.
Dois fatores principais na segurança para esse cenário são enclaves seguros e atestados.
Garantias do enclave
Os administradores do Kubernetes, ou qualquer usuário privilegiado com o nível mais alto de acesso (por exemplo, root), não podem inspecionar o conteúdo na memória ou o código-fonte de drivers ou executores. O cache de página do enclave (EPC) é uma partição de memória especializada em VMs Confidenciais do Azure que os enclaves ou contêineres confidenciais usam. As VMs das séries DCsv3 e DCdsv3 também vêm com memória regular e não criptografada para executar aplicativos que não exigem o enclave seguro. Para obter mais informações sobre como usar o Intel SGX para enclaves, consulte Criar com enclaves SGX.
Atestado
O atestado é um mecanismo que fornece a um cliente, ou parte, evidências criptográficas de que o ambiente em que um aplicativo está sendo executado é confiável, incluindo seu hardware e software, antes de trocar dados. O atestado remoto garante que sua carga de trabalho não tenha sido adulterada quando implantada em um host não confiável, como uma instância de VM ou um nó do Kubernetes executado na nuvem. Nesse processo, as evidências de atestado fornecidas pelo hardware Intel SGX são analisadas por um provedor de atestado.
Para executar o atestado remoto em um aplicativo SCONE (como pods Spark Driver e Executor), dois serviços são necessários:
Serviço de atestado local (LAS): um serviço local que é executado no host não confiável (VM do pool de nós AKS) e reúne as evidências de atestado fornecidas pela Intel SGX sobre o aplicativo que está sendo atestado. Devido ao método de implantação de aplicativo do SCONE, essas evidências são assinadas e encaminhadas para o CAS (serviço de configuração e atestado).
CAS: um serviço central que gerencia diretivas de segurança (chamadas sessões SCONE), configuração e segredos. O CAS compara as evidências de atestado coletadas pelo LAS com as políticas de segurança do aplicativo (que são definidas pelo proprietário do aplicativo) para decidir se o enclave é confiável. Se estiver, o CAS permite que o enclave seja executado e o SCONE injeta com segurança a configuração e os segredos nele. Para saber mais sobre o CAS e seus recursos, como geração secreta e controle de acesso, consulte Serviço de Configuração e Atestado do SCONE.
Esse cenário usa um CAS público fornecido pelo SCONE para demonstração e simplicidade, e implanta o LAS para ser executado como um DaemonSet em cada nó AKS.
Otimização de custo
A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.
Para explorar o custo da execução desse cenário, use a Calculadora de Preços do Azure, que configura previamente todos os serviços do Azure. Observe as licenças adicionais exigidas pelo parceiro para executar cargas de trabalho de produção.
Implantar este cenário
A implantação desse cenário envolve as seguintes etapas de alto nível:
Obtenha acesso à imagem base do PySpark usada neste cenário pelo registro de contêiner do SCONE: consulte
registry.scontain.com:5050
em imagens selecionadas pelo SCONE.Clone o projeto de demonstração no GitHub, Confidential Data Analytics com Apache Spark em Intel SGX Confidential Containers. Este projeto contém todos os recursos necessários, etapas de implantação e código-fonte para reproduzir a demonstração.
Implantar Always Encrypted com enclaves seguros no Banco de Dados SQL do Azure. Essas demonstrações usam um conjunto de dados confidencial, ContosoHR, que está incluído. Esse cenário descriptografa dados confidenciais em texto sem formatação dentro do enclave de contêineres do Spark.
Implantar um pool de nós de cluster do AKS habilitado para Intel SGX. Para obter instruções, confira Guia de início rápido: Implantar um cluster do AKS com nós de computação confidencial usando a CLI do Azure.
Implante o Serviço de Atestado Local do SCONE no cluster usando o manifesto do Kubernetes incluído.
Crie a imagem criptografada com o software de computação confidencial SCONE e envie-a por push para seu próprio Registro de Contêiner do Azure. O repositório tem um aplicativo de demonstração que conta o número de linhas nos registros de viagem do Yellow Taxi da cidade de Nova York, um conjunto de dados aberto de horários, locais, tarifas e outros dados relacionados a viagens de táxi. Você pode adaptá-lo para atender às suas necessidades específicas.
Implante o aplicativo Spark executando o comando
spark-submit
. Isso implanta um pod de driver e um número configurável de pods executores (a demonstração usa três) que executam as tarefas e relatam os resultados da análise ao driver. Toda a comunicação é criptografada.
Como alternativa, o SCONE Confidential PySpark no Kubernetes, uma VM, inclui a mesma demonstração que você pode reproduzir em um cluster minikube local. Para obter mais informações, consulte a documentação oficial: máquina virtual SCONE PySpark.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Autor principal:
- Amar Gowda | Gerente Principal de Programas
Outro colaborador:
- Gary Moore | Programador/escritor
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.