Was ist die Eigenschaft „delegatedManagedIdentityResourceId“?

In Azure wird die Eigenschaft delegatedManagedIdentityResourceId verwendet, um verwalteten Identitäten über verschiedene Mandanten hinweg Rollen ordnungsgemäß zuzuweisen. Diese Zuweisung ist besonders hilfreich beim Umgang mit verwalteten Anwendungen, die in Azure Marketplace veröffentlicht werden, wo Herausgeber*innen und Kund*innen in separaten Mandanten vorhanden sind.

Warum ist das nötig?

Wenn Kund*innen eine verwaltete Anwendung vom Marketplace aus bereitstellen, sind die Herausgeber*innen für die Verwaltung von Ressourcen innerhalb der verwalteten Ressourcengruppe (MRG) verantwortlich. Alle Rollenzuweisungen, die als Teil der Bereitstellungsvorlage ausgeführt werden, erfolgen jedoch im Mandanten der Herausgeber*innen. Diese Zuweisungen stellen eine Herausforderung dar, wenn die verwaltete Identität im Mandanten der Kund*innen erstellt wird, da die Rollenzuweisung fehlschlägt, wenn versucht wird, die Identität im falschen Mandanten zu finden.

Die Eigenschaft delegatedManagedIdentityResourceId behebt dieses Problem, indem explizit angegeben wird, wo die verwaltete Identität vorhanden ist, um sicherzustellen, dass der Rollenzuweisungsprozess Berechtigungen richtig finden und zuweisen kann.

Funktionsweise

Erstellung der verwalteten Identität

Wenn Sie eine verwaltete Anwendung bereitstellen, wird die verwaltete Identität im Mandanten der Kund*innen erstellt.

Rollenzuweisung

Die Bereitstellung von Rollenzuweisungen erfolgt unter dem Mandanten der Herausgeber*innen, Rollenzuweisungen suchen natürlich nach Identitäten innerhalb dieses Mandanten.

Verwendung der Eigenschaft „delegatedManagedIdentityResourceId“

Durch Angabe der richtigen Ressourcen-ID:

  • Für systemseitig zugewiesene Identitäten: Verwenden Sie die Ressourcen-ID der Ressource, die die Identität enthält. Beispielsweise eine Funktions-App oder Logik-App.
  • Für benutzerseitig zugewiesene Identitäten: Verwenden Sie die Ressourcen-ID der Identität selbst.

Anwendung der Eigenschaft „delegatedManagedIdentityResourceId“

Um die Rollenzuweisung richtig einzurichten, fügen Sie die Eigenschaft delegatedManagedIdentityResourceId im Abschnitt „Rollenzuweisung“ Ihrer Azure Resource Manager-Vorlage (ARM-Vorlage) hinzu. Beispiel:

{
  "type": "Microsoft.Authorization/roleAssignments",
  "apiVersion": "2022-04-01",
  "properties": {
    "roleDefinitionId": "<role-definition-id>",
    "principalId": "<principal-id>",
    "delegatedManagedIdentityResourceId": "<resource-id-of-identity>"
  }
}

Häufige Fehler und Problembehandlung

Fehler bei der Rollenzuweisung aufgrund fehlender Identität

  • Stellen Sie sicher, dass die richtige Ressourcen-ID in delegatedManagedIdentityResourceId angegeben ist.
  • Bestätigen Sie, dass die verwaltete Identität im Mandanten der Kund*innen vorhanden ist.

Ablehnungszuweisung verhindert den Zugriff

  • Die Ablehnungszuweisung verhindert den Zugriff von Kund*innen auf die MRG.
  • Stellen Sie sicher, dass im Mandanten der Kund*innen korrekt auf die Identität der Herausgeber*innen, die die MRG verwalten, verwiesen wird.

Falsch konfigurierter Bereitstellungskontext

  • AMA-Bereitstellungen mit aktiviertem Zugriff für veröffentlichte verwaltete Apps und Herausgeber*innen erfolgen im Mandanten der Herausgeber*innen.
  • Stellen Sie sicher, dass delegatedManagedIdentityResourceId ordnungsgemäß eingestellt ist und auf die Mandantenidentität der Kund*innen verweist.

Unterstützung für PUT-Rollenzuweisungsanforderung nur in mandantenübergreifenden Szenarien

Eine PUT-Rollenzuweisungsanforderung mit delegatedManagedIdentityResourceId wird nur in mandantenübergreifenden Szenarien unterstützt und unterstützt keine Bereitstellungen innerhalb desselben Mandanten. Wenn Sie sie während des Tests innerhalb desselben Mandanten verwenden möchten, fügen Sie einen Parameter hinzu, um die Eigenschaft wie folgt einzuschließen:

{
  "comments": "Using cross-tenant delegatedManagedIdentityResourceId property",
  "type": "Microsoft.Authorization/roleAssignments",
  "apiVersion": "2021-04-01-preview",
  "name": "[guid(resourceGroup().id, variables('<identityName>'), variables('<roleDefinitionId>'))]",
  "dependsOn": [
    "[variables('<identityName>')]"
  ],
  "properties": {
    "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions',variables('<roleDefinitionId>'))]",
    "principalId": "[reference(variables('<identityName>')).principalId]",
    "principalType": "<PrincipalType>",
    "scope": "[resourceGroup().id]",
    "delegatedManagedIdentityResourceId": "[if(parameters('crossTenant'), resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('<identityName>')), json('null'))]"
  }
}

Nächste Schritte