Toepassingen bouwen met behulp van door Microsoft Entra beheerde identiteiten

Voltooid

U hebt al een virtuele Azure-machine gemaakt en een door het systeem beheerde identiteit toegewezen. U wilt apps die worden uitgevoerd op deze virtuele machine aanvragen voor Azure-resources laten verifiëren. In plaats van het gebruik van wachtwoorden naar gedeelde sleutels gebruikt u de door het systeem toegewezen beheerde identiteit.

In deze les leert u meer over de manier waarop toepassingen beheerde identiteiten kunnen gebruiken voor verificatie. U ziet hoe u Azure Key Vault gebruikt om een autorisatiebeleid te definiëren en u schakelt een geverifieerde identiteit in om geheime informatie te lezen.

Beheerde identiteiten

In een eerdere les hebt u geleerd dat ondersteuning voor Azure door het systeem toegewezen beheerde identiteiten en door de gebruiker toegewezen beheerde identiteiten. Azure maakt en beheert een door het systeem toegewezen beheerde identiteit. Deze identiteit is nauw gekoppeld aan een specifieke resource. Als u bijvoorbeeld een virtuele machine maakt met een door het systeem toegewezen beheerde identiteit, wordt de identiteit automatisch gemaakt in Azure. De identiteit wordt gekoppeld aan de virtuele machine. Als de virtuele machine wordt verwijderd, wordt ook de identiteit verwijderd.

Door de gebruiker toegewezen beheerde identiteiten zijn onafhankelijk van elke resource. U maakt handmatig een door de gebruiker toegewezen beheerde identiteit en vervolgens wijst u deze toe aan een resource of service, zoals uw app voor voorraadtracking. Wanneer de app wordt uitgevoerd, wordt de door de gebruiker toegewezen beheerde identiteit gebruikt. U wijst toegangsrechten toe aan deze identiteit voor de Azure-resources waarvoor de app toegang nodig heeft. U kunt deze methode gebruiken om uw app op meerdere virtuele machines te implementeren. De app gebruikt deze door de gebruiker toegewezen beheerde identiteit in plaats van een door het systeem toegewezen beheerde identiteit in te stellen voor elke virtuele machine.

Een door de gebruiker toegewezen beheerde identiteit maken en beheren

U kunt een door de gebruiker toegewezen beheerde identiteit maken in Azure Portal of via een opdrachtprompt. De volgende opdracht maakt gebruik van de Azure CLI:

az identity create \
  --name <identity name>
  --resource-group <resource group>

Voer de volgende opdracht uit om een lijst met identiteiten weer te geven, inclusief door het systeem toegewezen beheerde identiteiten. Noteer de principal-id van uw identiteit. Azure gebruikt deze id om bevoegdheden toe te wijzen en te verifiëren.

az identity list \
  --resource-group <resource group>

Nadat u een identiteit hebt gemaakt, kunt u de principal-id gebruiken om de identiteit aan uw resources te koppelen.

Als u de identiteit wilt gebruiken met een Azure-functie-app, voert u de volgende opdracht uit:

az functionapp identity assign \
  --name <function app name> \
  --resource-group <resource group> \
  --role <principal id>

De functie-app gebruikt deze identiteit om te worden uitgevoerd. De app kan toegang krijgen tot de resources die beschikbaar zijn voor de identiteit.

De vereiste opdrachten zijn per resource verschillend. Voer bijvoorbeeld de volgende opdracht uit om de identiteit de mogelijkheid te geven om sleutels uit Azure Key Vault te lezen en weer te geven:

az keyvault set-policy \
    --name <key vault name> \
    --object-id <principal id> \
    --secret-permissions get list

Als u een door de gebruiker toegewezen beheerde identiteit wilt verwijderen, voert u de volgende opdracht uit:

az identity delete \
  --name <identity name>
  --resource-group <resource group>

Beheerde identiteit gebruiken met Azure Key Vault

Met de DefaultAzureCredential-provider kunt u beheerde identiteiten gebruiken voor verificatie wanneer onze toepassing wordt geïmplementeerd in Azure en lokale referenties voor ontwikkelaars gebruiken tijdens de ontwikkeling. Als u DefaultAzureCredential wilt gebruiken, moet u het Azure.Identity-pakket installeren:

dotnet install Azure.Identity

Met behulp van de DefaultAzureCredential, kunnen we nu een geverifieerde SecretClientmaken.

var client = new SecretClient(new Uri(keyVaultUrl), new DefaultAzureCredential());

Nadat we onze client hebben gemaakt, halen we een benoemd geheim op.

KeyVaultSecret secretWithValue = await client.GetSecretAsync(secret.Name).ConfigureAwait(false);