Configurar a autenticação para recursos e fluxos de trabalho do Azure Machine Learning usando o SDK v1
APLICA-SE A: Python SDK azureml v1
Saiba como configurar a autenticação para o seu espaço de trabalho do Azure Machine Learning. A autenticação no seu espaço de trabalho do Azure Machine Learning é baseada na ID do Microsoft Entra para a maioria das coisas. Em geral, há quatro fluxos de trabalho de autenticação que você pode usar ao se conectar ao espaço de trabalho:
Interativo: você usa sua conta no Microsoft Entra ID para autenticar diretamente ou para obter um token usado para autenticação. A autenticação interativa é usada durante a experimentação e o desenvolvimento iterativo. A autenticação interativa permite controlar o acesso a recursos (como um serviço Web) por usuário.
Entidade de serviço: você cria uma conta de entidade de serviço na ID do Microsoft Entra e a usa para autenticar ou obter um token. Uma entidade de serviço é usada quando você precisa de um processo automatizado para se autenticar no serviço sem exigir a interação do usuário. Por exemplo, um script de integração e implantação contínua que treina e testa um modelo sempre que o código de treinamento é alterado.
Sessão da CLI do Azure: você usa uma sessão ativa da CLI do Azure para autenticar. A autenticação da CLI do Azure é usada durante a experimentação e o desenvolvimento iterativo ou quando você precisa de um processo automatizado para autenticar no serviço usando uma sessão pré-autenticada. Você pode fazer logon no Azure por meio da CLI do Azure em sua estação de trabalho local, sem armazenar credenciais em código Python ou solicitar que o usuário se autentique. Da mesma forma, você pode reutilizar os mesmos scripts como parte de pipelines contínuos de integração e implantação, enquanto autentica a CLI do Azure com uma identidade de entidade de serviço.
Identidade gerenciada: ao usar o SDK do Azure Machine Learning em uma Máquina Virtual do Azure, você pode usar uma identidade gerenciada para o Azure. Esse fluxo de trabalho permite que a VM se conecte ao espaço de trabalho usando a identidade gerenciada, sem armazenar credenciais em código Python ou solicitar que o usuário se autentique. Os clusters de computação e instâncias de computação do Azure Machine Learning também podem ser configurados para usar uma identidade gerenciada para acessar o espaço de trabalho durante o treinamento de modelos.
Independentemente do fluxo de trabalho de autenticação usado, o controle de acesso baseado em função do Azure (Azure RBAC) é usado para definir o escopo do nível de acesso (autorização) permitido aos recursos. Por exemplo, um administrador ou processo de automação pode ter acesso para criar uma instância de computação, mas não usá-la, enquanto um cientista de dados pode usá-la, mas não excluí-la ou criá-la. Para obter mais informações, consulte Gerenciar o acesso ao espaço de trabalho do Azure Machine Learning.
O Acesso Condicional do Microsoft Entra pode ser usado para controlar ou restringir ainda mais o acesso ao espaço de trabalho para cada fluxo de trabalho de autenticação. Por exemplo, um administrador pode permitir o acesso ao espaço de trabalho apenas a partir de dispositivos geridos.
Pré-requisitos
- Crie um espaço de trabalho do Azure Machine Learning.
- Configure seu ambiente de desenvolvimento para instalar o SDK do Azure Machine Learning ou use uma instância de computação do Azure Machine Learning com o SDK já instalado.
Microsoft Entra ID
Todos os fluxos de trabalho de autenticação para o seu espaço de trabalho dependem do Microsoft Entra ID. Se você quiser que os usuários se autentiquem usando contas individuais, eles devem ter contas em sua ID do Microsoft Entra. Se você quiser usar entidades de serviço, elas devem existir em sua ID do Microsoft Entra. As identidades gerenciadas também são um recurso do Microsoft Entra ID.
Para obter mais informações sobre o Microsoft Entra ID, consulte O que é a autenticação do Microsoft Entra.
Depois de criar as contas do Microsoft Entra, consulte Gerenciar o acesso ao espaço de trabalho do Azure Machine Learning para obter informações sobre como conceder-lhes acesso ao espaço de trabalho e outras operações no Azure Machine Learning.
Configurar um principal de serviço
Para usar uma entidade de serviço (SP), você deve primeiro criar a SP. Em seguida, conceda-lhe acesso ao seu espaço de trabalho. Como mencionado anteriormente, o controle de acesso baseado em função do Azure (Azure RBAC) é usado para controlar o acesso, portanto, você também deve decidir qual acesso conceder ao SP.
Importante
Ao usar uma entidade de serviço, conceda-lhe o acesso mínimo necessário para a tarefa para a qual ela é usada. Por exemplo, você não concederia a um proprietário de entidade de serviço ou acesso de colaborador se tudo o que ele for usado for ler o token de acesso para uma implantação da Web.
A razão para conceder o menor acesso é que uma entidade de serviço usa uma senha para autenticar, e a senha pode ser armazenada como parte de um script de automação. Se a senha for vazada, ter o acesso mínimo necessário para uma tarefa específica minimiza o uso mal-intencionado do SP.
Você deve alternar segredos como a senha da entidade de serviço regularmente.
A maneira mais fácil de criar uma controladora de armazenamento e conceder acesso ao seu espaço de trabalho é usando a CLI do Azure. Para criar uma entidade de serviço e conceder-lhe acesso ao seu espaço de trabalho, use as seguintes etapas:
Nota
Você deve ser um administrador na assinatura para executar todas essas etapas.
Autentique-se na sua subscrição do Azure:
az login
Se a CLI conseguir abrir o seu browser predefinido, executa essa ação e carrega uma página de início de sessão. Caso contrário, você precisa abrir um navegador e seguir as instruções na linha de comando. As instruções envolvem navegar e https://aka.ms/devicelogin inserir um código de autorização.
Se você tiver várias assinaturas do Azure, poderá usar o
az account set -s <subscription name or ID>
comando para definir a assinatura. Para obter mais informações, consulte Usar várias assinaturas do Azure.Para outros métodos de autenticação, consulte Entrar com a CLI do Azure.
Crie a entidade de serviço. No exemplo a seguir, uma controladora de armazenamento chamada ml-auth é criada:
az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
O parâmetro
--json-auth
está disponível nas versões >da CLI do Azure = 2.51.0. Versões anteriores a esta utilização--sdk-auth
.A saída será um JSON semelhante ao seguinte. Anote os
clientId
campos ,clientSecret
e , poistenantId
você precisará deles para outras etapas neste artigo.{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "subscriptionId": "your-sub-id", "tenantId": "your-tenant-id", "activeDirectoryEndpointUrl": "https://login.microsoftonline.com", "resourceManagerEndpointUrl": "https://management.azure.com", "activeDirectoryGraphResourceId": "https://graph.windows.net", "sqlManagementEndpointUrl": "https://management.core.windows.net:5555", "galleryEndpointUrl": "https://gallery.azure.com/", "managementEndpointUrl": "https://management.core.windows.net" }
Recupere os detalhes da entidade de serviço usando o
clientId
valor retornado na etapa anterior:az ad sp show --id your-client-id
O JSON a seguir é um exemplo simplificado da saída do comando. Anote o
objectId
campo, pois você precisará de seu valor para a próxima etapa.{ "accountEnabled": "True", "addIns": [], "appDisplayName": "ml-auth", ... ... ... "objectId": "your-sp-object-id", "objectType": "ServicePrincipal" }
Para conceder acesso ao espaço de trabalho e a outros recursos usados pelo Azure Machine Learning, use as informações nos seguintes artigos:
Importante
O acesso de proprietário permite que a entidade de serviço faça praticamente qualquer operação em seu espaço de trabalho. É utilizado neste documento para demonstrar como conceder acesso; em um ambiente de produção, a Microsoft recomenda conceder à entidade de serviço o acesso mínimo necessário para executar a função pretendida. Para obter informações sobre como criar uma função personalizada com o acesso necessário para o seu cenário, consulte Gerenciar o acesso ao espaço de trabalho do Azure Machine Learning.
Configurar uma identidade gerida
Importante
A identidade gerenciada só é suportada ao usar o SDK do Azure Machine Learning de uma Máquina Virtual do Azure ou com um cluster de computação ou instância de computação do Azure Machine Learning.
Identidade gerenciada com uma VM
Habilite uma identidade gerenciada atribuída ao sistema para recursos do Azure na VM.
No portal do Azure, selecione seu espaço de trabalho e, em seguida, selecione Controle de Acesso (IAM).
Selecione Adicionar, Adicionar Atribuição de Função para abrir a página Adicionar atribuição de função.
Atribua a seguinte função. Para obter os passos detalhados, veja o artigo Atribuir funções do Azure com o portal do Azure.
Definição Value Role A função que você deseja atribuir. Atribuir acesso a Identidade Gerida Membros A identidade gerenciada que você criou anteriormente
Identidade gerenciada com cluster de computação
Para obter mais informações, consulte Configurar identidade gerenciada para cluster de computação.
Usar autenticação interativa
Importante
A autenticação interativa usa seu navegador e requer cookies (incluindo cookies de terceiros). Se tiver desativado os cookies, poderá receber um erro como "não foi possível iniciar sessão". Este erro também pode ocorrer se você tiver ativado a autenticação multifator do Microsoft Entra.
A maioria dos exemplos na documentação e nos exemplos usa autenticação interativa. Por exemplo, ao usar o SDK, há duas chamadas de função que solicitarão automaticamente um fluxo de autenticação baseado em interface do usuário:
Chamar a
from_config()
função emitirá o prompt.from azureml.core import Workspace ws = Workspace.from_config()
A função
from_config()
procura um ficheiro JSON que contém as informações de ligação à área de trabalho.Usar o
Workspace
construtor para fornecer informações de assinatura, grupo de recursos e espaço de trabalho também solicitará autenticação interativa.ws = Workspace(subscription_id="your-sub-id", resource_group="your-resource-group-id", workspace_name="your-workspace-name" )
Gorjeta
Se você tiver acesso a vários locatários, talvez seja necessário importar a classe e definir explicitamente qual locatário você está segmentando. Chamar o construtor para InteractiveLoginAuthentication
também solicitará que você faça login semelhante às chamadas acima.
from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="your-tenant-id")
Ao usar a CLI do Azure, o az login
comando é usado para autenticar a sessão da CLI. Para obter mais informações, consulte Introdução à CLI do Azure.
Gorjeta
Se você estiver usando o SDK de um ambiente no qual tenha autenticado anteriormente interativamente usando a CLI do Azure, poderá usar a AzureCliAuthentication
classe para autenticar no espaço de trabalho usando as credenciais armazenadas em cache pela CLI:
from azureml.core.authentication import AzureCliAuthentication
cli_auth = AzureCliAuthentication()
ws = Workspace(subscription_id="your-sub-id",
resource_group="your-resource-group-id",
workspace_name="your-workspace-name",
auth=cli_auth
)
Usar a autenticação da entidade de serviço
Para autenticar em seu espaço de trabalho a partir do SDK, usando uma entidade de serviço, use o ServicePrincipalAuthentication
construtor de classe. Use os valores obtidos ao criar o provedor de serviços como parâmetros. O tenant_id
parâmetro mapeia para de tenantId
cima, service_principal_id
mapeia para , e service_principal_password
mapeia clientId
para clientSecret
.
from azureml.core.authentication import ServicePrincipalAuthentication
sp = ServicePrincipalAuthentication(tenant_id="your-tenant-id", # tenantID
service_principal_id="your-client-id", # clientId
service_principal_password="your-client-secret") # clientSecret
A sp
variável agora contém um objeto de autenticação que você usa diretamente no SDK. Em geral, é uma boa ideia armazenar os ids/segredos usados acima em variáveis de ambiente, conforme mostrado no código a seguir. O armazenamento em variáveis de ambiente impede que as informações sejam acidentalmente verificadas em um repositório GitHub.
import os
sp = ServicePrincipalAuthentication(tenant_id=os.environ['AML_TENANT_ID'],
service_principal_id=os.environ['AML_PRINCIPAL_ID'],
service_principal_password=os.environ['AML_PRINCIPAL_PASS'])
Para fluxos de trabalho automatizados que são executados em Python e usam o SDK principalmente, você pode usar esse objeto como está na maioria dos casos para sua autenticação. O código a seguir é autenticado em seu espaço de trabalho usando o objeto auth que você criou.
from azureml.core import Workspace
ws = Workspace.get(name="ml-example",
auth=sp,
subscription_id="your-sub-id",
resource_group="your-rg-name")
ws.get_details()
Usar autenticação de identidade gerenciada
Para autenticar no espaço de trabalho a partir de uma VM, cluster de computação ou instância de computação configurada com uma identidade gerenciada, use a MsiAuthentication
classe. O exemplo a seguir demonstra como usar essa classe para autenticar em um espaço de trabalho:
from azureml.core.authentication import MsiAuthentication
msi_auth = MsiAuthentication()
ws = Workspace(subscription_id="your-sub-id",
resource_group="your-resource-group-id",
workspace_name="your-workspace-name",
auth=msi_auth
)
Usar acesso condicional
Como administrador, você pode impor políticas de Acesso Condicional do Microsoft Entra para usuários que entram no espaço de trabalho. Por exemplo, pode exigir autenticação de dois fatores ou permitir o início de sessão apenas a partir de dispositivos geridos. Para usar o Acesso Condicional para espaços de trabalho do Azure Machine Learning especificamente, atribua a política de Acesso Condicional ao aplicativo chamado Azure Machine Learning. O ID do aplicativo é 0736f41a-0425-bdb5-1563eff02385.