Beheerde identiteiten gebruiken met Azure-services om verbinding te maken met Azure Cosmos DB for NoSQL
VAN TOEPASSING OP: NoSQL
Diagram van de volgorde van de implementatiehandleiding, inclusief deze locaties, in volgorde: Overzicht, Concepten, Voorbereiden, op rollen gebaseerd toegangsbeheer, Netwerk en Verwijzing. De locatie Voorbereiden is momenteel gemarkeerd.
In dit artikel worden de stappen besproken die nodig zijn om beheerde identiteiten te maken voor gebruik met een geïmplementeerde toepassing die is verbonden met Azure Cosmos DB for NoSQL.
Beheerde identiteiten zijn een van de vele soorten identiteitsbronnen in Microsoft Entra ID voor toepassingen die kunnen worden gebruikt bij het maken van verbinding met services die ondersteuning bieden voor Microsoft Entra-verificatie. Beheerde identiteiten kunnen worden gebruikt in plaats van traditionele referenties die eigendom zijn van resources, zoals sleutels. In Azure bieden beheerde identiteiten een manier voor uw toepassingen om een Microsoft Entra-token te verkrijgen voor verificatie bij Azure-services zonder dat u een grote hoeveelheid verificatiecode hoeft te schrijven.
U kunt Microsoft Entra gebruiken om te verifiëren bij Azure-services, waaronder, maar niet beperkt tot:
- Azure SQL
- Azure AI
- Azure Cosmos DB
- Azure Storage
- Azure Event Hubs
- Azure Container Registry
U kunt beheerde identiteiten gebruiken om de principal weer te geven die wordt geverifieerd bij een Azure-service van andere Azure-services, waaronder, maar niet beperkt tot:
- Azure Kubernetes Service
- Azure Container Apps
- Azure Virtual Machines
- Azure Functions
- Azure App Service
- Azure Spring Apps
- Azure Service Fabric
Beheerde identiteiten maken meerdere veilige scenario's mogelijk waarbij verschillende Azure-services verbinding met elkaar kunnen maken. Enkele voorbeelden:
- Een door het systeem toegewezen beheerde identiteit maken voor een toepassing in Azure Spring Apps om verbinding te maken met en een query uit te voeren op een Azure SQL-account
- Eén door de gebruiker toegewezen beheerde identiteit gebruiken met zowel Azure Kubernetes Service als Azure Functions om aanvragen uit te geven voor een Azure AI-account
- Een beheerde identiteit gebruiken voor een Azure Cosmos DB-account om sleutels op te slaan in Azure Key Vault
Zie beheerde identiteiten voor Azure-resources voor meer informatie.
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Als u ervoor kiest om Azure PowerShell lokaal te gebruiken:
- Installeer de nieuwste versie van de Az PowerShell-module.
- Maak verbinding met uw Azure-account met de cmdlet Connect-AzAccount.
- Als u ervoor kiest om Azure Cloud Shell te gebruiken:
- Raadpleeg Overzicht van Azure Cloud Shell voor meer informatie.
Een Azure-service maken met een door het systeem toegewezen beheerde identiteit
Maak een nieuwe Azure-service met een door het systeem toegewezen beheerde identiteit. In deze sectie wordt een Azure Container Instances-resource gemaakt.
Hiermee
az container create
maakt u een nieuwe containerinstantie. Configureer het account voor het gebruik van een door het systeem toegewezen beheerde identiteit met behulp van deassign-identity
parameter.az container create \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-new-container>" \ --image mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled \ --cpu 1 \ --memory 2 \ --assign-identity
Haal de details op voor de door het systeem toegewezen beheerde identiteit en
az container show
een JMESPath-query.az container show \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-existing-container>" \ --query "identity"
Controleer de uitvoer van de opdracht. Het moet de unieke id's voor de identiteit en tenant bevatten.
{ "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "SystemAssigned", "userAssignedIdentities": null }
Maak een nieuw Bicep-bestand om een nieuwe containerinstantie te definiëren. Geef het bestand de naam container-instance.bicep. Stel deze eigenschappen in voor de containerinstantie:
Weergegeven als name
Een parameter met de naam gebruiken instanceName
location
Instellen op de locatie van de resourcegroep identity.type
SystemAssigned
properties.osType
Linux
properties.containers[0].name
aspnet-sample
properties.containers[0].properties.image
mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled
properties.containers[0].properties.resources.requests.cpu
1
properties.containers[0].properties.resources.requests.memoryInGB
2
metadata description = 'Create Azure Container Instance resource with system-assigned managed identity.' @description('Name of the Azure Container Instances resource.') param instanceName string resource instance 'Microsoft.ContainerInstance/containerGroups@2023-05-01' = { name: instanceName location: resourceGroup().location identity: { type: 'SystemAssigned' } properties: { osType: 'Linux' containers: [ { name: 'aspnet-sample' properties: { image: 'mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled' resources: { requests: { cpu: 1 memoryInGB: 2 } } } } ] } } output systemAssignedIdentity object = instance.identity
Maak een nieuw Bicep-parametersbestand met de naam container-instance.
bicepparam
. Maak in dit parameterbestand een unieke naam voor uw containerinstantie met behulp van deinstanceName
parameter.using './container-instance.bicep' param instanceName = '<name-of-new-container-instance>'
Implementeer de Bicep-sjabloon met behulp van
az deployment group create
. Geef de naam op van de Bicep-sjabloon, het parameterbestand en de Azure-resourcegroep.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters "container-instance.bicepparam" \ --template-file "container-instance.bicep"
Controleer de uitvoer van de implementatie. De uitvoer bevat het identiteitsobject van de containerinstantie in de
properties.outputs.systemAssignedIdentity.value
eigenschap.{ "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "SystemAssigned" }
Meld u aan bij Azure Portal (https://portal.azure.com).
Voer Azure Container Instances in de algemene zoekbalk in.
Selecteer containerinstanties in Services.
Selecteer Maken in het deelvenster Containerinstanties.
Configureer in het deelvenster Basisbeginselen de volgende opties en selecteer Vervolgens Beoordelen en maken:
Weergegeven als Abonnement Selecteer uw Azure-abonnement Resourcegroep Een nieuwe resourcegroep maken of een bestaande resourcegroep selecteren Containernaam Geef een wereldwijd unieke naam op Regio Selecteer een ondersteunde Azure-regio voor uw abonnement Tip
U kunt alle niet-opgegeven opties op de standaardwaarden laten staan.
Wacht in het deelvenster Controleren en maken tot de validatie van uw account is voltooid en selecteer vervolgens Maken.
De portal gaat automatisch naar het deelvenster Implementatie . Wacht totdat de installatie is voltooid.
Zodra de implementatie is voltooid, selecteert u Ga naar de resource om naar de nieuwe Azure Container Instances-resource te navigeren.
Selecteer identiteit in het deelvenster voor het nieuwe containerexemplaren in de sectie Instellingen van het servicemenu.
Schakel in het deelvenster Identiteit de door het systeem toegewezen beheerde identiteit in door de optie Status in te stellen op Aan. Selecteer vervolgens Opslaan en los eventuele prompts op om de wijziging door te voeren.
Zodra de door het systeem toegewezen beheerde identiteit gereed is, controleert u de waarde van de eigenschap Object-id (principal). De waarde van deze eigenschap is de unieke id voor de identiteit.
Tip
In dit voorbeeld is de unieke id voor de door het systeem toegewezen beheerde identiteit
bbbbbbbb-1111-2222-3333-cccccccccccc
.
Maak een object dat een container vertegenwoordigt en
New-AzContainerInstanceObject
sla het op in een variabele met de naam$container
. Gebruik vervolgens dat containerobject om een nieuw containerexemplaren te maken metNew-AzContainerGroup
. Configureer het account voor het gebruik van een door het systeem toegewezen beheerde identiteit door deIdentityType
parameter in te stellen opSystemAssigned
.$parameters = @{ Name = "aspnet-sample" Image = "mcr.microsoft.com/dotnet/samples:aspnetapp-chiseled" RequestCpu = 1 RequestMemoryInGb = 2 } $container = New-AzContainerInstanceObject @parameters $parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-new-container>" Container = $container OsType = "Linux" Location = "<azure-region>" IdentityType = "SystemAssigned" } New-AzContainerGroup @parameters
Haal de details op voor de door het systeem toegewezen beheerde identiteit en
Get-AzContainerGroup
Format-List
selecteer alleen deIdentity
eigenschap.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-existing-container>" } Get-AzContainerGroup @parameters | Format-List Identity
Controleer de uitvoer van de opdracht. Het moet de unieke id's voor de identiteit en tenant bevatten.
Identity : { "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "SystemAssigned" }
Een door de gebruiker toegewezen beheerde identiteit maken
Maak een door de gebruiker toegewezen beheerde identiteit die op een draagbare manier kan worden gebruikt met een of meer Azure-services.
Hiermee
az identity create
maakt u een nieuwe door de gebruiker toegewezen beheerde identiteit in uw Azure-resourcegroep.az identity create \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-new-managed-identity>"
De lijst met door de gebruiker toegewezen beheerde identiteiten in uw resourcegroep ophalen met behulp van
az identity list
az identity list \ --resource-group "<name-of-existing-resource-group>"
Controleer de uitvoer van de opdracht. Noteer de waarde van het
id
veld omdat deze volledig gekwalificeerde resource-id wordt gebruikt om de door de gebruiker toegewezen beheerde identiteit toe te wijzen aan uw Azure-resource.{ "clientId": "11112222-bbbb-3333-cccc-4444dddd5555", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned", "location": "<azure-location>", "name": "msdocs-identity-example-user-assigned", "principalId": "cccccccc-dddd-eeee-3333-444444444444", "resourceGroup": "msdocs-identity-example", "systemData": null, "tags": {}, "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "Microsoft.ManagedIdentity/userAssignedIdentities" }
Notitie
In dit voorbeeld is
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned
deid
waarde . In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.
Maak een Bicep-bestand om een door de gebruiker toegewezen beheerde identiteit te definiëren en geef het bestand de naam door de gebruiker toegewezen beheerde identiteit.bicep. Stel deze minimale eigenschappen in:
Weergegeven als name
Een optionele parameter met de naam identityName
gebruiken en een unieke standaardwaarde genererenlocation
Instellen op de locatie van de resourcegroep metadata description = 'Create a user-assigned managed identity.' param identityName string = uniqueString(subscription().id, resourceGroup().id) resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = { name: identityName location: resourceGroup().location } output id string = identity.id output name string = identity.name
Implementeer de Bicep-sjabloon met behulp van
az deployment group create
. Geef de naam op van de Bicep-sjabloon en de Azure-resourcegroep.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --template-file "user-assigned-managed-identity.bicep"
Controleer de uitvoer van de implementatie. De uitvoer bevat de unieke id van de beheerde identiteit in de
properties.outputs.name.value
eigenschap. Noteer deze waarde omdat deze moet worden gebruikt bij het maken van een nieuwe Azure-resource verderop in deze handleiding.{ "type": "String", "value": "msdocs-identity-example-user-assigned" }
Notitie
In dit voorbeeld is
msdocs-identity-example-user-assigned
ditname.value
. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.
Voer beheerde identiteit in de algemene zoekbalk in.
Selecteer beheerde identiteiten in Services.
Selecteer Maken in het deelvenster Containerinstanties.
Configureer in het deelvenster Basisbeginselen de volgende opties en selecteer Vervolgens Beoordelen en maken:
Weergegeven als Abonnement Selecteer uw Azure-abonnement Resourcegroep Een nieuwe resourcegroep maken of een bestaande resourcegroep selecteren Regio Selecteer een ondersteunde Azure-regio voor uw abonnement Naam Geef een wereldwijd unieke naam op Wacht in het deelvenster Controleren en maken tot de validatie van uw account is voltooid en selecteer vervolgens Maken.
De portal gaat automatisch naar het deelvenster Implementatie . Wacht totdat de installatie is voltooid.
Wacht tot de implementatie van de beheerde identiteit is voltooid.
Maak een nieuwe door de gebruiker toegewezen beheerde identiteit met behulp van
New-AzUserAssignedIdentity
uw Azure-resourcegroep.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-new-managed-identity>" Location = "<azure-region>" } New-AzUserAssignedIdentity @parameters
Hiermee
Get-AzUserAssignedIdentity
haalt u een lijst op met door de gebruiker toegewezen beheerde identiteiten in uw resourcegroep.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" } Get-AzUserAssignedIdentity @parameters | Format-List Name, Id
Controleer de uitvoer van de opdracht. Noteer de waarde van het
Id
veld omdat deze volledig gekwalificeerde resource-id wordt gebruikt om de door de gebruiker toegewezen beheerde identiteit toe te wijzen aan uw Azure-resource.Name : msdocs-identity-example-user-assigned Id : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned
Notitie
In dit voorbeeld is
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned
deId
waarde . In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.
Een Azure-service maken met een door de gebruiker toegewezen beheerde identiteit
Wijs de eerder gemaakte door de gebruiker toegewezen beheerde identiteit toe aan een nieuwe Azure-hostservice. In deze sectie wordt een Azure-app Services-web-app-resource gemaakt.
Maak een nieuw App Service-plan met behulp van
az appservice plan create
.az appservice plan create \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-new-plan>"
Wijs de door de gebruiker toegewezen beheerde identiteit toe aan een nieuwe web-app met
az webapp create
. Gebruik hetid
veld dat eerder in deze handleiding is vastgelegd als de waarde van dessign-identity
parameter.az webapp create \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-existing-web-app>" \ --plan "<name-of-existing-plan>" \ --assign-identity "<resource-id-recorded-earlier>"
Haal de details op voor alle identiteiten die zijn toegewezen aan dit account met behulp van
az webapp show
een JMESPath-query.az webapp show \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-existing-account>" \ --query "identity"
Controleer de uitvoer van de opdracht. Het moet zowel de door de gebruiker toegewezen beheerde identiteit bevatten.
{ "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": { "clientId": "11112222-bbbb-3333-cccc-4444dddd5555", "principalId": "cccccccc-dddd-eeee-3333-444444444444" } } }
Maak een ander Bicep-bestand met de naam app-service-web-app.bicep en definieer een Azure-app Service-plan en web-app. Stel deze eigenschappen voor deze resources in:
Resource Weergegeven als name
Bestaande beheerde identiteit Een parameter met de naam gebruiken identityName
name
App Service-plan Een parameter met de naam gebruiken planName
location
App Service-plan Instellen op de locatie van de resourcegroep name
Webapp Een parameter met de naam gebruiken webAppName
location
Webapp Instellen op de locatie van de resourcegroep identity.type
UserAssigned
identity.userAssignedIdentities.{identity.id}
{}
properties.serverFarmId
plan.id
metadata description = 'Creates an Azure App Service plan and web app with a user-assigned managed identity.' @description('The name of the app service plan.') param planName string @description('The name of the web app.') param webAppName string @description('The name of the user-assigned managed identity.') param identityName string resource identity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' existing = { name: identityName } resource plan 'Microsoft.Web/serverfarms@2023-12-01' = { name: planName location: resourceGroup().location } resource webApp 'Microsoft.Web/sites@2023-12-01' = { name: webAppName location: resourceGroup().location identity: { type: 'UserAssigned' userAssignedIdentities: { '${identity.id}': {} } } properties: { serverFarmId: plan.id } } output userAssignedIdentity object = webApp.identity
Maak een Bicep-parametersbestand met de naam app-service-web-app.
bicepparam
. Maak in dit parameterbestand een unieke naam voor uw web-app en plan respectievelijk deplanName
enwebAppName
parameters. Geef vervolgens de naam op van de door de gebruiker toegewezen beheerde identiteit als de waarde van deidentityName
parameter.using './app-service-web-app.bicep' param planName = '<name-of-new-app-service-plan>' param webAppName = '<name-of-new-web-app>' param identityName = '<name-of-existing-managed-identity>'
Implementeer de Bicep-sjabloon met behulp van
az deployment group create
. Geef de naam op van de Bicep-sjabloon, het parameterbestand en de Azure-resourcegroep.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters "app-service-web-app.bicepparam" \ --template-file "app-service-web-app.bicep"
Controleer de uitvoer van de implementatie. De uitvoer bevat het identiteitsobject van de containerinstantie in de
properties.outputs.userAssignedIdentity.value
eigenschap.{ "type": "UserAssigned", "userAssignedIdentities": { "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": { "clientId": "11112222-bbbb-3333-cccc-4444dddd5555", "principalId": "cccccccc-dddd-eeee-3333-444444444444" } } }
Voer de web-app in de algemene zoekbalk in.
Selecteer App Services in Services.
Selecteer In het deelvenster App Services de optie Maken en vervolgens Web App.
Configureer in het deelvenster Basisbeginselen de volgende opties en selecteer Vervolgens Beoordelen en maken:
Weergegeven als Abonnement Selecteer uw Azure-abonnement Resourcegroep Een nieuwe resourcegroep maken of een bestaande resourcegroep selecteren Naam Geef een wereldwijd unieke naam op Plannen Een nieuw plan maken of een bestaand plan selecteren Wacht in het deelvenster Controleren en maken tot de validatie van uw account is voltooid en selecteer vervolgens Maken.
De portal gaat automatisch naar het deelvenster Implementatie . Wacht totdat de installatie is voltooid.
Zodra de implementatie is voltooid, selecteert u Ga naar de resource om naar de nieuwe Azure Container Instances-resource te navigeren.
Selecteer identiteit in het deelvenster voor het nieuwe containerexemplaren in de sectie Instellingen van het servicemenu.
Selecteer in het deelvenster Identiteit de optie Door de gebruiker toegewezen .
Selecteer Toevoegen om een dialoogvenster te openen om bestaande door de gebruiker toegewezen beheerde identiteiten toe te wijzen. Selecteer in het dialoogvenster uw bestaande door de gebruiker toegewezen beheerde identiteit en selecteer vervolgens Toevoegen.
Controleer ten slotte de lijst met door de gebruiker toegewezen beheerde identiteiten die zijn gekoppeld aan uw web-app. Deze moet de naam, de naam van de resourcegroep en de abonnements-id van de identiteit bevatten.
Hiermee
New-AzWebApp
maakt u een nieuwe Azure-app Service-web-app.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-new-web-app>" Location = "<azure-region>" } New-AzWebApp @parameters
Patch de zojuist gemaakte web-app om de
identity.type
eigenschap inUserAssigned
te stellen en uw bestaande door de gebruiker toegewezen beheerde identiteit toe te voegen aan deidentity.userAssignedIdentities
eigenschap. Als u deze taak wilt uitvoeren, geeft u eerst hetid
veld op dat eerder in deze handleiding is vastgelegd als de waarde van deidentityId
shellvariabele. Vervolgens maakt u een nettoladingobject en converteert u het naar JSON.Invoke-AzRestMethod
Gebruik ten slotte hetPATCH
HTTP-woord om de bestaande web-app bij te werken.$identityId = "<resource-id-recorded-earlier>" $payload = @{ identity = @{ type = "UserAssigned" userAssignedIdentities = @{ "$identityId" = @{} } } } | ConvertTo-Json -Depth 3 $parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-existing-web-app>" ResourceProviderName = 'Microsoft.Web' ResourceType = 'sites' ApiVersion = '2023-12-01' Method = 'PATCH' Payload = $payload } Invoke-AzRestMethod @parameters
Haal de details op voor alle identiteiten die zijn toegewezen aan de web-app en
Get-AzWebApp
Select-Object
ConvertTo-Json
selecteer alleen deIdentity
eigenschap.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-existing-web-app>" } Get-AzWebApp @parameters | Select-Object Identity | ConvertTo-Json -Depth 3
Controleer de uitvoer van de opdracht. Het moet de unieke id's voor de identiteit en tenant bevatten.
{ "Identity": { "Type": "UserAssigned", "TenantId": null, "PrincipalId": null, "UserAssignedIdentities": { "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned": { "PrincipalId": "cccccccc-dddd-eeee-3333-444444444444", "ClientId": "11112222-bbbb-3333-cccc-4444dddd5555" } } } }