Abrufen eines vorhandenen Dienstprinzipals
Auflisten von Dienstprinzipalen
Wenn Sie bereits über einen vorhandenen Dienstprinzipal verfügen, den Sie verwenden möchten, wird in diesem Schritt erklärt, wie Sie Ihren vorhandenen Dienstprinzipal abrufen.
Mit az ad sp list kann eine Liste der Dienstprinzipale in einem Mandanten abgerufen werden. Dieser Befehl gibt standardmäßig die ersten 100 Dienstprinzipale für Ihren Mandanten zurück. Verwenden Sie zum Abrufen aller Dienstprinzipale eines Mandanten den Parameter --all
. Da das Abrufen dieser Liste sehr lange dauern kann, wird empfohlen, die Liste mit einem der folgenden Parameter zu filtern:
--display-name
fordert Dienstprinzipale mit einem Präfix an, das dem angegebenen Namen entspricht. Der Anzeigename eines Dienstprinzipals ist der Wert, der während der Erstellung mit dem Parameter--name
festgelegt wird. Haben Sie--name
während der Erstellung des Dienstprinzipals nicht festgelegt, lautet das Namenspräfixazure-cli-
.--spn
filtert nach genauen Übereinstimmungen des Dienstprinzipalnamens. Der Dienstprinzipalname beginnt immer mithttps://
. Handelte es sich bei dem für--name
verwendeten Wert nicht um einen URI, wird für diesen Werthttps://
gefolgt vom Anzeigenamen verwendet.--show-mine
fordert nur Dienstprinzipale an, die vom angemeldeten Benutzer erstellt wurden.--filter
akzeptiert einen OData-Filter und führt die serverseitige Filterung aus. Diese Methode wird anstelle der clientseitigen Filterung mit dem Parameter--query
der CLI empfohlen. Weitere Informationen zu OData-Filtern finden Sie unter OData-Ausdruckssyntax für Filter und Sortierklauseln in Azure Search.
Für Dienstprinzipalobjekte werden ausführliche Informationen zurückgegeben. Verwenden Sie die Abfragezeichenfolge [].{id:appId, tenant:appOwnerOrganizationId}
, um nur die für die Anmeldung erforderlichen Informationen abzurufen. Hier finden Sie ein Beispiel für das Abrufen der Anmeldeinformationen für alle Dienstprinzipale, die von der/dem derzeit angemeldeten Benutzer*in erstellt wurden:
az ad sp list --show-mine --query "[].{SPname:displayName, SPid:appId, tenant:appOwnerOrganizationId}" --output table
Wenn Sie in einer großen Organisation mit vielen Dienstprinzipalen arbeiten, probieren Sie die folgenden Befehlsbeispiele aus:
# get service principals containing a keyword
az ad sp list --display-name mySearchWord --output table
# get service principals using an OData filter
az ad sp list --filter "displayname eq 'myExactServicePrincipalName'" --output json
# get a service principal having a certain servicePrincipalNames property value
az ad sp list --spn https://spURL.com
Wichtig
Der Benutzer und der Mandant können sowohl mit az ad sp list als auch mit az ad sp show abgerufen werden, aber Authentifizierungsgeheimnisse oder die Authentifizierungsmethode sind nicht verfügbar. Geheimnisse für Zertifikate in Azure Key Vault können mit az keyvault secret show abgerufen werden. Andere Geheimnisse werden jedoch nicht standardmäßig gespeichert. Wenn Sie eine Authentifizierungsmethode oder ein Geheimnis vergessen haben, setzen Sie die Anmeldeinformationen des Dienstprinzipals zurück.
Eigenschaften von Dienstprinzipalen
Wenn Sie mit az ad sp list
eine Liste von Dienstprinzipalen erhalten, gibt es viele Ausgabeeigenschaften, auf die Sie in Ihrem Skript verweisen können.
[
{
"accountEnabled": true,
"addIns": [],
"alternativeNames": [],
"appDescription": null,
"appDisplayName": "myServicePrincipalName",
"appId": "00000000-0000-0000-0000-000000000000",
"appOwnerOrganizationId": "00000000-0000-0000-0000-000000000000",
"appRoleAssignmentRequired": false,
"appRoles": [],
"applicationTemplateId": null,
"createdDateTime": null,
"deletedDateTime": null,
"description": null,
"disabledByMicrosoftStatus": null,
"displayName": "myServicePrincipalName",
"homepage": "https://myURL.com",
"id": "00000000-0000-0000-0000-000000000000",
"info": {
"logoUrl": null,
"marketingUrl": null,
"privacyStatementUrl": null,
"supportUrl": null,
"termsOfServiceUrl": null
},
"keyCredentials": [],
"loginUrl": null,
"logoutUrl": null,
"notes": null,
"notificationEmailAddresses": [],
"oauth2PermissionScopes": [
{
"adminConsentDescription": "my admin description",
"adminConsentDisplayName": "my admin display name",
"id": "00000000-0000-0000-0000-000000000000",
"isEnabled": true,
"type": "User",
"userConsentDescription": "my user description",
"userConsentDisplayName": "my user display name",
"value": "user_impersonation"
}
],
"passwordCredentials": [],
"preferredSingleSignOnMode": null,
"preferredTokenSigningKeyThumbprint": null,
"replyUrls": [],
"resourceSpecificApplicationPermissions": [],
"samlSingleSignOnSettings": null,
"servicePrincipalNames": [
"00000000-0000-0000-0000-000000000000",
"https://myURL.com"
],
"servicePrincipalType": "Application",
"signInAudience": null,
"tags": [
"WindowsAzureActiveDirectoryIntegratedApp"
],
"tokenEncryptionKeyId": null,
"verifiedPublisher": {
"addedDateTime": null,
"displayName": null,
"verifiedPublisherId": null
}
}
]
Verwenden Sie den --query
-Parameter, um Dienstprinzipaleigenschaften in Variablen abzurufen und zu speichern.
# Bash script
spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenant:appOwnerOrganizationId}" --output tsv)
userConsentDescr=$(az ad sp list --display-name myServicePrincipalName --query "[].{ucs:oauth2PermissionScopes.userConsentDescription[0]}" --output tsv)
echo "Using appId $spID in tenant $tenantID for $userConsentDescr"
Nächste Schritte
Nachdem Sie nun gelernt haben, wie Sie Ihren vorhandenen Dienstprinzipal abrufen, erfahren Sie im nächsten Schritt, wie Sie Ihre Dienstprinzipalrollen verwalten.