Conectar-se ao armazenamento usando o acesso a dados com base em identidade com SDK v1
Neste artigo, você aprenderá a se conectar aos serviços de armazenamento no Azure com acesso a dados com base em identidade e armazenamento de dados do Azure Machine Learning por meio do SDK para Python do Azure Machine Learning.
Normalmente, os armazenamentos de dados usam o acesso a dados com base em credencial para verificar que você tem permissão para acessar o serviço de armazenamento. Os armazenamentos de dados mantêm as informações de conexão, como sua ID da assinatura e autorização de token, no key vault associado ao workspace. Quando você cria um armazenamento de dados que usa o acesso aos dados baseado em identidade, sua conta do Azure (token do 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 os armazenamentos de dados com acesso a dados baseado em identidade por meio da interface do usuário do Estúdio do Azure Machine Learning, consulte Conectar a dados com o Azure Machine Learning Studio.
Para criar armazenamentos de dados que usam autenticação com base em credencial, como chaves de acesso ou entidades de serviço, consulte Conectar-se aos serviços de armazenamento no Azure.
Acesso a dados com base em identidade no Azure Machine Learning
Você pode aplicar o acesso a dados com base em identidade no Azure Machine Learning em dois cenários. Esses cenários são ideais para o acesso com base em identidade quando você está usando dados confidenciais e precisa de um gerenciamento de acesso a dados mais granular:
Aviso
Não há suporte para acesso a dados baseados em identidade para experimentos ML automatizados.
- Acessando serviços de armazenamento
- Treinamento de modelos de machine learning com dados particulares
Acessando serviços de armazenamento
Você pode se conectar a serviços de armazenamento por meio de acesso a dados com base 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, que é usado para garantir que você tenha permissão para acessar o serviço de armazenamento. Quando essas credenciais são registradas por meio do armazenamento de dados, qualquer usuário com a função Leitor de espaço de trabalho pode recuperá-las. Essa escala de acesso pode ser um problema de segurança para algumas organizações. Saiba mais sobre a função leitor de espaço de trabalho.
Quando você usa o acesso aos dados baseado em identidade, o Azure Machine Learning solicita o token do Microsoft Entra para autenticar o acesso aos dados, em vez de manter suas credenciais no armazenamento de dados. Essa abordagem permite o gerenciamento de acesso a dados no nível do armazenamento e mantém a segurança das credenciais.
O mesmo comportamento se aplica quando você:
- Cria um conjunto de dados diretamente das URLs de armazenamento.
- Trabalha com dados interativamente por meio de um Jupyter Notebook em seu computador local ou instância de computação.
Observação
As credenciais armazenadas por meio da autenticação com base em credencial incluem IDs da assinatura, tokens de assinatura de acesso compartilhado (SAS), chave de acesso de armazenamento e informações da entidade de serviço, como IDs do cliente e IDs do locatário.
Treinamento de modelo em dados particulares
Determinados cenários de aprendizado de máquina envolvem modelos de treinamento com dados particulares. 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 a dados. Essa abordagem permite que os administradores de armazenamento concedam acesso de Leitor de Dados de Blob de Armazenamento à identidade gerenciada que a computação de treinamento usa para executar o trabalho de treinamento. Os cientistas de dados individuais não precisam receber acesso. Para obter mais informações, confira Configurar a identidade gerenciada em um cluster de cálculo.
Pré-requisitos
Uma assinatura do Azure. Caso não tenha uma assinatura 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 com suporte. Há suporte para estes tipos de armazenamento na:
Um Workspace do Azure Machine Learning.
Crie um espaço de trabalho do Azure Machine Learning ou use um existente por meio do SDK do Python.
Criar e registrar armazenamentos de dados
Quando registra um serviço de armazenamento do 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 de armazenamento para obter diretrizes 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 precisa apenas do nome.
Consulte Trabalhar com redes virtuais para obter detalhes sobre como se conectar ao armazenamento de dados por trás das 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 de serviço client_id
. Essa omissão indica que o Azure Machine Learning usa o acesso a dados com base em identidade para autenticação. A criação de armazenamentos de dados normalmente ocorre interativamente em um notebook ou por meio do estúdio. A autenticação de acesso aos dados usa o seu token do Microsoft Entra.
Observação
Os nomes dos armazenamentos de dados devem conter apenas letras minúsculas, números e sublinhados.
Contêiner de blobs do Azure
Para registrar um contêiner de blob do Azure como armazenamento de dados, use register_azure_blob_container()
.
O código a seguir cria o armazenamento de dados credentialless_blob
, o registra no espaço de trabalho ws
e o atribui à variável blob_datastore
. Esse armazenamento de dados acessa o contêiner do BLOB my_container_name
na conta de armazenamento my-account-name
.
# 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')
Azure Data Lake Storage Gen1
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 armazenamento de dados credentialless_adls1
, o registra no espaço de trabalho workspace
e o atribui à variável adls_dstore
. Esse armazenamento de dados acessa a conta do Azure Data Lake Storage adls_storage
.
# 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 armazenamento de dados credentialless_adls2
, o registra no espaço de trabalho ws
e o atribui à variável adls2_dstore
. Esse armazenamento de dados acessa sistema de arquivos tabular
na conta de armazenamento myadls2
.
# 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')
Banco 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 armazenamento de dados credentialless_sqldb
no espaço de trabalho ws
e o atribui à variável, sqldb_dstore
. Esse armazenamento de dados acessa o banco de dados mydb
no myserver
servidor do BD do SQL.
# 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 de armazenamento
Para assegurar 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 personalizada.
O acesso a dados com base em identidade dá suporte a conexões apenas com os seguintes serviços de armazenamento.
- Armazenamento do Blobs do Azure
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Banco de Dados SQL do Azure
Para acessar esses serviços de armazenamento, você deve ter pelo menos acesso ao Leitor de Dados do Storage Blob da conta de armazenamento. Somente os proprietários da conta de armazenamento podem alterar seu nível de acesso por meio do portal do Azure.
Se você preferir não usar sua identidade de usuário (ID do Microsoft Entra), também poderá conceder uma permissão de identidade do sistema gerenciado (MSI) do espaço de trabalho para criar o armazenamento de dados. Para isso, você precisa ter permissões de Proprietário para a conta de armazenamento e adicionar o parâmetro grant_workspace_access= True
ao método de registro de dados.
Se você estiver treinando um modelo em um destino de computação remota e quiser acesso a dados para treinamento, a identidade de computação deverá receber pelo menos a função de Leitor de Dados do Storage Blob do serviço de armazenamento. Saiba como configurar a identidade gerenciada em um cluster de cálculo.
Trabalhar com redes virtuais
Por padrão, o Azure Machine Learning não pode se comunicar com uma conta de armazenamento que está por trás de um firewall ou em uma rede virtual.
Você pode configurar as contas de armazenamento para permitir o acesso somente a partir de redes virtuais específicas. Essa configuração requer etapas adicionais para garantir que os dados não vazem para fora da rede. Esse comportamento é o mesmo para acesso a dados com base em credenciais. Para obter mais informações, consulte Como configurar cenários de redes virtuais.
Se sua conta de armazenamento tiver configurações de rede virtual, elas determinam qual tipo de identidade e acesso de permissões é necessário. Por exemplo, para visualização de dados e perfil de dados, as configurações de rede virtual determinam que tipo de identidade é usada para autenticar o acesso a dados.
Em cenários em que apenas determinados IPs e sub-redes têm permissão para acessar o armazenamento, o Azure Machine Learning usa a MSI do workspace 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 workspace, dependendo das configurações de 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 essa conta de armazenamento", o MSI do workspace será usada.
Usar dados no armazenamento
É recomendável o uso dosconjuntos de dados do Azure Machine Learning ao interagir com os seus dados no armazenamento com o Azure Machine Learning.
Importante
Não há suporte para conjuntos de dados que usam acesso a dados baseados em identidade para experimentos ML automatizados.
Os conjuntos de dados empacotam seus dados em um objeto consumível avaliado lentamente 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 de serviços de armazenamento do Azure, como o Armazenamento de Blobs do Azure e o Azure Data Lake Storage para um destino de computação.
Para criar um conjunto de dados, referencie caminhos dos armazenamentos de dados que também usem o acesso a dados com base em identidade.
- Se o seu tipo de conta de armazenamento subjacente for Blob ou ADLS Gen 2, sua identidade de usuário precisará da função de Leitor de Blobs.
- Se o armazenamento subjacente for o ADLS Gen 1, você poderá definir as permissões por meio da ACL (Lista de Controle de Acesso) do armazenamento.
No exemplo a seguir, blob_datastore
já existe e usa o acesso a dados com base 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 crie conjuntos de dados diretamente das URLs de armazenamento. Essa funcionalidade atualmente dá suporte apenas a blobs do Azure e ao Azure Data Lake Storage Gen1 e Gen2. No caso da criação com base na URL de armazenamento, é necessária somente a identidade do usuário para autenticação.
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 o acesso a dados com base em identidade, a identidade gerenciada da computação de treinamento é usada para autenticação de acesso a dados. O token do Microsoft Entra não é usado. Para esse cenário, garanta que a identidade gerenciada da computação receba pelo menos a função de Leitor de Dados do Blob de Armazenamento do serviço de armazenamento. Para obter mais informações, consulte Configurar a identidade gerenciada em clusters de cálculo.