Freigeben über


Verweisen auf vorhandene Microsoft Graph-Ressourcen in Bicep-Vorlagen

Mit Bicep können Sie vorhandene Ressourcen mithilfe des vorhandenen Schlüsselworts lesen. Für Microsoft Graph-Ressourcen müssen die Ressourcen zuerst durch eine vom Client bereitgestellte Schlüsseleigenschaft eindeutig identifiziert werden.

In diesem Artikel erfahren Sie, wie Sie das existing Schlüsselwort und den vom Client bereitgestellten Schlüssel verwenden, um die Eigenschaften vorhandener Microsoft Graph-Ressourcen zu lesen.

Wichtig

Microsoft Graph Bicep befindet sich derzeit in DER VORSCHAU. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Voraussetzungen

Lesen von Eigenschaften einer vorhandenen Microsoft Graph-Ressource

Die folgenden Schritte zeigen, wie Sie auf eine vorhandene Gruppe und Anwendung anhand ihres eindeutigen Namens in einer Bicep-Datei verweisen.

  1. Starten Sie VS Code, und erstellen Sie zwei neue Dateien, main.bicep und bicepconfig.json, um sicherzustellen, dass sie sich im selben Ordner befinden.

  2. Aktivieren Sie einige Vorschaufeatures, indem Sie bicepconfig.json konfigurieren:

    {
        "experimentalFeaturesEnabled": {
            "extensibility": true
        }
    }
    
  3. Fügen Sie in "main.bicep" den folgenden Bicep-Code hinzu, der das existing Schlüsselwort verwendet, um auf die Gruppe anhand ihres eindeutigen Namens TestGroup-20240816 und der Anwendung zu verweisen.TestApp-20240816 In diesem Schritt wird davon ausgegangen, dass die Gruppe und Anwendung mit den angegebenen eindeutigen Namen bereits vorhanden ist.

    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. Stellen Sie die Bicep-Datei mit Azure CLI oder Azure PowerShell bereit.

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

Sie verwenden die ID der Gruppe im nächsten Abschnitt.

Aktualisieren oder Erstellen einer Microsoft Graph-Ressource mithilfe von Einstellungen aus vorhandenen Ressourcen

Möglicherweise möchten Sie auch eine Microsoft Graph-Ressource bereitstellen und einige seiner Eigenschaften mithilfe der Einstellungen aus einer vorhandenen Ressource konfigurieren. Sie möchten z. B. eine Sicherheitsgruppe Nr. 1 (neue Bereitstellung oder erneute Bereitstellung) mit einer vorhandenen Gruppe #2 und dem Dienstprinzipal #2 als Mitglieder bereitstellen. In diesem Fall verwenden Sie das existing Schlüsselwort, um auf die Gruppe #2 und den Dienstprinzipal #2 zu verweisen und deren IDs abzurufen, die Sie dann der Mitgliederauflistung der Gruppe #1 hinzufügen.

Um auf die vorhandene Gruppe "#2" in einer Bicep-Datei zu verweisen, muss sie über den eindeutigen Eigenschaftssatz "uniqueName " verfügen. Um auf den vorhandenen Dienstprinzipal #2 zu verweisen, wenn Sie die appId nicht kennen, muss die übergeordnete Anwendung über den eindeutigen Eigenschaftssatz "uniqueName" verfügen.

In diesem Abschnitt führen Sie folgende Schritte aus:

  • Aktualisieren Sie die uniqueName-Eigenschaft für eine vorhandene Gruppe und Anwendung mithilfe von Azure CLI oder Azure PowerShell.
  • Verwenden Sie das existing Schlüsselwort in einer Bicep-Datei, um die ID einer vorhandenen Gruppe und eines vorhandenen Dienstprinzipals abzurufen.
  • Konfigurieren Sie in der Datei "Bicep" die Einstellungen, um eine Sicherheitsgruppe mit einer vorhandenen Gruppe und einem vorhandenen Dienstprinzipal als Mitglieder und dem Dienstprinzipal als Besitzer bereitzustellen.
  • Stellen Sie die Bicep-Datei bereit.

Schritt 1: Festlegen der uniqueName-Eigenschaft für die Gruppe und Anwendung

Die folgende Anforderung legt den uniqueName für eine vorhandene Gruppe bzw. Anwendung TestGroup-20240817 auf bzw TestApp-20240817. diese fest. Gehen Sie davon aus, dass die Gruppe und Anwendung "Gruppe 2" und die übergeordnete App des Dienstprinzipals "#2" aus dem vorherigen Szenario sind.

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

Schritt 2: Hinzufügen eines vorhandenen Gruppen- und Dienstprinzipals zu Mitgliedern und Besitzern einer anderen Gruppe

Sie können nun das existing Schlüsselwort verwenden, um auf vorhandene Gruppe #2 und Dienstprinzipal #2 zu verweisen, ihre IDs abzurufen und sie den Besitzer- und Mitgliedersammlungen einer anderen Gruppe hinzuzufügen.

  1. Starten Sie VS Code, und erstellen Sie zwei neue Dateien, main.bicep und bicepconfig.json, um sicherzustellen, dass sie sich im selben Ordner befinden.

  2. Aktivieren Sie einige Vorschaufeatures, indem Sie bicepconfig.json konfigurieren:

    {
      "experimentalFeaturesEnabled": {
          "extensibility": true
      }
    }
    
  3. Fügen Sie in "main.bicep" den folgenden Bicep-Code hinzu.

    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. Stellen Sie die Bicep-Datei mit Azure CLI oder Azure PowerShell bereit.

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

Nach Abschluss der Bereitstellung sollte eine Meldung mit dem Hinweis angezeigt werden, dass die Bereitstellung erfolgreich war.