Einrichten der Authentifizierung für Azure Machine Learning-Ressourcen und -Workflows mithilfe von SDK v1
GILT FÜR: Python SDK azureml v1
Erfahren Sie, wie Sie die Authentifizierung für Ihren Azure Machine Learning-Arbeitsplatz einrichten. Die Authentifizierung für Ihren Azure Machine Learning-Arbeitsbereich basiert größtenteils auf Microsoft Entra ID. Im Allgemeinen gibt es vier Authentifizierungsworkflows zum Herstellen einer Verbindung mit dem Arbeitsbereich:
Interaktiv: Sie verwenden Ihr Konto in Microsoft Entra ID, um sich entweder direkt zu authentifizieren oder ein Token zu erhalten, das für die Authentifizierung verwendet wird. Die interaktive Authentifizierung wird beim Experimentieren und bei der iterativen Entwicklung verwendet. Mit der interaktiven Authentifizierung können Sie den Zugriff auf Ressourcen (z. B. einen Webdienst) pro Benutzer steuern.
Dienstprinzipal: Sie erstellen ein Dienstprinzipalkonto in Microsoft Entra ID und verwenden es, um sich zu authentifizieren oder ein Token zu erhalten. Ein Dienstprinzipal wird verwendet, wenn ein automatisierter Prozess sich beim Dienst authentifizieren soll, ohne dass eine Benutzerinteraktion erforderlich ist. Ein Beispiel hierfür wäre ein Continuous-Integration- und Bereitstellungsskript, das ein Modell bei jeder Änderung des Trainingscodes trainiert und testet.
Azure CLI-Sitzung: Eine aktive Azure CLI-Sitzung zur Authentifizierung verwenden. Die Azure CLI-Authentifizierung wird für Experimente und iterative Entwicklung verwendet, oder wenn Sie einen automatisierten Prozess für die Authentifizierung beim Dienst mithilfe einer vorauthentifizierten Sitzung benötigen. Sie können sich auf Ihrer lokalen Arbeitsstation über die Azure CLI bei Azure anmelden, ohne Anmeldeinformationen im Python-Code zu hinterlegen oder den Benutzer zur Authentifizierung aufzufordern. Auf ähnliche Weise können Sie die gleichen Skripts als Teil von Continuous Integration- und Continuous Deployment-Pipelines wiederverwenden, während Sie die Azure CLI mit einer Dienstprinzipalidentität authentifizieren.
Verwaltete Identität: Wenn Sie das Azure Machine Learning SDK auf einem virtuellen Azure-Computer nutzen, können Sie eine verwaltete Identität für Azure verwenden. Dieser Workflow ermöglicht es der VM, mithilfe der verwalteten Identität eine Verbindung mit dem Arbeitsbereich herzustellen, ohne Anmeldeinformationen im Python-Code zu speichern oder den Benutzer zur Authentifizierung aufzufordern. Azure Machine Learning-Computecluster und -Compute-Instanzen können auch so konfiguriert werden, dass sie beim Trainieren von Modellen mithilfe einer verwalteten Identität auf den Arbeitsbereich zugreifen.
Unabhängig vom verwendeten Authentifizierungsworkflow wird die rollenbasierte Zugriffssteuerung von Azure (Role-Based Access Control, RBAC) verwendet, um die zulässige Zugriffsebene (Autorisierung) für die Ressourcen zu beschränken. Beispielsweise könnte ein Administrator oder ein Automatisierungsprozess Zugriff haben, um eine Compute-Instanz zu erstellen, sie aber nicht verwenden, während eine wissenschaftliche Fachkraft für Daten sie verwenden, aber nicht löschen oder erstellen könnte. Weitere Informationen finden Sie unter Verwalten des Zugriffs auf einen Azure Machine Learning-Arbeitsbereich.
Bedingter Microsoft Entra-Zugriff kann verwendet werden, um darüber hinaus den Zugriff auf den Arbeitsbereich für jeden Authentifizierungsworkflow zu steuern oder einzuschränken. Beispielsweise kann ein Administrator das Zugreifen auf den Arbeitsbereichs nur von verwalteten Geräten zulassen.
Voraussetzungen
- Erstellen Sie einen Azure Machine Learning-Arbeitsbereich.
- Konfigurieren Sie Ihre Entwicklungsumgebung für die Installation des Azure Machine Learning SDK, oder verwenden Sie eine Azure Machine Learning-Compute-Instanz mit bereits installiertem SDK.
Microsoft Entra ID
Alle Authentifizierungsworkflows für Ihren Arbeitsbereich basieren auf Microsoft Entra ID. Wenn Sie möchten, dass Benutzer sich unter Verwendung individueller Konten authentifizieren, müssen sie über Konten in Ihrer Microsoft Entra ID-Instanz verfügen. Wenn Sie Dienstprinzipale verwenden möchten, müssen diese in Microsoft Entra ID vorhanden sein. Verwaltete Identitäten sind ebenfalls ein Feature von Microsoft Entra ID.
Weitere Informationen zu Microsoft Entra ID finden Sie unter Was ist die Microsoft Entra-Authentifizierung?.
Nachdem Sie die Microsoft Entra-Konten erstellt haben, finden Sie unter Verwalten des Zugriffs auf einen Azure Machine Learning-Arbeitsbereich Informationen zum Erteilen des Zugriffs auf den Arbeitsbereich und andere Vorgänge in Azure Machine Learning.
Konfigurieren eines Dienstprinzipals
Um einen Dienstprinzipal (Service Principal, SP) zu verwenden, müssen Sie zunächst den SP erstellen. Gewähren Sie ihm dann Zugriff auf Ihren Arbeitsbereich. Wie bereits erwähnt, wird die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) verwendet, um den Zugriff zu steuern. Sie müssen daher auch entscheiden, welcher Zugriff dem Dienstprinzipal erteilt werden soll.
Wichtig
Wenn Sie einen Dienstprinzipal verwenden, erteilen Sie ihm den Mindestzugriff, der für den Task erforderlich ist, für den er verwendet wird. Beispielsweise wird einem Dienstprinzipal kein Besitzer- oder Mitwirkendenzugriff erteilt, wenn er lediglich für das Lesen des Zugriffstokens für eine Webbereitstellung verwendet wird.
Der Grund für das Erteilen der geringstmöglichen Zugriffsberechtigungen ist, dass ein Dienstprinzipal ein Kennwort für die Authentifizierung verwendet und dieses möglicherweise als Teil eines Automatisierungsskripts gespeichert wird. Wenn das Kennwort offengelegt wird, wird durch die Beschränkung auf den für einen bestimmten Task erforderlichen Mindestzugriff die mögliche böswillige Verwendung des Dienstprinzipals auf ein Minimum beschränkt.
Sie sollten Geheimnisse wie das Dienstprinzipalkennwort regelmäßig rotieren.
Die einfachste Art der Erstellung eines Dienstprinzipals und Gewährung von Zugriff auf Ihren Arbeitsbereich ist die Verwendung der Azure CLI. Führen Sie die folgenden Schritte aus, um einen Dienstprinzipal zu erstellen und ihm Zugriff auf Ihren Arbeitsbereich zu gewähren:
Hinweis
Sie müssen ein Administrator für das Abonnement sein, um alle Schritte ausführen zu können.
Authentifizieren Sie sich bei Ihrem Azure-Abonnement:
az login
Die CLI öffnet Ihren Standardbrowser, sofern sie dazu in der Lage ist, und lädt eine Anmeldeseite. Andernfalls müssen Sie einen Browser öffnen und die Anweisungen in der Befehlszeile befolgen. Die Anweisungen umfassen das Navigieren zu https://aka.ms/devicelogin und Eingeben eines Autorisierungscodes.
Wenn Sie über mehrere Azure-Abonnements verfügen, können Sie den Befehl
az account set -s <subscription name or ID>
verwenden, um das Abonnement festzulegen. Weitere Informationen finden Sie unter Verwenden mehrerer Azure-Abonnements.Andere Methoden zur Authentifizierung finden Sie unter Anmelden mit der Azure CLI.
Erstellen Sie den Dienstprinzipal. Im folgenden Beispiel wird ein Dienstprinzipal mit dem Namen ml-auth erstellt:
az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
Der Parameter
--json-auth
ist in Azure CLI-Versionen >= 2.51.0 verfügbar. Frühere Versionen nutzen--sdk-auth
.Die Ausgabe ist eine JSON-Datei wie etwa die folgende. Notieren Sie sich die Werte in den Feldern
clientId
,clientSecret
undtenantId
, da Sie diese für andere Schritte in diesem Artikel benötigen.{ "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" }
Rufen Sie mithilfe des Werts für
clientId
, der im vorherigen Schritt zurückgegeben wurde, die Details für den Dienstprinzipal ab:az ad sp show --id your-client-id
Der folgende JSON-Code ist ein vereinfachtes Beispiel für die Ausgabe des Befehls. Beachten Sie das Feld
objectId
, da Sie seinen Wert im nächsten Schritt benötigen werden.{ "accountEnabled": "True", "addIns": [], "appDisplayName": "ml-auth", ... ... ... "objectId": "your-sp-object-id", "objectType": "ServicePrincipal" }
Verwenden Sie die Informationen in den folgenden Artikeln, um Zugriff auf den Arbeitsbereich und andere von Azure Machine Learning verwendete Ressourcen zu gewähren:
- Verwalten des Zugriffs auf einen Azure Machine Learning-Arbeitsbereich
- Zuweisen von Rollen in der CLI
Wichtig
Der Besitzerzugriff ermöglicht es dem Dienstprinzipal, so gut wie jeden Vorgang in Ihrem Arbeitsbereich durchzuführen. Er wird in diesem Dokument verwendet, um zu veranschaulichen, wie Zugriff gewährt wird. In einer Produktionsumgebung empfiehlt Microsoft, dem Dienstprinzipal nur den für die von Ihnen vorgesehene Rolle erforderlichen Mindestzugriff zu erteilen. Informationen zum Erstellen einer benutzerdefinierten Rolle mit dem für Ihr Szenario erforderlichen Zugriff finden Sie unter Verwalten des Zugriffs auf einen Azure Machine Learning-Arbeitsbereich.
Konfigurieren einer verwalteten Identität
Wichtig
Die verwaltete Identität wird nur unterstützt, wenn das Azure Machine Learning SDK auf einem virtuellen Azure-Computer oder mit einem Azure Machine Learning-Computecluster bzw. einer Azure Machine Learning-Compute-Instanz verwendet wird.
Verwaltete Identität mit einem virtuellen Computer
Aktivieren Sie eine vom System zugewiesene verwaltete Identität für Azure-Ressourcen auf dem virtuellen Computer.
Wählen Sie im Azure-Portal Ihren Arbeitsbereich und dann Zugriffssteuerung (IAM) aus.
Wählen Sie Hinzufügen und dann Rollenzuweisung hinzufügen aus, um die Seite Rollenzuweisung hinzufügen zu öffnen.
Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.
Einstellung Wert Role Die Rolle, die Sie zuweisen möchten Zugriff zuweisen zu Verwaltete Identität Members Die verwaltete Identität, die Sie zuvor erstellt haben
Verwaltete Identität mit Computecluster
Weitere Informationen finden Sie unter Einrichten der verwalteten Identität für Computecluster.
Verwenden der interaktiven Authentifizierung
Wichtig
Die interaktive Authentifizierung verwendet Ihren Browser und erfordert Cookies (einschließlich Cookies von Drittanbietern). Wenn Sie Cookies deaktiviert haben, erhalten Sie möglicherweise eine Fehlermeldung wie „Wir konnten Sie nicht anmelden“. Dieser Fehler kann auch auftreten, wenn Sie Microsoft Entra-Multi-Faktor-Authentifizierung aktiviert haben.
In den meisten Beispielen in der Dokumentation und Verwendungsbeispielen wird interaktive Authentifizierung verwendet. Bei Verwendung des SDK gibt es z. B. zwei Funktionsaufrufe, bei denen Sie automatisch über einen auf einer Benutzeroberfläche basierenden Authentifizierungsflow eine Aufforderung erhalten:
Wenn Sie die Funktion
from_config()
aufrufen, wird die Aufforderung ausgegeben.from azureml.core import Workspace ws = Workspace.from_config()
Die Funktion
from_config()
sucht nach einer JSON-Datei, die ihre Informationen zur Arbeitsbereichsverbindung enthält.Bei Verwendung des Konstruktors
Workspace
für das Angeben von Abonnement-, Ressourcengruppen- und Arbeitsbereichsinformationen wird ebenfalls zur interaktiven Authentifizierung aufgefordert.ws = Workspace(subscription_id="your-sub-id", resource_group="your-resource-group-id", workspace_name="your-workspace-name" )
Tipp
Wenn Sie Zugriff auf mehrere Mandanten haben, müssen Sie möglicherweise die-Klasse importieren und explizit definieren, auf welchen Mandanten Sie abzielen. Wenn Sie den Konstruktor für InteractiveLoginAuthentication
aufrufen, werden Sie außerdem aufgefordert, sich ähnlich wie bei den oben aufgeführten Aufrufen anzumelden.
from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="your-tenant-id")
Bei Verwendung der Azure CLI wird der Befehl az login
zur Authentifizierung der CLI-Sitzung verwendet. Weitere Informationen finden Sie unter Erste Schritte mit der Azure-Befehlszeilenschnittstelle.
Tipp
Wenn Sie das SDK von einer Umgebung aus verwenden, in der Sie sich zuvor interaktiv mit der Azure CLI authentifiziert haben, können Sie die Klasse AzureCliAuthentication
verwenden, um sich beim Arbeitsbereich mithilfe der von der CLI zwischengespeicherten Anmeldeinformationen zu authentifizieren:
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
)
Verwenden der Dienstprinzipalauthentifizierung
Verwenden Sie zum Authentifizieren bei Ihrem Arbeitsbereich mit einem Dienstprinzipal über das SDK den Klassenkonstruktor ServicePrincipalAuthentication
. Geben Sie dabei die Werte an, die Sie beim Erstellen des Dienstanbieters als Parameter erhalten haben. Der Parameter tenant_id
wird tenantId
oben zugeordnet, service_principal_id
wird clientId
zugeordnet und service_principal_password
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
Die Variable sp
enthält jetzt ein Authentifizierungsobjekt, das Sie direkt im SDK verwenden können. Im Allgemeinen empfiehlt es sich, die oben verwendeten IDs/Geheimnisse in Umgebungsvariablen zu speichern, wie im folgenden Code gezeigt. Das Speichern in Umgebungsvariablen verhindert, dass die Informationen versehentlich in ein GitHub-Repository eingecheckt werden.
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'])
Bei automatisierten Workflows, die in Python ausgeführt werden und das SDK primär verwenden, können Sie dieses Objekt in den meisten Fällen unverändert für die Authentifizierung verwenden. Der folgende Code dient zur Authentifizierung bei Ihrem Arbeitsbereich mit dem von Ihnen erstellten Authentifizierungsobjekt.
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()
Verwenden von Authentifizierung der verwalteten Identität
Zur Authentifizierung beim Arbeitsbereich über eine VM, einen Computecluster oder eine Compute-Instanz, die bzw. der mit einer verwalteten Identität konfiguriert ist, verwenden Sie die Klasse MsiAuthentication
. Das folgende Beispiel zeigt, wie diese Klasse zur Authentifizierung bei einem Arbeitsbereich verwendet werden kann:
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
)
Verwenden von bedingtem Zugriff
Administratoren können Richtlinien für bedingten Microsoft Entra-Zugriff für Benutzer durchsetzen, die sich beim Arbeitsbereich anmelden. Benutzer können beispielsweise zur zweistufigen Authentifizierung verpflichtet werden oder sich nur von verwalteten Geräten anmelden dürfen. Um den bedingten Zugriff speziell für Azure Machine Learning-Arbeitsbereiche zu verwenden, weisen Sie die Richtlinie für bedingten Zugriff der App Azure Machine Learning zu. Die App-ID lautet 0736f41a-0425-bdb5-1563eff02385.