Conectar-se ao armazenamento usando o acesso a dados baseado em identidade com o SDK v1
Neste artigo, você aprenderá como se conectar a serviços de armazenamento no Azure com acesso a dados baseado em identidade e armazenamentos de dados do Azure Machine Learning, por meio do SDK do Azure Machine Learning para Python.
Normalmente, os armazenamentos de dados usam autenticação baseada em credenciais para verificar se você tem permissão para acessar o serviço de armazenamento. Os armazenamentos de dados mantêm informações de conexão, como sua ID de assinatura e autorização de token, no cofre de chaves associado ao espaço de trabalho. Quando você cria um armazenamento de dados que usa acesso a dados baseado em identidade, sua conta do Azure (token Microsoft Entra) é usada para confirmar que você tem permissão para acessar o serviço de armazenamento. No cenário de acesso a dados baseado em identidade, nenhuma credencial de autenticação é salva. Somente as informações da conta de armazenamento são armazenadas no armazenamento de dados.
Para criar armazenamentos de dados com acesso a dados baseado em identidade por meio da interface do usuário do estúdio de Aprendizado de Máquina do Azure, consulte Conectar-se a dados com o estúdio de Aprendizado de Máquina do Azure.
Para criar armazenamentos de dados que usam autenticação baseada em credenciais, como chaves de acesso ou entidades de serviço, consulte Conectar-se a serviços de armazenamento no Azure.
Acesso a dados baseado em identidade no Azure Machine Learning
Você pode aplicar o acesso a dados baseado em identidade no Aprendizado de Máquina do Azure em dois cenários. Esses cenários são uma boa opção para acesso baseado em identidade quando você trabalha com dados confidenciais e precisa de um gerenciamento de acesso a dados mais granular:
Aviso
O acesso a dados baseado em identidade não é suportado para experiências automatizadas de ML.
- Acesso a serviços de armazenamento
- Treinando modelos de aprendizado de máquina com dados privados
Acesso a serviços de armazenamento
Você pode se conectar a serviços de armazenamento por meio do acesso a dados baseado em identidade com armazenamentos de dados do Azure Machine Learning ou conjuntos de dados do Azure Machine Learning.
Suas credenciais de autenticação são mantidas em um armazenamento de dados, o que garante que você tenha permissão para acessar o serviço de armazenamento. Quando essas credenciais são registradas por meio de armazenamentos de dados, qualquer usuário com a função Leitor de espaço de trabalho pode recuperá-las. Essa escala de acesso pode ser uma preocupação de segurança para algumas organizações. Saiba mais sobre a função Leitor do espaço de trabalho.
Quando você usa o acesso a dados baseado em identidade, o Aprendizado de Máquina do Azure solicita seu token Microsoft Entra para autenticação de acesso a dados, em vez de manter suas credenciais no armazenamento de dados. Essa abordagem permite o gerenciamento de acesso a dados no nível de armazenamento e mantém a segurança das credenciais.
O mesmo comportamento se aplica quando:
- Crie um conjunto de dados diretamente a partir de URLs de armazenamento.
- Trabalhe com dados interativamente por meio de um Jupyter Notebook em seu computador local ou instância de computação.
Nota
As credenciais armazenadas por meio da autenticação baseada em credenciais incluem IDs de assinatura, tokens de assinatura de acesso compartilhado (SAS) e chave de acesso de armazenamento e informações da entidade de serviço, como IDs de cliente e IDs de locatário.
Modelo de treinamento em dados privados
Certos cenários de aprendizado de máquina envolvem modelos de treinamento com dados privados. Nesses casos, os cientistas de dados precisam executar fluxos de trabalho de treinamento sem exposição aos dados de entrada confidenciais. Nesse cenário, uma identidade gerenciada da computação de treinamento autentica o acesso aos dados. Essa abordagem permite que os administradores de armazenamento concedam ao Storage Blob Data Reader acesso à identidade gerenciada que a computação de treinamento usa para executar o trabalho de treinamento. Os cientistas de dados individuais não precisam ter acesso. Para obter mais informações, visite Configurar identidade gerenciada em um cluster de computação.
Pré-requisitos
Uma subscrição do Azure. Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar. Experimente a versão gratuita ou paga do Azure Machine Learning.
Uma conta de armazenamento do Azure com um tipo de armazenamento suportado. Estes tipos de armazenamento são suportados:
- Armazenamento de Blobs do Azure
- Armazenamento do Azure Data Lake Ger1
- Azure Data Lake Storage Gen2 (Armazenamento do Azure Data Lake Gen2)
- Base de Dados SQL do Azure
Uma área de trabalho do Azure Machine Learning.
Crie um espaço de trabalho do Azure Machine Learning ou use um existente por meio do Python SDK.
Criar e registrar datastores
Ao registrar um serviço de armazenamento no Azure como um armazenamento de dados, você cria e registra automaticamente esse armazenamento de dados em um espaço de trabalho específico. Consulte Permissões de acesso ao armazenamento para obter orientação sobre os tipos de permissão necessários. Você também pode criar manualmente o armazenamento ao qual deseja se conectar sem permissões especiais, e você só precisa do nome.
Consulte Trabalhar com redes virtuais para obter detalhes sobre como se conectar ao armazenamento de dados por trás de redes virtuais.
No código a seguir, observe a ausência de parâmetros de autenticação como sas_token
, account_key
, subscription_id
, e a entidade client_id
de serviço . Essa omissão indica que o Aprendizado de Máquina do Azure usa acesso a dados baseado em identidade para autenticação. A criação de datastores normalmente acontece interativamente em um notebook ou através do estúdio. A autenticação de acesso a dados usa seu token Microsoft Entra.
Nota
Os nomes do armazenamento de dados devem consistir apenas em letras minúsculas, números e sublinhados.
Contentor de blobs do Azure
Para registrar um contêiner de blob do Azure como um armazenamento de dados, use register_azure_blob_container()
.
O código a seguir cria o credentialless_blob
armazenamento de dados, registra-o no ws
espaço de trabalho e o atribui à blob_datastore
variável. Esse armazenamento de dados acessa o my_container_name
contêiner de blob na my-account-name
conta de armazenamento.
# Create blob datastore without credentials.
blob_datastore = Datastore.register_azure_blob_container(workspace=ws,
datastore_name='credentialless_blob',
container_name='my_container_name',
account_name='my_account_name')
Armazenamento do Azure Data Lake Ger1
Use register_azure_data_lake() para registrar um armazenamento de dados que se conecta ao Azure Data Lake Storage Gen1.
O código a seguir cria o credentialless_adls1
armazenamento de dados, registra-o no workspace
espaço de trabalho e o atribui à adls_dstore
variável. Este armazenamento de dados acede à conta de adls_storage
Armazenamento do Azure Data Lake.
# Create Azure Data Lake Storage Gen1 datastore without credentials.
adls_dstore = Datastore.register_azure_data_lake(workspace = workspace,
datastore_name='credentialless_adls1',
store_name='adls_storage')
Azure Data Lake Storage Gen2
Use register_azure_data_lake_gen2() para registrar um armazenamento de dados que se conecta ao Azure Data Lake Storage Gen2.
O código a seguir cria o credentialless_adls2
armazenamento de dados, registra-o no ws
espaço de trabalho e o atribui à adls2_dstore
variável. Esse armazenamento de dados acessa o sistema tabular
de arquivos na myadls2
conta de armazenamento.
# Create Azure Data Lake Storage Gen2 datastore without credentials.
adls2_dstore = Datastore.register_azure_data_lake_gen2(workspace=ws,
datastore_name='credentialless_adls2',
filesystem='tabular',
account_name='myadls2')
Base de dados SQL do Azure
Para um banco de dados SQL do Azure, use register_azure_sql_database() para registrar um armazenamento de dados que se conecta a um armazenamento de banco de dados SQL do Azure.
O código a seguir cria e registra o credentialless_sqldb
armazenamento de dados no ws
espaço de trabalho e o atribui à variável, sqldb_dstore
. Esse armazenamento de dados acessa o banco de dados mydb
no myserver
servidor SQL DB.
# Create a sqldatabase datastore without credentials
sqldb_dstore = Datastore.register_azure_sql_database(workspace=ws,
datastore_name='credentialless_sqldb',
server_name='myserver',
database_name='mydb')
Permissões de acesso ao armazenamento
Para garantir que você se conecte com segurança ao seu serviço de armazenamento no Azure, o Azure Machine Learning exige que você tenha permissão para acessar o armazenamento de dados correspondente.
Aviso
Não há suporte para acesso entre locatários a contas de armazenamento. Se o acesso entre locatários for necessário para o seu cenário, entre em contato com o alias da equipe de Suporte de Dados do Azure Machine Learning em amldatasupport@microsoft.com para obter assistência com uma solução de código personalizado.
O acesso a dados baseado em identidade suporta conexões apenas com os seguintes serviços de armazenamento.
- Armazenamento de Blobs do Azure
- Armazenamento do Azure Data Lake Ger1
- Armazenamento do Azure Data Lake Ger2
- Base de Dados SQL do Azure
Para acessar esses serviços de armazenamento, você deve ter pelo menos acesso ao Storage Blob Data Reader à conta de armazenamento. Apenas os proprietários de contas de armazenamento podem alterar o seu nível de acesso através do portal do Azure.
Se preferir não usar sua identidade de usuário (ID do Microsoft Entra), você também pode conceder uma permissão de identidade do sistema gerenciado (MSI) do espaço de trabalho para criar o armazenamento de dados. Para fazer isso, você deve ter permissões de proprietário para a conta de armazenamento e você deve adicionar o grant_workspace_access= True
parâmetro ao seu método de registro de dados.
Se você treinar um modelo em um destino de computação remoto e quiser acessar os dados para treinamento, a identidade de computação deverá receber pelo menos a função Leitor de Dados de Blob de Armazenamento do serviço de armazenamento. Saiba como configurar a identidade gerenciada em um cluster de computação.
Trabalhar com redes virtuais
Por padrão, o Aprendizado de Máquina do Azure não pode se comunicar com uma conta de armazenamento localizada atrás de um firewall ou em uma rede virtual.
Você pode configurar contas de armazenamento para permitir o acesso somente de dentro de redes virtuais específicas. Essa configuração requer mais etapas para garantir que os dados não vazem para fora da rede. Esse comportamento é o mesmo para acesso a dados baseado em credenciais. Para obter mais informações, consulte Como configurar cenários de rede virtual.
Se sua conta de armazenamento tiver configurações de rede virtual, elas ditarão o tipo de identidade necessário e as permissões de acesso. Por exemplo, para visualização de dados e perfil de dados, as configurações de rede virtual determinam que tipo de identidade é usado para autenticar o acesso aos dados.
Em cenários em que apenas determinados IPs e sub-redes têm permissão para acessar o armazenamento, o Aprendizado de Máquina do Azure usa o MSI do espaço de trabalho para realizar visualizações de dados e perfis.
Se o seu armazenamento for ADLS Gen 2 ou Blob e tiver configurações de rede virtual, os clientes poderão usar a identidade do usuário ou o MSI do espaço de trabalho, dependendo das configurações do armazenamento de dados definidas durante a criação.
Se a configuração de rede virtual for "Permitir que os serviços do Azure na lista de serviços confiáveis acessem esta conta de armazenamento", o MSI do Espaço de Trabalho será usado.
Usar dados no armazenamento
Recomendamos que você use conjuntos de dados do Azure Machine Learning quando interagir com seus dados em armazenamento com o Azure Machine Learning.
Importante
Não há suporte para conjuntos de dados que usam acesso a dados baseado em identidade para experimentos automatizados de ML.
Os conjuntos de dados empacotam seus dados em um objeto consumível avaliado preguiçosamente para tarefas de aprendizado de máquina, como treinamento. Além disso, com conjuntos de dados, você pode baixar ou montar arquivos de qualquer formato dos serviços de armazenamento do Azure, como o Armazenamento de Blobs do Azure e o Armazenamento do Azure Data Lake, para um destino de computação.
Para criar um conjunto de dados, você pode fazer referência a caminhos de armazenamentos de dados que também usam acesso a dados baseado em identidade.
- Se o tipo de conta de armazenamento subjacente for Blob ou ADLS Gen 2, sua identidade de usuário precisará da função Leitor de Blob.
- Se o armazenamento subjacente for ADLS Gen 1, você poderá definir permissões por meio da Lista de Controle de Acesso (ACL) do armazenamento.
No exemplo a seguir, blob_datastore
já existe e usa o acesso a dados baseado em identidade.
blob_dataset = Dataset.Tabular.from_delimited_files(blob_datastore,'test.csv')
Você também pode ignorar a criação de armazenamento de dados e criar conjuntos de dados diretamente de URLs de armazenamento. Atualmente, essa funcionalidade oferece suporte apenas a blobs do Azure e ao Azure Data Lake Storage Gen1 e Gen2. Para a criação com base na URL de armazenamento, apenas a identidade do usuário é necessária para autenticar.
blob_dset = Dataset.File.from_files('https://myblob.blob.core.windows.net/may/keras-mnist-fashion/')
Quando você envia um trabalho de treinamento que consome um conjunto de dados criado com acesso a dados baseado em identidade, a identidade gerenciada por computação de treinamento é usada para autenticação de acesso a dados. Seu token Microsoft Entra não é usado. Para esse cenário, verifique se a identidade gerenciada da computação recebe pelo menos a função Leitor de Dados de Blob de Armazenamento do serviço de armazenamento. Para obter mais informações, consulte Configurar identidade gerenciada em clusters de computação.