Partager via


Référencer les ressources Microsoft Graph existantes dans les modèles Bicep

Bicep vous permet de lire les ressources existantes à l’aide du mot clé existant . Pour les ressources Microsoft Graph, les ressources doivent d’abord être identifiées de manière unique par une propriété de clé fournie par le client.

Dans cet article, vous allez apprendre à utiliser le existing mot clé et la clé fournie par le client pour lire les propriétés des ressources Microsoft Graph existantes.

Important

Microsoft Graph Bicep est actuellement en préversion. Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.

Prérequis

  • J’ai un abonnement Azure. Si vous n’en avez pas, vous pouvez créer un compte gratuit.
  • Disposez des autorisations ou des rôles les moins privilégiés pour lire ou mettre à jour la ressource existante ou être le propriétaire de la ressource. Consultez les rôles les moins privilégiés par tâche et les autorisations utilisateur par défaut pour voir quels rôles vous devez être attribués.
  • Installez les outils Bicep pour la création et le déploiement. Ce guide de démarrage rapide utilise VS Code avec l’extension Bicep pour la création et Azure CLI pour le déploiement. Des exemples sont également fournis pour Azure PowerShell.
  • Vous pouvez déployer les fichiers Bicep de manière interactive ou via le déploiement sans contact (application uniquement).

Lire les propriétés d’une ressource Microsoft Graph existante

Les étapes suivantes montrent comment référencer un groupe et une application existants par leur nom unique dans un fichier Bicep.

  1. Lancez VS Code et créez deux nouveaux fichiers, main.bicep et bicepconfig.json, en vous assurant qu’ils se trouvent dans le même dossier.

  2. Activez certaines fonctionnalités en préversion en configurant bicepconfig.json :

    {
        "experimentalFeaturesEnabled": {
            "extensibility": true
        }
    }
    
  3. Dans main.bicep, ajoutez le code Bicep suivant, qui utilise le mot clé pour référencer le existing groupe par son nom TestGroup-20240816 unique et l’application par TestApp-20240816. Cette étape suppose que le groupe et l’application avec les noms uniques spécifiés existent déjà.

    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. Déployez le fichier Bicep à l’aide d’Azure CLI ou d’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"

Vous utilisez l’ID du groupe dans la section suivante.

Mettre à jour ou créer une ressource Microsoft Graph à l’aide de paramètres à partir de ressources existantes

Vous pouvez également déployer une ressource Microsoft Graph et configurer certaines de ses propriétés à l’aide des paramètres d’une ressource existante. Par exemple, vous souhaitez déployer un groupe de sécurité #1 (nouveau déploiement ou redéploiement) avec un groupe #2 existant et un principal de service #2 en tant que membres. Dans ce cas, vous utilisez le mot clé pour référencer le existing groupe #2 et le principal de service #2 et obtenir leurs ID, que vous ajoutez ensuite à la collection de membres du groupe #1.

Pour référencer le groupe existant #2 dans un fichier Bicep, sa propriété uniqueName doit être définie. Pour référencer le principal de service existant #2 si vous ne connaissez pas son appId, son application parente doit avoir son jeu de propriétés uniqueName .

Dans cette section, vous allez :

  • Mettez à jour la propriété uniqueName pour un groupe et une application existants à l’aide d’Azure CLI ou d’Azure PowerShell.
  • Utilisez le existing mot clé dans un fichier Bicep pour obtenir l’ID d’un groupe et d’un principal de service existant.
  • Dans le fichier Bicep, configurez les paramètres pour déployer un groupe de sécurité avec un groupe et un principal de service existant en tant que membres, et le principal de service en tant que propriétaire.
  • Déployez le fichier Bicep.

Étape 1 : Définir la propriété uniqueName pour le groupe et l’application

La requête suivante définit le nom unique d’un groupe et d’une application TestGroup-20240817 existants sur et TestApp-20240817, respectivement. Supposons que le groupe et l’application sont le groupe #2 et l’application parente du principal de service #2 à partir du scénario précédent.

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

Étape 2 : Ajouter un groupe et un principal de service existants aux membres et propriétaires d’un autre groupe

Vous pouvez maintenant utiliser le existing mot clé pour référencer le groupe existant #2 et le principal de service #2, obtenir leurs ID et les ajouter aux collections propriétaires et membres d’un autre groupe.

  1. Lancez VS Code et créez deux nouveaux fichiers, main.bicep et bicepconfig.json, en vous assurant qu’ils se trouvent dans le même dossier.

  2. Activez certaines fonctionnalités en préversion en configurant bicepconfig.json :

    {
      "experimentalFeaturesEnabled": {
          "extensibility": true
      }
    }
    
  3. Dans main.bicep, ajoutez le code Bicep suivant.

    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. Déployez le fichier Bicep à l’aide d’Azure CLI ou d’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
    

Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.