Editar

Partilhar via


Análise de Big Data em computação confidencial com Apache Spark no Kubernetes

Azure Kubernetes Service (AKS)
Azure SQL Database
Azure Data Lake

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 o provisionamento de um cluster AKS com VMs confidenciais AMD SEV-SNP, consulte Suporte a pool de nós de VM confidenciais 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 flame são marcas registradas ou marcas comerciais da Apache Software Foundation nos Estados Unidos e/ou em outros países. Nenhum endosso da Apache Software Foundation está implícito no uso dessas marcas.

Arquitetura

Diagrama de análise confidencial de big data com Apache Spark, Azure SQL Always Encrypted, AKS e Secure Container Environment.

Transfira um ficheiro PowerPoint desta 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êiner pode processar conjuntos de dados de duas fontes de dados, conforme ilustrado:

  1. Azure Data Lake Storage - Parquet/Delta Lake files: 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.

  2. Banco de Dados SQL do Azure - Sempre criptografado com enclaves seguros: este exemplo usa o Spark para acessar dados Always Encrypted 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 facilmente estender esse padrão para incluir quaisquer fontes de dados suportadas pelo grande ecossistema do Spark.

Fluxo de Trabalho

  1. 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).

  2. Persona do desenvolvedor: um engenheiro de dados usa o PySpark para escrever um aplicativo de análise projetado para analisar grandes volumes de dados.

  3. Persona do custodiante de dados: o engenheiro de dados ou de 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). Esta 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 os Segredos do Kubernetes ou o Cofre da Chave do Azure. (Para obter mais informações, consulte Use o Azure Key Vault Provider for Secrets Store CSI Driver em um cluster 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.

  4. 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 ativado (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 Ambiente de Execução Confiável (TEE) — o que significa que nenhum ser humano, nenhum processo e nenhum log tem acesso aos dados de texto sem formatação ou ao código do aplicativo.

  5. O aplicativo PySpark é implantado no cluster AKS remoto. Inicia e envia as provas do seu atestado ao fornecedor do certificado. Se as provas forem válidas, é devolvido um token de atestado. A infraestrutura remota aceita o token de atestado e o verifica com um certificado público encontrado no serviço de Atestado do Azure. Se o token for verificado, há quase certeza 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 política de segurança (variáveis de ambiente, argumentos de linha de comando e segredos) é então injetada nos enclaves do PySpark.

  6. Você pode dimensionar horizontalmente a execução do PySpark em vários nós do Kubernetes. Todas as instâncias do PySpark se comunicam através de 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).

  7. 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. O Atestado do Azure também verifica remotamente a integridade dos binários executados na plataforma. Use o Atestado do Azure para estabelecer confiança com o aplicativo confidencial.

  • Os nós de computação confidenciais do Azure são hospedados em uma série de VM específica que pode executar cargas de trabalho confidenciais no AKS dentro de um TEE baseado em hardware. Nesse ambiente, o código de nível de usuário pode alocar regiões privadas de memória, conhecidas como enclaves. Os nós de computação confidenciais podem suportar contêineres confidenciais ou contêineres com reconhecimento de enclave.

  • O Serviço Kubernetes do Azure simplifica o processo de implantação e gerenciamento de um cluster Kubernetes.

  • O Apache Spark é um mecanismo multilíngüe 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 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 suporta a execução de aplicativos confidenciais em contêineres que são executados dentro de um cluster Kubernetes.

  • A plataforma SCONE é uma solução da Scontain, um fornecedor de software independente e parceiro do Azure.

Alternativas

O Occlum é um sistema operacional de biblioteca multiprocesso (LibOS) seguro para memória para 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 do usuário, permitindo a migração fácil para aplicativos Docker existentes. O Occlum suporta aplicações 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 oferece a flexibilidade necessária para executar e gerenciar o mais amplo conjunto de aplicativos: aplicativos existentes, novos aplicativos nativos do enclave e aplicativos pré-empacotados.

Detalhes do cenário

Há um crescimento exponencial de conjuntos de dados, o que resultou em um escrutínio crescente de como os dados são expostos das perspetivas de privacidade e conformidade de dados do consumidor. Neste contexto, a computação confidencial torna-se uma ferramenta importante para ajudar as organizações a satisfazer as suas necessidades de privacidade e segurança para dados empresariais e de consumidores. As organizações podem obter novas informações a partir de dados regulamentados se os dados forem processados de forma 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 confidencialmente.

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 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 Always Encrypted com enclaves seguros.

Nota

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ços ou convidados. Esse método ajuda a atender às necessidades de conformidade de dados por meio de garantias baseadas em hardware.

Potenciais casos de utilização

Muitas indústrias, especialmente os serviços financeiros, protegem os seus dados utilizando computação confidencial para estes fins:

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar 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 que consomem muita memória, como análises. Este cenário usa VMs da série DCsv3 habilitadas para Intel SGX. Você só pode implantar determinados tamanhos em determinadas regiões. Para obter mais informações, consulte Guia de início rápido: implantar uma VM de computação confidencial do Azure no mercado e Produtos disponíveis por região.

Segurança

A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.

Dois fatores principais de segurança para este cenário são enclaves seguros e atestado.

Garantias do enclave

Os administradores do Kubernetes, ou qualquer usuário privilegiado com o mais alto nível 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 de enclave (EPC) é uma partição de memória especializada em VMs confidenciais do Azure que enclaves ou contêineres confidenciais usam. As VMs das séries DCsv3 e DCdsv3 também vêm com memória regular 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 onde 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. Neste 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 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 SCONE de implantação do aplicativo, essa evidência é assinada e encaminhada para o serviço de configuração e atestado (CAS).

  • CAS: um serviço central que gerencia políticas de segurança (chamadas sessões SCONE), configuração e segredos. O CAS compara as evidências de atestado coletadas pela 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 for, 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 SCONE Configuration and Attestation Service.

Este 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 custos

A otimização de custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.

Para explorar o custo de execução desse cenário, use a calculadora de preços do Azure, que pré-configura todos os serviços do Azure. Observe as licenças adicionais exigidas pelo parceiro para executar cargas de trabalho de produção.

Implementar 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 a partir do registro de contêiner do SCONE: veja registry.scontain.com:5050 nas imagens com curadoria do SCONE.

  • Clone o projeto de demonstração no GitHub, Análise de dados confidenciais com Apache Spark em contêineres confidenciais Intel SGX. Este projeto contém todos os recursos necessários, etapas de implantação e código-fonte para reproduzir a demonstração.

  • Implante Always Encrypted com enclaves seguros no Banco de Dados SQL do Azure - Demos. 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.

  • Implante um pool de nós de cluster AKS habilitado para Intel SGX. Para obter instruções, consulte Guia de início rápido: implantar um cluster AKS com nós de computação confidenciais usando a CLI do Azure.

  • Implante o Serviço de Atestado Local SCONE no cluster usando o manifesto Kubernetes incluído.

  • Crie a imagem encriptada com o software de computação confidencial SCONE e envie-a para o seu próprio Registo de Contentores 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. Pode adaptá-lo à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 executor (a demonstração usa três) que executam as tarefas e relatam os resultados da análise para o driver. Toda a comunicação é encriptada.

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: SCONE PySpark virtual machine.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

  • Amar Gowda - Brasil | Gerente de Programa Principal

Outros contribuidores:

Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.

Próximos passos