Partager via


Qu’est-ce que la propriété delegatedManagedIdentityResourceId ?

Dans Azure, la propriété delegatedManagedIdentityResourceId est utilisée pour attribuer correctement des rôles à des identités managées entre différents locataires. Cette attribution est particulièrement utile lors du traitement des applications managées publiées dans la Place de marché Azure, où l’éditeur et le client existent dans des locataires distincts.

Pourquoi en avons-nous besoin ?

Lorsqu’un client déploie une application managée à partir de la Place de marché, l’éditeur est responsable de la gestion des ressources au sein du groupe de ressources managé (MRG). Toutefois, toutes les attributions de rôles effectuées dans le cadre du modèle de déploiement se produisent dans le locataire de l’éditeur. Ces affectations créent un problème lorsque l’identité managée est créée dans le locataire du client, car l’attribution de rôle échoue si elle tente de localiser l’identité dans le locataire incorrect.

La propriété delegatedManagedIdentityResourceId résout cela en spécifiant explicitement l’emplacement de l’identité managée, ce qui garantit que le processus d’attribution de rôle peut localiser et attribuer correctement des autorisations.

Fonctionnement

Création d’identité managée

Lorsque vous déployez une application managée, l’identité managée est créée dans le locataire du client.

Attribution de rôle

Le déploiement de l’attribution de rôle se produit sous le locataire de l’éditeur, car les attributions de rôles recherchent naturellement des identités au sein de ce locataire.

Utilisation de delegatedManagedIdentityResourceId

En spécifiant l’ID de ressource approprié :

  • Pour les identités attribuées par le système : utilisez l’ID de ressource de la ressource qui contient l’identité. Par exemple, une application de fonction ou une application logique.
  • Pour les identités attribuées par l’utilisateur : utilisez l’ID de ressource de l’identité elle-même.

Comment appliquer delegatedManagedIdentityResourceId

Pour configurer correctement l’attribution de rôle, ajoutez la propriété delegatedManagedIdentityResourceId dans la section d’attribution de rôle de votre modèle Azure Resource Manager (modèle ARM). Exemple :

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

Erreurs fréquentes et résolution des problèmes

Échec de l’attribution de rôle en raison d’une identité manquante

  • Vérifiez que l’ID de ressource correct est fourni dans delegatedManagedIdentityResourceId.
  • Vérifiez que l’identité managée existe dans le locataire du client.

Refuser l’attribution empêche l’accès

  • L’attribution de refus empêche les clients d’accéder au MRG.
  • Vérifiez que l’identité de l’éditeur qui gère le MRG est correctement référencée dans le locataire du client.

Contexte de déploiement mal configuré

  • Les déploiements AMA avec des applications managées publiées et l’accès aux éditeurs activés se produisent dans le locataire de l’éditeur.
  • Assurez-vous que delegatedManagedIdentityResourceId est correctement défini pour référencer l’identité du locataire du client.

Demande PUT d’attribution de rôle uniquement prise en charge dans un multilocataire

Une demande PUT d’attribution de rôle avec delegatedManagedIdentityResourceId est seulement prise en charge dans les scénarios multilocataire et ne prend pas en charge les déploiements au sein du même locataire. Pour l’utiliser dans le même locataire pendant le test, ajoutez un paramètre pour inclure la propriété comme suit :

{
  "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'))]"
  }
}

Étapes suivantes