Authentifizieren in Ihrem Arbeitsbereich mithilfe eines Dienstprinzipals
Manchmal ist die interaktive Authentifizierung oder die Authentifizierung als Benutzerkonto unangebracht. Dies kann der Fall sein, wenn Sie Aufträge von einem Webdienst, einer anderen Workerrolle oder einem automatisierten System übermitteln möchten. Eine mögliche Option ist das Konfigurieren einer verwalteten Identität. Eine andere ist die Verwendung eines Dienstprinzipals. Letzteres wird in diesem Artikel erläutert.
Voraussetzung: Erstellen eines Dienstprinzipals und eines Anwendungsgeheimnisses
Um sich als Dienstprinzipal zu authentifizieren, müssen Sie zuerst einen Dienstprinzipal erstellen.
Weisen Sie zum Erstellen eines Dienstprinzipals den Zugriff zu, und generieren Sie Anmeldeinformationen:
Erstellen Sie eine Azure AD-Anwendung:
Hinweis
Sie müssen keinen Umleitungs-URI festlegen.
- Notieren Sie sich nach dem Erstellen die Anwendungs-ID (Client) und Verzeichnis-ID (Mandant).
Erstellen Sie Anmeldeinformationen für die Anmeldung als Anwendung:
- Wählen Sie in den Einstellungen Ihrer Anwendung Zertifikate & Geheimnisse aus.
- Wählen Sie unter Geheime Clientschlüssel die Option Hiermit wird ein neues Geheimnis erstellt aus.
- Geben Sie eine Beschreibung und Dauer an, und wählen Sie dann Hinzufügen aus.
- Kopieren Sie den Wert des Geheimnisses sofort an einen sicheren Ort. Sie werden keine Gelegenheit mehr haben, ihn zu sehen!
Erteilen Sie Ihrem Dienstprinzipal Berechtigungen für den Zugriff auf Ihren Arbeitsbereich:
- Öffnen Sie das Azure-Portal.
- Geben Sie in der Suchleiste den Namen der Ressourcengruppe ein, in der Sie Ihren Arbeitsbereich erstellt haben. Wählen Sie die Ressourcengruppe aus, wenn sie in den Ergebnissen angezeigt wird.
- Wählen Sie in der Ressourcengruppenübersicht Zugriffssteuerung (IAM) aus.
- Wählen Sie Rollenzuweisung hinzufügen aus.
- Suchen Sie den Dienstprinzipal, und wählen Sie ihn aus.
- Weisen Sie entweder die Rolle Mitwirkender oder Besitzer zu.
Hinweis
Um eine Rollenzuweisung für die Ressourcengruppe oder den Arbeitsbereich zu erstellen, müssen Sie im Bereich der Rollenzuweisung ein Besitzer oder Benutzerzugriffsadministrator sein. Wenn Sie nicht über die Berechtigungen zum Erstellen des Dienstprinzipals in Ihrem Abonnement verfügen, müssen Sie diese von dem Besitzer oder Administrator des Azure-Abonnements anfordern.
Wenn Sie nur über Berechtigungen auf Ressourcengruppen- oder Arbeitsbereichsebene verfügen, können Sie den Dienstprinzipal unter der Rolle „Mitwirkender“ erstellen. Verwenden Sie dazu Folgendes:
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<SUBSCRIPTION-ID>
Authentifizieren als Dienstprinzipal
Option 1: Verwenden von Umgebungsvariablen: Als Standardanmeldeinformation, die bei der Erstellung des Workspace
-Objekts verwendet wird, wird DefaultAzureCredential genutzt. Hierbei wird versucht, mehrere Authentifizierungsmethoden durchzuführen.
Als Erstes wird EnvironmentCredential verwendet. Hierbei übergeben Sie die Dienstprinzipal-Anmeldeinformationen über die folgenden Umgebungsvariablen:
- AZURE_TENANT_ID: Dies ist die ID für den Mandanten des Dienstprinzipals. Sie wird auch als Verzeichnis-ID bezeichnet.
- AZURE_CLIENT_ID: Die Client-ID des Dienstprinzipals.
- AZURE_CLIENT_SECRET: Einer der geheimen Clientschlüssel des Dienstprinzipals.
Option 2: Verwenden von ClientSecretCredential: Übergeben Sie ClientSecretCredential während der Instanziierung des Objekts Workspace
, oder legen Sie die Eigenschaft credentials
fest.
from azure.identity import ClientSecretCredential
tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ["AZURE_CLIENT_ID"]
client_secret = os.environ["AZURE_CLIENT_SECRET"]
credential = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
workspace.credentials = credential
Hinweis
Die workspace.login()
-Methode ist veraltet und nicht mehr erforderlich. Beim ersten Aufruf des Diensts wird versucht, eine Authentifizierung mit den Anmeldeinformationen durchzuführen, die mit dem Workspace
-Konstruktor oder der zugehörigen credentials
-Eigenschaft übergeben wurden. Wenn keine Anmeldeinformationen angegeben wurden, werden mehrere Authentifizierungsmethoden von DefaultAzureCredential versucht.