Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Beim Erstellen eines Dienstprinzipals wählen Sie den Typ der von ihm verwendeten Anmeldeauthentifizierung aus. Es gibt zwei Arten von Authentifizierung für Azure-Dienstprinzipale: kennwortbasierte Authentifizierung und zertifikatbasierte Authentifizierung.
Aufgrund der Sicherheitseinschränkungen, die auf die Authentifizierung per Kennwort zutreffen, empfiehlt sich die Verwendung der zertifikatbasierten Authentifizierung. Die zertifikatbasierte Authentifizierung ermöglicht Ihnen, eine phishingsichere Authentifizierung mithilfe von Richtlinien für bedingten Zugriff umzusetzen, wodurch die Azure-Ressourcen besser geschützt werden. Weitere Informationen dazu, warum die zertifikatbasierte Authentifizierung sicherer ist, finden Sie unter Zertifikatbasierte Microsoft Entra-Authentifizierung.
In diesem Schritt des Tutorials wird erläutert, wie Sie ein Dienstprinzipalzertifikat für den Zugriff auf eine Azure-Ressource verwenden.
Einen Dienstprinzipal mit einem neuen Zertifikat erstellen
Verwenden Sie den Parameter , um ein --create-cert
Zertifikat für die Authentifizierung zu erstellen:
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--create-cert
Konsolenausgabe:
{
"appId": "myServicePrincipalID",
"displayName": "myServicePrincipalName",
"fileWithCertAndPrivateKey": "certFilePath\certFileName.pem",
"password": null,
"tenant": "myOrganizationTenantID"
}
Die Ausgabe enthält den Schlüssel fileWithCertAndPrivateKey
, es sei denn, Sie speichern das Zertifikat in Key Vault. Am Wert dieses Schlüssels können Sie erkennen, wo das generierte Zertifikat gespeichert ist. Kopieren Sie das Zertifikat an einen sicheren Speicherort. Das Zertifikat enthält den privaten Schlüssel und das öffentliche Zertifikat, die in az login
verwendet werden können. Falls Sie den Zugriff auf den privaten Schlüssel eines Zertifikats verlieren, setzen Sie die Anmeldeinformationen des Dienstprinzipals zurück.
Der Inhalt einer PEM-Datei kann mit einem Text-Editor angezeigt werden. Dies ist ein Beispiel für eine PEM-Datei:
-----BEGIN PRIVATE KEY-----
MIIEvQ...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
Erstellen eines Diensthauptbenutzers mithilfe eines vorhandenen Zertifikats
Erstellen Sie einen Dienstprinzipal mit einem vorhandenen Zertifikat mithilfe des --cert
-Parameters. Jedes Tool, das diesen Dienstprinzipal verwendet, muss Zugriff auf den privaten Schlüssel des Zertifikats haben. Zertifikate müssen in einem ASCII-Format vorliegen, etwa PEM, CER oder DER. Übergeben Sie das Zertifikat als Zeichenfolge, oder verwenden Sie das @path
Format, um das Zertifikat aus einer Datei zu laden. Beim Hochladen eines Zertifikats ist nur das öffentliche Zertifikat erforderlich. Um optimale Sicherheit zu gewährleisten, schließen Sie nicht den privaten Schlüssel ein. Die -----BEGIN CERTIFICATE-----
Und -----END CERTIFICATE-----
Zeilen sind optional.
# create a service principal with the certificate as a string
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert "MIICoT..."
# or provide -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- lines
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert "-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----"
# create a service principal with the certificate file location
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert @/path/to/cert.pem
Hier ist ein PEM-Dateibeispiel für das Hochladen:
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
Arbeiten mit Azure Key Vault
Der --keyvault
-Parameter kann hinzugefügt werden, um Zertifikate in Azure Key Vault zu erstellen oder abzurufen. Wenn Sie den Parameter --keyvault
verwenden, ist auch der Parameter --cert
erforderlich. In diesem Beispiel ist der --cert
-Wert der Name des Zertifikats.
# Create a service principal storing the certificate in Azure Key Vault
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--create-cert \
--cert myCertificateName \
--keyvault myVaultName
# Create a service principal using an existing certificate in Azure Key Vault
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert myCertificateName \
--keyvault myVaultName
Abrufen eines Zertifikats aus Azure Key Vault
Rufen Sie für ein in Azure Key Vault gespeichertes Zertifikat das Zertifikat mit seinem privaten Schlüssel mithilfe von az keyvault secret show ab, und konvertieren Sie es in eine PEM-Datei. In Azure Key Vault ist der Name des Zertifikatgeheimnisses mit dem Zertifikatnamen identisch.
az keyvault secret download --file /path/to/cert.pfx \
--vault-name VaultName \
--name CertName \
--encoding base64
openssl pkcs12 -in cert.pfx -passin pass: -passout pass: -out cert.pem -nodes
Konvertieren einer vorhandenen PKCS12-Datei
Wenn Sie bereits über eine PKCS#12-Datei verfügen, können Sie diese mithilfe von OpenSSL in das PEM-Format konvertieren. Wenn Sie über ein Kennwort verfügen, ändern Sie das passin
-Argument.
openssl pkcs12 -in fileName.p12 -clcerts -nodes -out fileName.pem -passin pass: -passout pass:
Anhängen eines Zertifikats an einen Dienstprinzipal in einem System
Verwenden Sie den --append
-Parameter in az ad sp credential reset, um ein Zertifikat an einen vorhandenen Dienstprinzipal anzufügen. Standardmäßig löscht dieser Befehl alle Kennwörter und Schlüssel, also bitte vorsichtig verwenden.
az ad sp credential reset --id myServicePrincipalID \
--append \
--cert @/path/to/cert.pem
Konsolenausgabe:
Certificate expires yyyy-mm-dd hh:mm:ss+00:00. Adjusting key credential end date to match.
The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
{
"appId": "myServicePrincipalID",
"password": null,
"tenant": "myOrganizationTenantID"
}
Anmelden mit einem Dienstprinzipal mithilfe eines Zertifikats
Um sich mit einem Zertifikat anmelden zu können, muss das Zertifikat lokal als PEM- oder DER-Datei im ASCII-Format verfügbar sein. PKCS#12-Dateien (.p12/.pfx) funktionieren nicht. Bei Verwendung einer PEM-Datei müssen der private Schlüssel (PRIVATE KEY) und das Zertifikat (CERTIFICATE) gemeinsam innerhalb der Datei angefügt werden. Sie müssen dem Pfad nicht wie bei den vorherigen Az-Befehlen ein @
voranstellen
az login --service-principal --username APP_ID --certificate /path/to/cert.pem --tenant TENANT_ID
Nächste Schritte
Nachdem Sie nun erfahren haben, wie Sie mit Dienstprinzipalen mithilfe eines Zertifikats arbeiten, fahren Sie mit dem nächsten Schritt fort, um zu erfahren, wie Sie einen vorhandenen Dienstprinzipal abrufen.