Gerenciamento de vulnerabilidades para Azure Machine Learning

O gerenciamento de vulnerabilidades envolve a detecção, a avaliação, a mitigação e a emissão de relatórios sobre as vulnerabilidades de segurança existentes em sistemas e software da organização. O gerenciamento de vulnerabilidades é uma responsabilidade compartilhada entre você e a Microsoft.

Este artigo discute essas responsabilidades e descreve os controles de gerenciamento de vulnerabilidades que o Azure Machine Learning oferece. Você aprenderá como manter sua instância de serviço e seus aplicativos atualizados com as últimas atualizações de segurança e como minimizar a janela de oportunidade para os invasores.

Imagens de VM gerenciadas pela Microsoft

O Azure Machine Learning gerencia as imagens de máquina virtual (VM) do SO 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 de VM, as atualizações mais recentes são originadas do editor original do sistema operacional. Usar as atualizações mais recentes ajuda a garantir que você receba todos os patches aplicáveis relacionados ao sistema operacional. No caso do Azure Machine Learning, o fornecedor para todas as imagens do Ubuntu é a Canonical. Essas imagens são usadas para Azure Machine Learning instâncias de computação, clusters de computação e Máquina Virtual de Ciência de Dados.

  • As imagens de 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 todos os pacotes de aprendizado de máquina que possam exigir uma atualização. Na maioria das circunstâncias, 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 vulnerabilidade regularmente. O Azure Machine Learning sinaliza todas as vulnerabilidades não abordadas e as corrigirá 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 da imagem está alinhada com a cadência de lançamento do SDK do Azure Machine Learning que está pré-instalado no ambiente.

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

Observação

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

Imagens de contêiner gerenciadas pela Microsoft

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

O Azure Machine Learning libera atualizações para imagens com suporte a cada duas semanas para resolver vulnerabilidades. Como um compromisso, visamos não ter nenhuma vulnerabilidade com mais de 30 dias na versão mais recente das imagens com suporte.

As imagens corrigidas são liberadas com uma nova marca imutável e uma marca :latest atualizada. A utilização da marca :latest ou a fixação de uma versão específica da imagem pode ser uma troca entre segurança e reprodutibilidade do ambiente para seu trabalho de aprendizado de máquina.

Gerenciando ambientes e imagens de contêiner

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

Embora o Azure Machine Learning aplique patches nas imagens de base a cada versão, o fato de você usar ou não 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 modelos.

Por padrão, as dependências são colocadas em camadas sobre as imagens de base que o Azure Machine Learning fornece quando você está criando ambientes. Você também pode usar suas próprias imagens de base quando estiver usando ambientes no Azure Machine Learning. Ao 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.

Associada 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êineres. Qualquer imagem que se materialize é enviada por push para o registro do contêiner. O espaço de trabalho o utilizará se a experimentação ou a implantação for acionada para o ambiente correspondente.

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

Usando um repositório de pacotes privado

O Azure Machine Learning usa o Conda e o Pip para instalar pacotes Python. Por padrão, o Azure Machine Learning baixa pacotes de repositórios públicos. Se a sua organização exigir que você obtenha pacotes apenas de repositórios privados, como os feeds do Azure DevOps, será possível substituir a configuração do Conda e do Pip como parte das imagens de base e das 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 privados do Conda e do Pip. Considere usar 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 de 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 a configuração de ambientes Conda, consulte Criando um arquivo de ambiente manualmente no site do Conda.

Gerenciamento de vulnerabilidades em hosts de computação

Os nós de computação gerenciados no Azure Machine Learning usam imagens de VM de sistema operacional gerenciadas pela Microsoft. Quando você provisiona um nó, ele efetua pull da imagem da VM atualizada mais recente. Esse comportamento se aplica à instância de computação, ao cluster de computação, à computação sem servidor (versão prévia) e às opções de computação de inferência gerenciada.

Embora as imagens de VM do sistema operacional sejam corrigidas regularmente, o Azure Machine Learning não verifica ativamente as vulnerabilidades dos nós de computação enquanto eles estão em uso. Para obter uma camada extra de proteção, considere o isolamento de rede de sua 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 um pouco 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 VM mais recentes no momento do provisionamento. A Microsoft lança novas imagens de VM mensalmente. Depois que você implantar uma instância de computação, ela não será atualizada ativamente. É possível consultar a versão do sistema operacional de uma instância. Para manter-se atualizado com as últimas atualizações de software e patches de segurança, 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) que estão armazenados no sistema operacional e nos discos temporários da instância.

    Quando você recriar sua instância:

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

  • Atualize regularmente o sistema operacional e os pacotes 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 últimas versões. Podem ocorrer conflitos de pacotes quando você usa essa abordagem.

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

      pip list --outdated
      

Você pode instalar e executar um 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 em nível de pacote do sistema operacional e do Python.
  • Use o ClamAV para descobrir o malware. Ele vem pré-instalado em instâncias de computação.

No momento, não há suporte para a instalação do agente do Microsoft Defender para servidores.

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

Clusters de cálculo

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 = 0, 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 condições a seguir, os nós do cluster não são reduzidos verticalmente, 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 em seu cluster.

Você é responsável por reduzir verticalmente os nós de cluster não ociosos para obter as atualizações mais recentes da imagem da VM do SO. O Azure Machine Learning não interrompe nenhuma carga de trabalho em execução nos 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 de extremidade online gerenciados

Os terminais online gerenciados recebem automaticamente atualizações da imagem do host do sistema operacional que incluem correções de vulnerabilidades. A frequência de atualização das imagens é 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 realizar nenhuma ação.

Clusters Kubernetes gerenciados pelo cliente

A computação do Kubernetes permite configurar clusters do Kubernetes para treinar, realizar 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 publica frequentemente novas versões de imagens de contêineres de extensão do Azure Machine Learning no Registro de Artefato da Microsoft. A Microsoft é responsável por garantir que as novas versões da imagem estejam livres de vulnerabilidades. Cada versão corrige as vulnerabilidades.

Quando seus clusters executam trabalhos sem interrupção, os trabalhos em execução podem executar versões desatualizadas de imagens de contêineres. Após atualizar a extensão amlarc para um cluster em execução, os trabalhos recém-enviados iniciam o uso da versão mais recente da imagem. Quando estiver atualizando a extensão amlarc para a versão mais recente, limpe as versões antigas de imagens de contêineres dos clusters, conforme necessário.

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

Ambientes AutoML e Designer

Para experiências de treinamento baseadas em código, controle qual ambiente do Azure Machine Learning deve ser usado. Com o AutoML e o designer, o ambiente é encapsulado como parte do serviço. Esses tipos de trabalhos podem ser executados em computadores configurados por você, para permitir controles adicionais, como isolamento de rede.

Os trabalhos do AutoML são executados em ambientes que se sobrepõem às imagens básicas do Docker no Azure Machine Learning.

Os trabalhos de designer são compartimentados em componentes. Cada componente tem seu próprio ambiente que se sobrepõe às imagens básicas do Docker do Azure Machine Learning. Para obter mais informações sobre componentes, consulte a referência do componente.

Próximas etapas