Lezen in het Engels

Delen via


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.

Een service-principal met een nieuw certificaat maken

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-----

Een service-principal maken met behulp van een bestaand certificaat

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-----

Werken met Azure Key Vault

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

Een certificaat ophalen uit Azure Key Vault

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

Een bestaand PKCS12-bestand converteren

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:

Een certificaat toevoegen aan een service-principal

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"
}

Aanmelden met een service-principal met behulp van een certificaat

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

Volgende stappen

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.