Gestão de vulnerabilidades do Azure Machine Learning

O gerenciamento de vulnerabilidades envolve a deteção, avaliação, mitigação e emissão de relatórios sobre quaisquer vulnerabilidades de segurança existentes nos sistemas e software de uma organização. A gestão de vulnerabilidades é uma responsabilidade partilhada entre si e a Microsoft.

Este artigo discute essas responsabilidades e descreve os controles de gerenciamento de vulnerabilidade que o Azure Machine Learning fornece. Você aprende como manter sua instância de serviço e aplicativos atualizados com as atualizações de segurança mais recentes e como minimizar a janela de oportunidade para invasores.

Imagens de VM gerenciadas pela Microsoft

O Azure Machine Learning gerencia imagens de máquina virtual (VM) do sistema operacional host para instâncias de computação do Azure Machine Learning, clusters de computação do Azure Machine Learning e Máquinas Virtuais de Ciência de Dados. A frequência de atualização é mensal e inclui os seguintes detalhes:

  • Para cada nova versão de imagem da VM, as atualizações mais recentes são provenientes do editor original do sistema operacional. O uso das atualizações mais recentes ajuda a garantir que você obtenha todos os patches relacionados ao sistema operacional aplicáveis. Para o Azure Machine Learning, o editor é Canonical para todas as imagens do Ubuntu. Essas imagens são usadas para instâncias de computação do Azure Machine Learning, clusters de computação e Máquinas Virtuais de Ciência de Dados.

  • As imagens VM são atualizadas mensalmente.

  • Além dos patches que o editor original aplica, o Azure Machine Learning atualiza os pacotes do sistema quando as atualizações estão disponíveis.

  • O Azure Machine Learning verifica e valida quaisquer pacotes de aprendizagem automática que possam necessitar de uma atualização. Na maioria das circunstâncias, as novas imagens de VM contêm as versões mais recentes do pacote.

  • Todas as imagens de VM são criadas em assinaturas seguras que executam a verificação de vulnerabilidades regularmente. O Azure Machine Learning sinaliza quaisquer vulnerabilidades não resolvidas e corrige-as na próxima versão.

  • A frequência é um intervalo mensal para a maioria das imagens. Para instâncias de computação, a versão de imagem é alinhada com a cadência de lançamento do SDK do Azure Machine Learning pré-instalado no ambiente.

Além da cadência de lançamento regular, o Azure Machine Learning aplica hotfixes se surgirem vulnerabilidades. A Microsoft implementa hotfixes dentro de 72 horas para clusters de computação do Azure Machine Learning e dentro de uma semana para instâncias de computação.

Nota

O sistema operacional host não é a versão do sistema operacional que você pode especificar para um ambiente quando estiver treinando ou implantando um modelo. Os ambientes são executados dentro do Docker. O Docker é executado no sistema operacional host.

Imagens de contentor geridas pela Microsoft

As imagens de docker de base que o Azure Machine Learning mantém recebem patches de segurança com frequência para resolver vulnerabilidades recém-descobertas.

O Azure Machine Learning lança atualizações para imagens suportadas a cada duas semanas para resolver vulnerabilidades. Como compromisso, pretendemos não ter vulnerabilidades com mais de 30 dias na versão mais recente das imagens suportadas.

As imagens corrigidas são liberadas sob uma nova tag imutável e uma tag atualizada :latest . Usar a :latest tag ou fixar em uma versão de imagem específica pode ser uma compensação entre segurança e reprodutibilidade do ambiente para seu trabalho de aprendizado de máquina.

Gestão de ambientes e imagens de contentor

A reprodutibilidade é um aspeto fundamental do desenvolvimento de software e da experimentação de aprendizado de máquina. O foco principal do componente de ambiente do Azure Machine Learning é garantir a reprodutibilidade do ambiente onde o código do usuário é executado. Para garantir a reprodutibilidade de qualquer trabalho de aprendizado de máquina, as imagens construídas anteriormente são puxadas para os nós de computação sem a necessidade de rematerialização.

Embora o Aprendizado de Máquina do Azure corrija imagens de base a cada versão, usar a imagem mais recente pode ser uma compensação entre a reprodutibilidade e o gerenciamento de vulnerabilidades. É sua responsabilidade escolher a versão do ambiente que você usa para seus trabalhos ou implantações de modelo.

Por padrão, as dependências são colocadas em camadas sobre as imagens base que o Aprendizado de Máquina do Azure fornece quando você está criando ambientes. Também pode utilizar as suas próprias imagens base quando estiver a utilizar ambientes no Azure Machine Learning. Depois de instalar mais dependências sobre as imagens fornecidas pela Microsoft ou trazer suas próprias imagens de base, o gerenciamento de vulnerabilidades se torna sua responsabilidade.

Associado ao seu espaço de trabalho do Azure Machine Learning está uma instância do Registro de Contêiner do Azure que funciona como um cache para imagens de contêiner. Qualquer imagem que se materialize é enviada para o registro do contêiner. O espaço de trabalho o usa se a experimentação ou a implantação forem acionadas para o ambiente correspondente.

O Azure Machine Learning não exclui nenhuma imagem do seu registro de contêiner. Você é responsável por avaliar a necessidade de uma imagem ao longo do tempo. Para monitorar e manter a higiene do ambiente, você pode usar o Microsoft Defender for Container Registry para ajudar a verificar suas imagens em busca de vulnerabilidades. Para automatizar seus processos com base em gatilhos do Microsoft Defender, consulte Automatizar respostas de correção.

Usando um repositório de pacotes privados

O Azure Machine Learning usa Conda e Pip para instalar pacotes Python. Por padrão, o Azure Machine Learning baixa pacotes de repositórios públicos. Se sua organização exigir que você forneça pacotes somente de repositórios privados, como feeds de DevOps do Azure, você poderá substituir a configuração Conda e Pip como parte de suas imagens base e suas configurações de ambiente para instâncias de computação.

O exemplo de configuração a seguir mostra como remover os canais padrão e adicionar seus próprios feeds Conda e Pip privados. Considere o uso de scripts de configuração de instância de computação para automação.

RUN conda config --set offline false \
&& conda config --remove channels defaults || true \
&& conda config --add channels https://my.private.conda.feed/conda/feed \
&& conda config --add repodata_fns <repodata_file_on_your_server>.json

# Configure Pip private indexes and ensure that the client trusts your host
RUN pip config set global.index https://my.private.pypi.feed/repository/myfeed/pypi/ \
&&  pip config set global.index-url https://my.private.pypi.feed/repository/myfeed/simple/

# In case your feed host isn't secured through SSL
RUN  pip config set global.trusted-host http://my.private.pypi.feed/

Para saber como especificar suas próprias imagens base no Azure Machine Learning, consulte Criar um ambiente a partir de um contexto de compilação do Docker. Para obter mais informações sobre como configurar ambientes Conda, consulte Criando um arquivo de ambiente manualmente no site Conda.

Gestão de vulnerabilidades em anfitriões de computação

Os nós de computação gerenciados no Aprendizado de Máquina do Azure usam imagens de VM do sistema operacional gerenciadas pela Microsoft. Quando você provisiona um nó, ele obtém a imagem de VM atualizada mais recente. Esse comportamento se aplica a instâncias de computação, cluster de computação, computação sem servidor (visualização) e opções de computação de inferência gerenciada.

Embora as imagens de VM do sistema operacional sejam corrigidas regularmente, o Aprendizado de Máquina do Azure não verifica ativamente os nós de computação em busca de vulnerabilidades enquanto eles estão em uso. Para uma camada extra de proteção, considere isolar a rede da computação.

Garantir que seu ambiente esteja atualizado e que os nós de computação usem a versão mais recente do sistema operacional é uma responsabilidade compartilhada entre você e a Microsoft. Os nós que não estão ociosos não podem ser atualizados para a imagem de VM mais recente. As considerações são ligeiramente diferentes para cada tipo de computação, conforme listado nas seções a seguir.

Instância de computação

As instâncias de computação obtêm as imagens de VMs mais recentes no momento do aprovisionamento. A Microsoft lança novas imagens de VMs numa base mensal. Depois de implantar uma instância de computação, ela não é atualizada ativamente. Você pode consultar a versão do sistema operacional de uma instância. Para se manter atualizado com as atualizações de software e patches de segurança mais recentes, você pode usar um destes métodos:

  • Recrie uma instância de computação para obter a imagem mais recente do sistema operacional (recomendado).

    Se você usar esse método, perderá dados e personalizações (como pacotes instalados) armazenados no sistema operacional e nos discos temporários da instância.

    Quando você recria sua instância:

    Para obter mais informações sobre versões de imagem, consulte Notas de versão de imagem de instância de computação do Azure Machine Learning.

  • Atualize regularmente os pacotes de SO e Python.

    • Use as ferramentas de gerenciamento de pacotes do Linux para atualizar a lista de pacotes com as versões mais recentes:

      sudo apt-get update
      
    • Use as ferramentas de gerenciamento de pacotes do Linux para atualizar os pacotes para as versões mais recentes. Conflitos de pacote podem ocorrer quando você usa essa abordagem.

      sudo apt-get upgrade
      
    • Use ferramentas de gerenciamento de pacotes Python para atualizar pacotes e verificar se há atualizações:

      pip list --outdated
      

Você pode instalar e executar software de verificação adicional na instância de computação para verificar se há problemas de segurança:

  • Use o Trivy para descobrir vulnerabilidades no nível do sistema operacional e do pacote Python.
  • Use o ClamAV para descobrir malware. Ele vem pré-instalado em instâncias de computação.

A instalação do agente do Microsoft Defender for Servers não é suportada no momento.

Considere o uso de scripts de personalização para automação. Para obter um exemplo de script de configuração que combina Trivy e ClamAV, consulte Scripts de configuração de exemplo de instância de computação.

Clusters de computação

Os clusters de computação atualizam automaticamente os nós para a imagem de VM mais recente. Se você configurar o cluster com min nodes = 0o , ele atualizará automaticamente os nós para a versão mais recente da imagem da VM quando todos os trabalhos forem concluídos e o cluster for reduzido a zero nós.

Nas seguintes condições, os nós de cluster não são reduzidos, portanto, não podem obter a imagem de VM mais recente:

  • A contagem mínima de nós do cluster é definida como um valor maior que zero.
  • Os trabalhos são agendados continuamente no cluster.

Você é responsável por reduzir os nós de cluster não ociosos para obter as atualizações de imagem mais recentes da VM do sistema operacional. O Azure Machine Learning não interrompe nenhuma carga de trabalho em execução em nós de computação para emitir atualizações de VM. Altere temporariamente os nós mínimos para zero e permita que o cluster reduza para zero nós.

Pontos finais online geridos

Os endpoints online gerenciados recebem automaticamente atualizações de imagem do host do sistema operacional que incluem correções de vulnerabilidade. A frequência de atualização das imagens é de pelo menos uma vez por mês.

Os nós de computação são atualizados automaticamente para a versão mais recente da imagem da VM quando essa versão é lançada. Você não precisa tomar nenhuma medida.

Clusters Kubernetes gerenciados pelo cliente

A computação do Kubernetes permite configurar clusters do Kubernetes para treinar, executar inferência e gerenciar modelos no Azure Machine Learning.

Como você gerencia o ambiente com o Kubernetes, o gerenciamento das vulnerabilidades da VM do sistema operacional e das vulnerabilidades da imagem do contêiner é de sua responsabilidade.

O Azure Machine Learning frequentemente publica novas versões das imagens de contêiner de extensão do Azure Machine Learning no Microsoft Artifact Registry. A Microsoft é responsável por garantir que as novas versões de imagem estejam livres de vulnerabilidades. Cada versão corrige vulnerabilidades.

Quando os clusters executam trabalhos sem interrupção, os trabalhos em execução podem executar versões de imagem de contêiner desatualizadas. Depois de atualizar a extensão para um cluster em execução, os trabalhos recém-enviados começam a usar a amlarc versão de imagem mais recente. Quando estiver atualizando a amlarc extensão para sua versão mais recente, limpe as versões antigas da imagem de contêiner dos clusters, conforme necessário.

Para observar se o cluster do Azure Arc está executando a versão mais recente do , use o portal do amlarcAzure. Em seu recurso do Azure Arc do tipo Kubernetes - Azure Arc, vá para Extensões para localizar a amlarc versão da extensão.

Ambientes AutoML e Designer

Para experiências de treinamento baseadas em código, você controla qual ambiente do Azure Machine Learning usar. Com o AutoML e o designer, o ambiente é encapsulado como parte do serviço. Esses tipos de trabalhos podem ser executados em cálculos que você configurar, para permitir controles extras, como isolamento de rede.

Os trabalhos do AutoML são executados em ambientes que se sobrepõem às imagens do Docker base do Aprendizado de Máquina do Azure.

Os trabalhos de designer são compartimentados em componentes. Cada componente tem seu próprio ambiente que coloca camadas sobre as imagens do Docker base do Aprendizado de Máquina do Azure. Para obter mais informações sobre componentes, consulte a referência do componente.

Próximos passos