Verwenden eines Azure-Dienstprinzipals mit zertifikatbasierter Authentifizierung
Beim Erstellen eines Dienstprinzipals wählen Sie den Typ der von ihm verwendeten Anmeldeauthentifizierung aus. Für Azure-Dienstprinzipale sind zwei Arten von Authentifizierung verfügbar: kennwortbasiert und zertifikatbasiert.
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.
Erstellen eines Dienstprinzipals mit einem neuen Zertifikat
Verwenden Sie den Parameter --create-cert
, um ein selbstsigniertes 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. Wenn Sie keinen Zugriff mehr auf den privaten Schlüssel des Zertifikats haben, 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:
Erstellen eines Dienstprinzipals 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 certi897ficate als Zeichenfolge, oder verwenden Sie das Format @path
, um das Zertifikat aus einer Datei zu laden.
Bei Verwendung einer PEM-Datei muss das Zertifikat (CERTIFICATE) an den privaten Schlüssel (PRIVATE KEY) in der Datei angefügt werden.
# 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 "-----BEGIN CERTIFICATE-----
...
-----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
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
Festlegen und 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:
Anfügen eines Zertifikats an einen Dienstprinzipal
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, damit sie sorgfältig verwendet werden.
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.