Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
APLICA-SE A:
Azure CLI ml extension v2 (current)
Python SDK azure-ai-ml v2 (current)
Este artigo mostra-lhe como utilizar o isolamento de rede para melhorar a segurança de um ponto de extremidade online gerido do Azure Machine Learning. O isolamento de rede ajuda a proteger a comunicação de entrada e saída do seu terminal.
Para ajudar a proteger a comunicação de entrada, pode criar uma extremidade online gerida que utiliza a extremidade privada de um ambiente de trabalho do Azure Machine Learning. Para permitir apenas a comunicação de saída aprovada para implantações, você pode configurar o espaço de trabalho com uma rede virtual gerenciada. Este artigo mostra como executar essas etapas para melhorar a segurança do ponto final. Também lhe mostra como criar uma implementação que utiliza os pontos finais privados da rede virtual gerida do espaço de trabalho para comunicação de saída.
Se preferir usar o método herdado para isolamento de rede, consulte os seguintes exemplos de arquivo de implantação no repositório GitHub azureml-examples :
- Para uma implantação que usa um modelo genérico: deploy-moe-vnet-legacy.sh
- Para uma implantação que usa um modelo MLflow: deploy-moe-vnet-mlflow-legacy.sh
Pré-requisitos
Uma assinatura do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
A CLI do Azure e a extensão da CLI
mldo Azure, instaladas e configuradas. Para mais informações, veja Install and set up the CLI (v2).Gorjeta
O recurso de rede virtual gerenciada do Azure Machine Learning foi apresentado em 23 de maio de 2023. Se você tiver uma versão mais antiga da
mlextensão, talvez seja necessário atualizá-la para que os exemplos neste artigo funcionem. Para atualizar a extensão, use o seguinte comando da CLI do Azure:az extension update -n mlUm shell Bash ou um shell compatível, por exemplo, um shell num sistema Linux ou Subsistema Windows para Linux. Os exemplos da CLI do Azure neste artigo pressupõem que você use esse tipo de shell.
Um grupo de recursos do Azure no qual tu ou o principal de serviço que estás a usar têm acesso de colaborador. Para obter instruções sobre como criar um grupo de recursos, consulte Configurar.
Uma identidade gerida atribuída pelo utilizador com permissões apropriadas, caso pretenda usar uma identidade gerida para criar e gerir pontos finais online e implementações online. Para obter informações detalhadas sobre as permissões necessárias, consulte Configurar a autenticação entre o Azure Machine Learning e outros serviços. Por exemplo, você precisa conceder à sua identidade gerida permissões de controle de acesso do Azure baseadas em função (Azure RBAC) específicas para o Azure Key Vault.
Migrar do método de isolamento de rede herdado para uma rede virtual gerenciada pelo espaço de trabalho
Se você usar o método herdado para isolamento de rede de pontos de extremidade online gerenciados e quiser migrar para uma rede virtual gerenciada para proteger seus pontos de extremidade, siga estas etapas:
- Crie um novo espaço de trabalho e habilite uma rede virtual gerenciada. Para obter mais informações sobre como configurar uma rede gerenciada para seu espaço de trabalho, consulte Isolamento de rede virtual gerenciado por espaço de trabalho.
- (Opcional) Se suas implantações acessarem recursos privados diferentes do Armazenamento do Azure, do Cofre da Chave e do Registro de Contêiner do Azure, adicione regras de saída às configurações de rede do seu espaço de trabalho. Especificamente, a rede é configurada com regras para o Armazenamento do Azure, Cofre de Chaves e Registro de Contêiner por padrão. Adicione regras com pontos de extremidade privados para quaisquer outros recursos privados que utilizar.
- (Opcional) Se pretendes usar um registo do Azure Machine Learning, configura pontos de extremidade privados para comunicação de saída com o teu registo, a tua conta de armazenamento e a tua instância do Registo de Contêiner.
- Crie pontos finais e implementações online no novo workspace. Se você usar os registros do Azure Machine Learning, poderá implantar componentes diretamente a partir deles. Para mais informações, consulte Desenvolver o modelo a partir do registo para o ponto de extremidade online no espaço de trabalho.
- Atualize os aplicativos que invocam pontos de extremidade para que os aplicativos usem os URIs de pontuação dos novos pontos de extremidade online.
- Depois de validar os seus novos endpoints, elimine os endpoints online no seu espaço de trabalho antigo.
Se você não precisar evitar o tempo de inatividade durante a migração, poderá adotar uma abordagem mais direta. Se você não precisar manter instâncias de computação, pontos de extremidade online e implantações em seu espaço de trabalho antigo, poderá excluir as instâncias de computação e, em seguida, atualizar o espaço de trabalho para habilitar uma rede virtual gerenciada.
Limitações
O
v1_legacy_modesinalizador deve ser definido parafalsedesativar o modo herdado v1 em seu espaço de trabalho do Azure Machine Learning. Se essa configuração estiver ativada, não será possível criar um ponto de extremidade online gerenciado. Para obter mais informações, consulte Alteração de isolamento de rede com nossa nova plataforma de API no Azure Resource Manager.Se o seu espaço de trabalho do Azure Machine Learning tiver um ponto de extremidade privado que foi criado antes de 24 de maio de 2022, você deverá recriar esse ponto de extremidade privado antes de configurar seus pontos de extremidade online para usar pontos de extremidade privados. Para obter mais informações sobre como criar um ponto de extremidade privado para seu espaço de trabalho, consulte Configurar um ponto de extremidade privado para um espaço de trabalho do Azure Machine Learning.
Gorjeta
Para ver a data de criação de um espaço de trabalho, você pode verificar as propriedades do espaço de trabalho.
- No estúdio do Azure Machine Learning, vá para o canto superior direito e selecione o nome do seu espaço de trabalho.
- Na janela Diretório + Subscrição + Espaço de Trabalho, selecione Ver todas as propriedades no portal Azure.
- Na página Visão geral do portal do Azure, vá para o canto superior direito e selecione Exibição JSON.
- Na janela JSON de recursos, em Versões da API, selecione a versão mais recente da API.
-
propertiesNa seção do código JSON, verifique o valorcreationTime.
Como alternativa, use um dos seguintes métodos:
-
SDK do Python:
Workspace.get(name=<workspace-name>, subscription_id=<subscription-ID>, resource_group=<resource-group-name>).get_details() -
API REST:
curl https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/?api-version=2023-10-01 -H "Authorization:Bearer <access-token>" -
PowerShell:
Get-AzMLWorkspace -Name <workspace-name> -ResourceGroupName <resource-group-name>
Ao usares o isolamento de rede para ajudar a proteger pontos de extremidade online, podes utilizar recursos associados ao espaço de trabalho provenientes de um grupo de recursos diferente do grupo de recursos do teu espaço de trabalho. No entanto, esses recursos devem pertencer à mesma assinatura e locatário do seu espaço de trabalho. Os recursos associados a um espaço de trabalho incluem o Registro de Contêiner do Azure, o Armazenamento do Azure, o Cofre da Chave do Azure e o Application Insights.
Nota
Este artigo descreve o isolamento de rede que se aplica a operações de plano de dados. Essas operações resultam de solicitações de pontuação, ou serviço de modelo. As operações do plano de controle, como solicitações para criar, atualizar, excluir ou recuperar chaves de autenticação, são enviadas ao Azure Resource Manager pela rede pública.
Prepare o seu sistema
Crie variáveis de ambiente executando os seguintes comandos. Substitua
<resource-group-name>pelo grupo de recursos do seu espaço de trabalho. Substitua<workspace-name>pelo nome do seu espaço de trabalho.export RESOURCEGROUP_NAME="<resource-group-name>" export WORKSPACE_NAME="<workspace-name>"Crie o seu espaço de trabalho. O
-m allow_only_approved_outboundparâmetro configura uma rede virtual gerenciada para o espaço de trabalho e bloqueia o tráfego de saída, exceto para destinos aprovados.az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_only_approved_outboundComo alternativa, se o utilizador quiser permitir que a implementação envie tráfego de saída para a Internet, descomente o código a seguir e execute-o.
# az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_internet_outboundPara obter mais informações sobre como criar um novo espaço de trabalho ou atualizar seu espaço de trabalho existente para usar uma rede virtual gerenciada, consulte Configurar uma rede virtual gerenciada para permitir a saída da Internet.
Provisionar a rede virtual gerida. Para obter instruções e mais informações, consulte Provisionar manualmente uma rede virtual gerenciada.
Importante
Quando você configura uma rede virtual gerenciada para um espaço de trabalho pela primeira vez, a rede não é provisionada. Não é possível criar implantações online até provisionar a rede gerenciada.
Configure o registro de contêiner associado ao espaço de trabalho para usar um plano de preços premium. Essa configuração é necessária para fornecer acesso ao registro por meio de um ponto de extremidade privado. Para obter mais informações, veja Escalões de serviço do Azure Container Registry (ACR).
Configure seu espaço de trabalho para usar um cluster de computação ou uma instância de computação para criar imagens. Você pode usar a
image_build_computepropriedade para este fim. Para obter mais informações e instruções, consulte Configurar compilações de imagem.Configure valores padrão para a CLI do Azure para que você possa evitar passar os valores para seu espaço de trabalho e grupo de recursos várias vezes.
az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAMEClone o repositório de exemplos para obter os ficheiros de exemplo para o ponto de extremidade e a implantação. Em seguida, vá para o diretório cli do repositório.
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli
Os comandos neste artigo estão no arquivo deploy-managed-online-endpoint-workspacevnet.sh no diretório cli. Os arquivos de configuração do YAML estão no subdiretório endpoints/online/managed/sample/.
Criar um endpoint online gerenciado seguro
Para criar um ponto de extremidade online gerido e seguro, crie o ponto de extremidade na sua área de trabalho. Em seguida, configure o valor do ponto de extremidade public_network_access para disabled a fim de controlar a comunicação de entrada.
Esta configuração obriga o ponto de extremidade online a usar o ponto de extremidade privado do espaço de trabalho para a comunicação de entrada. A única maneira de invocar o ponto de extremidade online é usando um ponto de extremidade privado que possa acessar o espaço de trabalho em sua rede virtual. Para obter mais informações, consulte Proteger solicitações de pontuação de entrada e Configurar um ponto de extremidade privado para um espaço de trabalho do Azure Machine Learning.
Como o espaço de trabalho está configurado para ter uma rede virtual gerenciada, todas as implantações de ponto de extremidade usam os pontos de extremidade privados da rede virtual gerenciada para comunicação de saída.
Defina o nome do ponto de extremidade:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"Crie um ponto de extremidade com
public_network_accessdefinido comodisabledpara bloquear o tráfego de entrada.Nota
O script referenciado utiliza ficheiros de configuração YAML do repositório clonado. Certifica-te de que estás no diretório correto (cli) depois de clonares o repositório, ou fornece o caminho completo para os teus ficheiros YAML. No Azure Cloud Shell, verifique se os ficheiros estão acessíveis no seu armazenamento na cloud antes de executar os comandos.
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabledComo alternativa, se pretender permitir que o endpoint receba solicitações de pontuação via Internet, descomente o código seguinte e execute-o:
# az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Testar o parâmetro de avaliação
Crie uma implantação na rede virtual gerenciada do espaço de trabalho:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-trafficSe você receber um erro sobre uma falha de autorização, verifique a configuração de rede para a conta de armazenamento do espaço de trabalho. Talvez seja necessário ajustar as configurações de acesso à rede pública para conceder ao espaço de trabalho acesso à conta de armazenamento.
Obtenha o status da implantação:
az ml online-endpoint show -n $ENDPOINT_NAMETeste o ponto de extremidade emitindo uma solicitação de pontuação:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.jsonObtenha os logs de implantação:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Limpeza de recursos
Se você não precisar mais do ponto de extremidade, execute o seguinte comando para excluí-lo.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-waitSe você não precisar mais do espaço de trabalho, seus recursos associados e os outros recursos do seu grupo de recursos, exclua-os. Substitua
<resource-group-name>pelo nome do grupo de recursos que contém seu espaço de trabalho.az group delete --resource-group <resource-group-name>
Resolução de Problemas
A criação de endpoints online falha com uma mensagem sobre o modo legado v1
Os endpoints online geridos são uma funcionalidade da plataforma de API do Azure Machine Learning v2. Se o seu espaço de trabalho do Azure Machine Learning estiver configurado para o modo legado v1, os endereços online geridos não funcionarão. Especificamente, se a configuração do espaço de trabalho estiver definida como v1_legacy_mode, o true modo herdado v1 será ativado e não haverá suporte para APIs v2.
Para ver como desativar o modo herdado v1, consulte Alteração de isolamento de rede com nossa nova plataforma de API no Azure Resource Manager.
Importante
Verifique com a sua equipa de segurança de rede antes de definir v1_legacy_mode como false, porque o modo v1 herdado pode estar ativado por um motivo.
Falha na criação de endpoints online com autenticação baseada em chaves
Use o comando a seguir para listar as regras de rede do cofre de chaves do Azure para seu espaço de trabalho. Substitua <key-vault-name> pelo nome do cofre de chaves.
az keyvault network-rule list -n <key-vault-name>
A resposta para este comando é semelhante ao seguinte código JSON:
{
"bypass": "AzureServices",
"defaultAction": "Deny",
"ipRules": [],
"virtualNetworkRules": []
}
Se o valor de bypass não for AzureServices, use as orientações em Configurar configurações de rede do Azure Key Vault para defini-lo como AzureServices.
As implementações online falham com um erro de transferência de imagem
Nota
Esse problema se aplica quando você usa o método de isolamento de rede herdado para pontos de extremidade online gerenciados. Nesse método, o Azure Machine Learning cria uma rede virtual gerida para cada implantação em um endpoint.
Verifique se a
egress-public-network-accessbandeira tem um valor dedisabledpara a implantação. Se esse sinalizador estiver habilitado e a visibilidade do registro de contêiner for privada, essa falha será esperada.Utilize o seguinte comando para verificar o estado da ligação do ponto de extremidade privado. Substitua
<registry-name>pelo nome do Registro de Contêiner do Azure para seu espaço de trabalho:az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{ID:id, status:privateLinkServiceConnectionState.status}"No código de resposta, verifique se o
statuscampo está definido comoApproved. Se o valor não forApproved, use o seguinte comando para aprovar a conexão. Substitua<private-endpoint-connection-ID>pelo ID retornado pelo comando anterior.az network private-endpoint-connection approve --id <private-endpoint-connection-ID> --description "Approved"
Não é possível resolver o ponto final de classificação
Verifique se o cliente que emite a solicitação de pontuação é uma rede virtual que pode acessar o espaço de trabalho do Azure Machine Learning.
Use o
nslookupcomando no nome do host do ponto de extremidade para recuperar as informações do endereço IP:nslookup <endpoint-name>.<endpoint-region>.inference.ml.azure.comPor exemplo, seu comando pode ser semelhante ao seguinte:
nslookup endpointname.westcentralus.inference.ml.azure.comA resposta contém um endereço que deve estar no intervalo fornecido pela rede virtual.
Nota
- Para o ponto de extremidade online do Kubernetes, o nome do host do ponto de extremidade deve ser o CName (nome de domínio) especificado no cluster do Kubernetes.
- Se o ponto de extremidade usa HTTP, o endereço IP está contido no URI do ponto de extremidade, que pode ser obtido pela interface do estúdio.
- Para saber mais formas de obter o endereço IP do ponto de extremidade, consulte Atualizar o seu DNS com um FQDN.
Se o
nslookupcomando não resolver o nome do host, execute as ações em uma das seções a seguir.
Pontos finais online geridos
Use o comando a seguir para verificar se existe um registro A na zona DNS (Sistema de Nomes de Domínio) privada para a rede virtual.
az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].nameOs resultados devem conter uma entrada semelhante a
*.<GUID>.inference.<region>.Se nenhum valor de inferência for retornado, exclua o ponto de extremidade privado do espaço de trabalho e recrie-o. Para obter mais informações, consulte Como configurar um ponto de extremidade privado.
Caso o espaço de trabalho com um ponto de extremidade privado utilize um servidor DNS personalizado, execute o seguinte comando para verificar se a resolução desse servidor DNS funciona corretamente:
dig <endpoint-name>.<endpoint-region>.inference.ml.azure.com
Pontos finais online do Kubernetes
Verifique a configuração de DNS no cluster Kubernetes.
Verifique se o roteador de inferência do Azure Machine Learning,
azureml-fe, funciona conforme o esperado. Para executar essa verificação, execute as seguintes etapas:Execute o seguinte comando no
azureml-fepod:kubectl exec -it deploy/azureml-fe -- /bin/bashExecute um dos seguintes comandos:
curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"Para HTTP, use o seguinte comando:
curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json "Swagger not found"
Se o comando curl HTTPS falhar ou expirar, mas o comando HTTP funcionar, verifique se o certificado é válido.
Se o processo anterior falhar em resolver o registo A, use o seguinte comando para verificar se a resolução funciona a partir do endereço IP público virtual do Azure DNS, 168.63.129.16:
dig @168.63.129.16 <endpoint-name>.<endpoint-region>.inference.ml.azure.comSe o comando anterior for bem-sucedido, solucione problemas do encaminhador condicional para o Azure Private Link em um DNS personalizado.
As implementações online não podem ser classificadas
Execute o seguinte comando para ver o status de uma implantação que não pode ser pontuada:
az ml online-deployment show -e <endpoint-name> -n <deployment-name> --query '{name:name,state:provisioning_state}'Um valor de
Succeededpara ostatecampo indica uma implantação bem-sucedida.Para uma implantação bem-sucedida, use o seguinte comando para verificar se o tráfego está atribuído à implantação:
az ml online-endpoint show -n <endpoint-name> --query trafficA resposta desse comando deve listar a porcentagem de tráfego atribuída a cada implantação.
Gorjeta
Esta etapa não será necessária se tu usares o cabeçalho
azureml-model-deploymentna tua solicitação para direcionar esta implementação.Se as atribuições de rede ou o cabeçalho de implementação estiverem definidos corretamente, use o seguinte comando para obter os logs do endpoint:
az ml online-deployment get-logs -e <endpoint-name> -n <deployment-name>Revise os logs para ver se há um problema ao executar o código de pontuação ao enviar uma solicitação para a implantação.