Partilhar via


Como usar identidades gerenciadas com serviços do Azure para se conectar ao Azure Cosmos DB para NoSQL

APLICA-SE A: NoSQL

Diagrama do local atual ('Preparar') na sequência do guia de implantação.

Diagrama da sequência do guia de implantação, incluindo esses locais, na ordem: Visão geral, Conceitos, Preparar, Controle de acesso baseado em função, Rede e Referência. O local 'Preparar' está atualmente em destaque.

Este artigo analisa as etapas necessárias para criar identidades gerenciadas para usar com um aplicativo implantado conectado ao Azure Cosmos DB para NoSQL.

As identidades gerenciadas são um dos muitos tipos de recursos de identidade no Microsoft Entra ID para aplicativos a serem usados ao se conectar a serviços que oferecem suporte à autenticação do Microsoft Entra. As identidades gerenciadas podem ser usadas em vez de credenciais tradicionais de propriedade de recursos, como chaves. No Azure, as identidades gerenciadas fornecem uma maneira de seus aplicativos obterem um token do Microsoft Entra para se autenticarem nos serviços do Azure sem que você precise escrever uma grande quantidade de código de autenticação.

Você pode usar o Microsoft Entra para autenticar nos serviços do Azure, incluindo, mas não limitado a:

  • SQL do Azure
  • Azure AI
  • Azure Cosmos DB
  • Armazenamento do Azure
  • Azure Event Hubs
  • Registo de Contentores do Azure

Você pode usar identidades gerenciadas para representar a entidade que se autentica em um serviço do Azure a partir de outros serviços do Azure, incluindo, mas não limitado a:

  • Azure Kubernetes Service
  • Azure Container Apps
  • Máquinas Virtuais do Microsoft Azure
  • Funções do Azure
  • Serviço de Aplicações do Azure
  • Azure Spring Apps
  • Azure Service Fabric

As identidades gerenciadas permitem vários cenários seguros em que vários serviços do Azure podem se conectar uns aos outros. Alguns exemplos incluem:

  • Criando uma identidade gerenciada atribuída pelo sistema para um aplicativo no Azure Spring Apps para se conectar e consultar uma conta SQL do Azure
  • Usando uma única identidade gerenciada atribuída pelo usuário com o Serviço Kubernetes do Azure e o Azure Functions para emitir solicitações para uma conta de IA do Azure
  • Usando uma identidade gerenciada para uma conta do Azure Cosmos DB para armazenar chaves no Cofre de Chaves do Azure

Para obter mais informações, consulte identidades gerenciadas para recursos do Azure.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

Criar um serviço do Azure com uma identidade gerenciada atribuída ao sistema

Crie um novo serviço do Azure com uma identidade gerenciada atribuída ao sistema. Esta seção cria um recurso de Instâncias de Contêiner do Azure.

  1. Use az container create para criar uma nova instância de contêiner. Configure a conta para usar uma identidade gerenciada atribuída ao sistema usando o assign-identity parâmetro.

    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
    
  2. Obtenha os detalhes da identidade gerenciada atribuída ao sistema usando az container show e uma consulta JMESPath.

    az container show \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-existing-container>" \
        --query "identity"
    
  3. Revise a saída do comando. Deve incluir os identificadores únicos da identidade e do inquilino.

    {
      "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
      "type": "SystemAssigned",
      "userAssignedIdentities": null
    }
    
  1. Crie um novo arquivo Bicep para definir uma nova instância de contêiner. Nomeie o arquivo container-instance.bicep. Defina estas propriedades para a instância do contêiner:

    Value
    name Use um parâmetro chamado instanceName
    location Definir para a localização do grupo de recursos
    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    
    
  2. Crie um novo arquivo de parâmetros do Bicep chamado container-instance.bicepparam. Neste arquivo de parâmetros, crie um nome exclusivo para sua instância de contêiner usando o instanceName parâmetro.

    using './container-instance.bicep'
    
    param instanceName = '<name-of-new-container-instance>'
    
  3. Implante o modelo Bicep usando az deployment group createo . Especifique o nome do modelo Bicep, do arquivo de parâmetros e do grupo de recursos do Azure.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --parameters "container-instance.bicepparam" \
        --template-file "container-instance.bicep"
    
  4. Analise a saída da implantação. A saída contém o objeto de identidade da instância de contêiner na properties.outputs.systemAssignedIdentity.value propriedade.

    {
      "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
      "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
      "type": "SystemAssigned"
    }
    
  1. Entre no portal do Azure (https://portal.azure.com).

  2. Insira Instâncias de Contêiner do Azure na barra de pesquisa global.

    Captura de ecrã da barra de pesquisa global no portal do Azure.

  3. Em Serviços, selecione Instâncias de contêiner.

    Captura de tela da opção 'Instâncias de contêiner' selecionada no menu de pesquisa.

  4. No painel Instâncias de contêiner, selecione Criar.

    Captura de ecrã da opção 'Criar' no painel para Instâncias de Contentor do Azure.

  5. No painel Noções básicas, configure as seguintes opções e selecione Revisar + criar:

    Value
    Subscrição Selecione a sua subscrição do Azure
    Grupo de Recursos Criar um novo grupo de recursos ou selecionar um grupo de recursos existente
    Nome do contêiner Forneça um nome globalmente exclusivo
    Região Selecione uma região do Azure suportada para a sua subscrição

    Captura de ecrã do painel 'Básicos' de criação de recursos das Instâncias de Contentor do Azure.

    Gorjeta

    Você pode deixar quaisquer opções não especificadas para seus valores padrão.

  6. No painel Rever + criar, aguarde até que a validação da sua conta termine com êxito e, em seguida, selecione Criar.

    Captura de tela da etapa de validação de recursos na experiência de criação de uma instância de contêiner.

  7. O portal navega automaticamente para o painel Implantação . Aguarde pela conclusão da implementação.

  8. Quando a implantação estiver concluída, selecione Ir para o recurso para navegar até o novo recurso de Instâncias de Contêiner do Azure.

    Captura de ecrã de um recurso de Instâncias de Contentor do Azure totalmente implementado com a opção 'Ir para recurso' realçada.

  9. No painel da nova instância de contêiner, selecione Identidade dentro da seção Configurações do menu de serviço.

    Captura de tela da opção 'Identidade' no menu de serviço para a instância do contêiner.

  10. No painel Identidade, habilite a identidade gerenciada atribuída ao sistema definindo a opção Status como Ativado. Em seguida, selecione Salvar e resolva todos os prompts para confirmar a alteração.

    Captura de ecrã a mostrar a definição da opção 'Estado' como 'Ativado' para uma identidade gerida atribuída pelo sistema.

  11. Quando a identidade gerenciada atribuída ao sistema estiver pronta, revise o valor da propriedade ID do objeto (principal). O valor desta propriedade é o identificador exclusivo da identidade.

    Captura de tela dos detalhes de uma identidade gerenciada atribuída ao sistema habilitada.

    Gorjeta

    Neste exemplo de captura de tela, o identificador exclusivo para a identidade gerenciada atribuída ao sistema é bbbbbbbb-1111-2222-3333-cccccccccccc.

  1. Crie um objeto que represente um contêiner usando New-AzContainerInstanceObject e armazene-o em uma variável chamada $container. Em seguida, use esse objeto container para criar uma nova instância de contêiner com New-AzContainerGroup. Configure a conta para usar uma identidade gerenciada atribuída ao sistema definindo o IdentityType parâmetro como SystemAssigned.

    $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
    
  2. Obtenha os detalhes da identidade gerenciada atribuída ao sistema usando Get-AzContainerGroup e Format-List selecionando apenas a Identity propriedade.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-container>"
    }
    Get-AzContainerGroup @parameters | Format-List Identity
    
  3. Revise a saída do comando. Deve incluir os identificadores únicos da identidade e do inquilino.

    Identity : {
                 "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
                 "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
                 "type": "SystemAssigned"
               }
    

Criar uma identidade gerida atribuída pelo utilizador

Crie uma identidade gerenciada atribuída pelo usuário que possa ser usada com um ou mais serviços do Azure de maneira portátil.

  1. Use az identity create para criar uma nova identidade gerenciada atribuída pelo usuário em seu grupo de recursos do Azure.

    az identity create \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-new-managed-identity>"
    
  2. Obtenha a lista de identidades gerenciadas atribuídas pelo usuário em seu grupo de recursos usando az identity list

    az identity list \
        --resource-group "<name-of-existing-resource-group>"    
    
  3. Revise a saída do comando. Registre o valor do campo à medida que esse identificador de id recurso totalmente qualificado é usado para atribuir a identidade gerenciada atribuída pelo usuário ao seu recurso do Azure.

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

    Nota

    Neste exemplo, o id valor seria /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned. Este exemplo usa dados fictícios e seu identificador seria diferente deste exemplo.

  1. Crie um arquivo Bicep para definir uma identidade gerenciada atribuída pelo usuário e nomeie o arquivo user-assigned-managed-identity.bicep. Defina estas propriedades mínimas:

    Value
    name Use um parâmetro opcional chamado identityName e gere um valor padrão exclusivo
    location Definir para a localização do grupo de recursos
    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
    
  2. Implante o modelo Bicep usando az deployment group createo . Especifique o nome do modelo Bicep e do grupo de recursos do Azure.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --template-file "user-assigned-managed-identity.bicep"
    
  3. Analise a saída da implantação. A saída contém o identificador exclusivo da identidade gerenciada na properties.outputs.name.value propriedade. Registre esse valor como ele é necessário usar ao criar um novo recurso do Azure posteriormente neste guia.

    {
      "type": "String",
      "value": "msdocs-identity-example-user-assigned"
    }
    

    Nota

    Neste exemplo, o name.value seria msdocs-identity-example-user-assigned. Este exemplo usa dados fictícios e seu identificador seria diferente deste exemplo.

  1. Insira Identidade gerenciada na barra de pesquisa global.

  2. Em Serviços, selecione Identidades gerenciadas.

    Captura de ecrã da opção 'Identidades geridas' selecionada no menu de pesquisa.

  3. No painel Instâncias de contêiner, selecione Criar.

    Captura de ecrã da opção 'Criar' no painel de Identidades Geridas.

  4. No painel Noções básicas, configure as seguintes opções e selecione Revisar + criar:

    Value
    Subscrição Selecione a sua subscrição do Azure
    Grupo de Recursos Criar um novo grupo de recursos ou selecionar um grupo de recursos existente
    Região Selecione uma região do Azure suportada para a sua subscrição
    Nome Forneça um nome globalmente exclusivo

    Captura de ecrã do painel 'Básicos' de criação de recursos de identidade geridos.

  5. No painel Rever + criar, aguarde até que a validação da sua conta termine com êxito e, em seguida, selecione Criar.

    Captura de tela da etapa de validação de recursos na experiência de criação de uma identidade gerenciada.

  6. O portal navega automaticamente para o painel Implantação . Aguarde pela conclusão da implementação.

  7. Aguarde a conclusão da implantação da identidade gerenciada.

    Captura de tela de um recurso de identidade gerenciado totalmente implantado.

  1. Crie uma nova identidade gerenciada atribuída pelo usuário usando New-AzUserAssignedIdentity seu grupo de recursos do Azure.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-new-managed-identity>"
        Location = "<azure-region>"
    }
    New-AzUserAssignedIdentity @parameters
    
  2. Use Get-AzUserAssignedIdentity para obter uma lista de identidades gerenciadas atribuídas pelo usuário em seu grupo de recursos.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
    }
    Get-AzUserAssignedIdentity @parameters | Format-List Name, Id
    
  3. Revise a saída do comando. Registre o valor do campo à medida que esse identificador de Id recurso totalmente qualificado é usado para atribuir a identidade gerenciada atribuída pelo usuário ao seu recurso do Azure.

    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
    

    Nota

    Neste exemplo, o Id valor seria /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.ManagedIdentity/userAssignedIdentities/msdocs-identity-example-user-assigned. Este exemplo usa dados fictícios e seu identificador seria diferente deste exemplo.

Criar um serviço do Azure com uma identidade gerenciada atribuída pelo usuário

Atribua a identidade gerenciada atribuída pelo usuário criada anteriormente a um novo serviço de host do Azure. Esta seção cria um recurso de aplicativo Web dos Serviços de Aplicativo do Azure.

  1. Crie um novo plano de serviço de aplicativo usando az appservice plan createo .

    az appservice plan create \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-new-plan>"
    
  2. Atribua a identidade gerenciada atribuída pelo usuário a um novo aplicativo Web com az webapp createo . Use o id campo registrado anteriormente neste guia como o valor do ssign-identity parâmetro.

    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>"
    
  3. Obtenha os detalhes de todas as identidades atribuídas a esta conta usando az webapp show e uma consulta JMESPath.

    az webapp show \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-existing-account>" \
        --query "identity"   
    
  4. Revise a saída do comando. Ele deve incluir a identidade gerenciada atribuída pelo usuário.

    {
      "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"
        }
      }
    }
    
  1. Crie outro arquivo Bicep chamado app-service-web-app.bicep e defina um plano e um aplicativo Web do Serviço de Aplicativo do Azure. Defina estas propriedades para esses recursos:

    Recurso Value
    name Identidade gerenciada existente Use um parâmetro chamado identityName
    name Plano do Serviço de Aplicações Use um parâmetro chamado planName
    location Plano do Serviço de Aplicações Definir para a localização do grupo de recursos
    name Aplicação Web Use um parâmetro chamado webAppName
    location Aplicação Web Definir para a localização do grupo de recursos
    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
    
  2. Crie um arquivo de parâmetros do Bicep chamado app-service-web-app.bicepparam. Neste arquivo de parâmetros, crie um nome exclusivo para seu aplicativo Web e planeje usando os planName parâmetros e webAppName respectivamente. Em seguida, forneça o nome da identidade gerenciada atribuída pelo usuário como o valor do identityName parâmetro.

    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>'
    
  3. Implante o modelo Bicep usando az deployment group createo . Especifique o nome do modelo Bicep, do arquivo de parâmetros e do grupo de recursos do Azure.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --parameters "app-service-web-app.bicepparam" \
        --template-file "app-service-web-app.bicep"
    
  4. Analise a saída da implantação. A saída contém o objeto de identidade da instância de contêiner na properties.outputs.userAssignedIdentity.value propriedade.

    {
      "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"
        }
      }
    }
    
  1. Insira Aplicativo Web na barra de pesquisa global.

  2. Em Serviços, selecione Serviços de Aplicativo.

    Captura de ecrã da opção 'Serviços de Aplicações' selecionada no menu de pesquisa.

  3. No painel Serviços de Aplicativo , selecione Criar e, em seguida , Aplicativo Web.

    Captura de ecrã das opções 'Criar' e 'Aplicação Web' no painel do Serviço de Aplicações do Azure.

  4. No painel Noções básicas, configure as seguintes opções e selecione Revisar + criar:

    Value
    Subscrição Selecione a sua subscrição do Azure
    Grupo de Recursos Criar um novo grupo de recursos ou selecionar um grupo de recursos existente
    Nome Forneça um nome globalmente exclusivo
    Planear Criar um novo plano ou selecionar um plano existente

    Captura de ecrã do painel

  5. No painel Rever + criar, aguarde até que a validação da sua conta termine com êxito e, em seguida, selecione Criar.

    Captura de tela da etapa de validação de recursos na experiência de criação de um recurso de aplicativo Web.

  6. O portal navega automaticamente para o painel Implantação . Aguarde pela conclusão da implementação.

  7. Quando a implantação estiver concluída, selecione Ir para o recurso para navegar até o novo recurso de Instâncias de Contêiner do Azure.

    Captura de ecrã de um recurso de aplicação Web do Serviço de Aplicações do Azure totalmente implementado com a opção 'Ir para o recurso' realçada.

  8. No painel da nova instância de contêiner, selecione Identidade dentro da seção Configurações do menu de serviço.

    Captura de ecrã da opção 'Identidade' no menu de serviço da aplicação Web.

  9. No painel Identidade, selecione a opção Usuário atribuído.

    Captura de ecrã da opção 'Utilizador atribuído' no painel 'Identidade' da aplicação Web.

  10. Selecione Adicionar para abrir uma caixa de diálogo para atribuir identidades gerenciadas atribuídas pelo usuário existentes. Na caixa de diálogo, selecione sua identidade gerenciada atribuída pelo usuário existente e, em seguida, selecione Adicionar.

    Captura de ecrã da opção 'Adicionar' e da caixa de diálogo 'Adicionar identidade gerida atribuída ao utilizador' no painel 'Identidade' da aplicação Web.

  11. Por fim, revise a lista de identidades gerenciadas atribuídas pelo usuário associadas ao seu aplicativo Web. Ele deve incluir o nome da identidade, o nome do grupo de recursos e o identificador de assinatura.

    Captura de ecrã da lista de identidades geridas atribuídas pelo utilizador associadas à aplicação Web atual.

  1. Use New-AzWebApp para criar um novo aplicativo Web do Serviço de Aplicativo do Azure.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-new-web-app>"
        Location = "<azure-region>"
    }
    New-AzWebApp @parameters
    
  2. Corrija o aplicativo Web recém-criado para definir a identity.type propriedade e UserAssigned adicionar sua identidade gerenciada atribuída pelo usuário existente à identity.userAssignedIdentities propriedade. Para realizar essa tarefa, primeiro forneça o id campo registrado anteriormente neste guia como o valor da identityId variável shell. Em seguida, construa um objeto de carga útil e converta-o em JSON. Finalmente, use Invoke-AzRestMethod com o verbo PATCH HTTP para atualizar o aplicativo Web existente.

    $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
    
  3. Obtenha os detalhes de todas as identidades atribuídas ao aplicativo Web usando Get-AzWebApp, Select-Objecte ConvertTo-Json selecionando apenas a Identity propriedade.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-web-app>"
    }
    Get-AzWebApp @parameters | Select-Object Identity | ConvertTo-Json -Depth 3
    
  4. Revise a saída do comando. Deve incluir os identificadores únicos da identidade e do inquilino.

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

Próximo passo