Partilhar via


Fazer referência a recursos existentes do Microsoft Graph em modelos Bicep

O Bicep permite que você leia os recursos existentes usando a palavra-chave existente . Para recursos do Microsoft Graph, os recursos devem primeiro ser identificados exclusivamente por uma propriedade de chave fornecida pelo cliente.

Neste artigo, você aprenderá a usar a existing palavra-chave e a chave fornecida pelo cliente para ler as propriedades dos recursos existentes do Microsoft Graph.

Importante

O Microsoft Graph Bicep está atualmente em pré-visualização. Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Pré-requisitos

  • Ter uma subscrição do Azure. Se não tiver uma, poderá criar uma conta gratuita.
  • Ter as permissões ou funções menos privilegiadas para ler ou atualizar o recurso existente ou ser o proprietário do recurso. Consulte Funções menos privilegiadas por tarefa e Permissões de usuário padrão para ver quais funções precisam ser atribuídas.
  • Instale as ferramentas do Bicep para criação e implantação. Este guia de início rápido usa o VS Code com a extensão Bicep para criação e a CLI do Azure para implantação. Exemplos também são fornecidos para o Azure PowerShell.
  • Você pode implantar os arquivos Bicep interativamente ou por meio da implantação zero-touch (somente aplicativo).

Ler propriedades de um recurso existente do Microsoft Graph

As etapas a seguir mostram como fazer referência a um grupo e aplicativo existentes por seu nome exclusivo em um arquivo Bicep.

  1. Inicie o VS Code e crie dois novos arquivos, main.bicep e bicepconfig.json, certificando-se de que eles estão na mesma pasta.

  2. Habilite alguns recursos de visualização configurando bicepconfig.json:

    {
        "experimentalFeaturesEnabled": {
            "extensibility": true
        }
    }
    
  3. Em main.bicep, adicione o seguinte código Bicep, que usa a existing palavra-chave para fazer referência ao grupo por seu nome TestGroup-20240816 exclusivo e o aplicativo por TestApp-20240816. Esta etapa pressupõe que o grupo e o aplicativo com os nomes exclusivos especificados já existem.

    extension microsoftGraph
    
    @description('Group to use')
    param groupName string = 'TestGroup-20240816'
    
    @description('App to use')
    param appName string = 'TestApp-20240816'
    
    resource group 'Microsoft.Graph/groups@v1.0' existing = {
        uniqueName: groupName
    }
    
    resource application 'Microsoft.Graph/applications@v1.0' existing = {
        uniqueName: appName
    }
    
    output groupId string = group.id
    output applicationId string = application.id
    
  4. Implante o arquivo Bicep usando a CLI do Azure ou o Azure PowerShell.

    ## Create a resource group
    az group create --name exampleRG --location eastus
    
    ## Deploy the Bicep file
    az deployment group create --resource-group exampleRG --template-file main.bicep
    


  DeploymentName          : main
  ResourceGroupName       : exampleRG
  ProvisioningState       : Succeeded
  Timestamp               : 18/04/2024 16:16:42
  Mode                    : Incremental
  TemplateLink            :
  Parameters              :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          groupName        String                     "TestGroup-20240816"
                          appName          String                     "TestApp-20240816"


  Outputs                 :
                          Name             Type                       Value
                          ===============  =========================  ==========
                          group-id         String                     "91ded94c-0144-4422-b33c-c4171447a738"
                          app-id           String                     "cd0bc6bc-fd22-4eb6-9bd3-2f8c5efd6dc9"

Use a ID do grupo na próxima seção.

Atualizar ou criar um recurso do Microsoft Graph usando configurações de recursos existentes

Você também pode querer implantar um recurso do Microsoft Graph e configurar algumas de suas propriedades usando as configurações de um recurso existente. Por exemplo, você deseja implantar um grupo de segurança #1 (nova implantação ou reimplantação) com um grupo existente #2 e uma entidade de serviço #2 como seus membros. Nesse caso, você usa a existing palavra-chave para fazer referência ao grupo #2 e à entidade de serviço #2 e obter suas IDs, que você adiciona à coleção de membros do grupo #1.

Para fazer referência ao grupo #2 existente em um arquivo Bicep, ele deve ter sua propriedade uniqueName definida. Para fazer referência à entidade de serviço #2 existente se você não souber seu appId, seu aplicativo pai deve ter sua propriedade uniqueName definida.

Nesta secção, pode:

  • Atualize a propriedade uniqueName para um grupo e aplicativo existente usando a CLI do Azure ou o Azure PowerShell.
  • Use a existing palavra-chave em um arquivo Bicep para obter a ID de um grupo existente e entidade de serviço.
  • No arquivo Bicep, defina as configurações para implantar um grupo de segurança com um grupo e uma entidade de serviço existentes como seus membros e a entidade de serviço como seu proprietário.
  • Implante o arquivo Bicep.

Etapa 1: Definir a propriedade uniqueName para o grupo e o aplicativo

A solicitação a seguir define uniqueName para um grupo e aplicativo existentes como TestGroup-20240817 e TestApp-20240817, respectivamente. Suponha que o grupo e o aplicativo sejam o grupo #2 e o aplicativo pai da entidade de serviço #2 do cenário anterior.

# Sign in to Azure
az login

## Create a resource group
az group create --name exampleRG --location eastus

## Update the uniqueName property of the group and application
## Note: Replace cec00de2-08b9-4081-aaf5-55d78ac9b4c4 and 25ae6414-05a1-4cce-9899-ad11d9eedde2 with IDs for your group and application.
az rest --method patch --url 'https://graph.microsoft.com/v1.0/groups/cec00de2-08b9-4081-aaf5-55d78ac9b4c4' --body '{\"uniqueName\": \"TestGroup-20240817\"}' --headers "content-type=application/json"
az rest --method patch --url 'https://graph.microsoft.com/v1.0/applications/25ae6414-05a1-4cce-9899-ad11d9eedde2' --body '{\"uniqueName\": \"TestApp-20240817\"}' --headers "content-type=application/json"

Etapa 2: Adicionar grupo existente e entidade de serviço a membros e proprietários de outro grupo

Agora você pode usar a existing palavra-chave para fazer referência ao grupo #2 existente e à entidade de serviço #2, obter suas IDs e adicioná-las às coleções de proprietários e membros de outro grupo.

  1. Inicie o VS Code e crie dois novos arquivos, main.bicep e bicepconfig.json, certificando-se de que eles estão na mesma pasta.

  2. Habilite alguns recursos de visualização configurando bicepconfig.json:

    {
      "experimentalFeaturesEnabled": {
          "extensibility": true
      }
    }
    
  3. Em main.bicep, adicione o seguinte código Bicep.

    extension microsoftGraph
    
    // TEMPLATE OVERVIEW: Uses existing group and existing SP and sets them
    // as members of another group
    
    // existing group #2 to be added as a member
    resource groupMember 'Microsoft.Graph/groups@v1.0' existing = {
      uniqueName: 'TestGroup-20240817'
    }
    
    // existing SP #2 to be added as a member
    resource application 'Microsoft.Graph/applications@v1.0' existing = {
      uniqueName: 'TestApp-20240817'
    }
    resource servicePrincipalMember 'Microsoft.Graph/servicePrincipals@v1.0' existing = {
      appId: application.appId
    }
    
    // Add preceding service principal and group as members of another group
    // Add preceding service principal as owner of the group. 
    // If Group-1 uniqueName doesn't exist, this is a new deployment.
    // If Group-1 uniqueName exists, this is a redeployment/update. For redeployments, existing members and owners are retained.
    resource group 'Microsoft.Graph/groups@v1.0' = {
      displayName: 'Group-1'
      mailEnabled: false
      mailNickname: 'Group-1'
      securityEnabled: true
      uniqueName: 'Group-1'
      members: [groupMember.id, servicePrincipalMember.id]
      owners: [servicePrincipalMember.id]
    }
    
  4. Implante o arquivo Bicep usando a CLI do Azure ou o Azure PowerShell.

    ## Create a resource group
    az group create --name exampleRG --location eastus
    
    ## Deploy the Bicep file
    az deployment group create --resource-group exampleRG --template-file main.bicep
    

Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.