Een Azure-service-principal gebruiken met verificatie op basis van certificaten
Wanneer u een service-principal maakt, kiest u het type verificatie dat voor aanmelding wordt gebruikt. Er zijn twee typen verificatie beschikbaar voor Azure-service-principals: verificatie op basis van wachtwoorden en verificatie op basis van certificaten.
We raden u aan verificatie op basis van certificaten te gebruiken vanwege de beveiligingsbeperkingen van verificatie op basis van een wachtwoord. Met verificatie op basis van certificaten kunt u een phishingbestendige verificatie toepassen met behulp van beleid voor voorwaardelijke toegang, waardoor Azure-resources beter worden beschermd. Zie Microsoft Entra-verificatie op basis van certificaten voor meer informatie over waarom verificatie op basis van certificaten veiliger is.
In deze stap in de zelfstudie wordt uitgelegd hoe u een service-principalcertificaat gebruikt voor toegang tot een Azure-resource.
Als u een zelfondertekend certificaat voor verificatie wilt maken, gebruikt u de --create-cert
parameter:
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--create-cert
Console-uitvoer:
{
"appId": "myServicePrincipalID",
"displayName": "myServicePrincipalName",
"fileWithCertAndPrivateKey": "certFilePath\certFileName.pem",
"password": null,
"tenant": "myOrganizationTenantID"
}
Tenzij u het certificaat in Key Vault opslaat, bevat de uitvoer de fileWithCertAndPrivateKey
sleutel. De waarde van deze sleutel geeft aan waar het gegenereerde certificaat is opgeslagen. Kopieer het certificaat naar een veilige locatie. Het certificaat bevat de persoonlijke sleutel en het openbare certificaat waarin kan worden gebruikt az login
. Als u geen toegang meer hebt tot de persoonlijke sleutel van een certificaat, stelt u de referenties van de service-principal opnieuw in.
De inhoud van een PEM-bestand kan worden weergegeven met een teksteditor. Hier volgt een VOORBEELD van een PEM-bestand:
-----BEGIN PRIVATE KEY-----
MIIEvQ...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
Maak een service-principal met een bestaand certificaat met behulp van de --cert
parameter. Elk hulpprogramma dat gebruikmaakt van deze service-principal, moet toegang hebben tot de persoonlijke sleutel van het certificaat. Certificaten moeten een ASCII-indeling hebben, zoals PEM, CER of DER. Geef het certificaat door als een tekenreeks of gebruik de @path
indeling om het certificaat uit een bestand te laden. Bij het uploaden van een certificaat is alleen het openbare certificaat nodig. Neem de persoonlijke sleutel niet op voor optimale beveiliging. De -----BEGIN CERTIFICATE-----
regels zijn -----END CERTIFICATE-----
optioneel.
# 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 volgt een PEM-bestand dat u kunt uploaden:
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
De --keyvault
parameter kan worden toegevoegd om certificaten te maken of op te halen in Azure Key Vault. Wanneer u de --keyvault
parameter gebruikt, is de --cert
parameter ook vereist. In dit voorbeeld is de --cert
waarde de naam van het certificaat.
# 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
Voor een certificaat dat is opgeslagen in Azure Key Vault, haalt u het certificaat op met de bijbehorende persoonlijke sleutel met az keyvault secret show en converteert u het naar een PEM-bestand. In Azure Key Vault is de naam van het certificaatgeheim hetzelfde als de certificaatnaam.
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
Als u al een PKCS#12-bestand hebt, kunt u het converteren naar PEM-indeling met behulp van OpenSSL. Als u een wachtwoord hebt, wijzigt u het passin
argument.
openssl pkcs12 -in fileName.p12 -clcerts -nodes -out fileName.pem -passin pass: -passout pass:
Gebruik de --append
parameter in az ad sp credential reset om een certificaat toe te voegen aan een bestaande service-principal.
Deze opdracht wist standaard alle wachtwoorden en sleutels, dus gebruik deze zorgvuldig.
az ad sp credential reset --id myServicePrincipalID \
--append \
--cert @/path/to/cert.pem
Console-uitvoer:
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"
}
Als u zich wilt aanmelden met een certificaat, moet het certificaat lokaal beschikbaar zijn als EEN PEM- of DER-bestand in ASCII-indeling. PKCS#12-bestanden (.p12/.pfx) werken niet. Wanneer u een PEM-bestand gebruikt, moeten de PERSOONLIJKE SLEUTEL en het CERTIFICAAT aan elkaar worden toegevoegd in het bestand. U hoeft het pad niet vooraf te laten gaan met een @
achtige als bij andere az-opdrachten.
az login --service-principal --username APP_ID --certificate /path/to/cert.pem --tenant TENANT_ID
Nu u hebt geleerd hoe u met service-principals kunt werken met behulp van een certificaat, gaat u verder met de volgende stap om te leren hoe u een bestaande service-principal ophaalt.
Azure CLI-feedback
Azure CLI is een open source project. Selecteer een koppeling om feedback te geven: