Sdílet prostřednictvím


Co je delegovaná VlastnostManagedIdentityResourceId?

V Azure se delegatedManagedIdentityResourceId tato vlastnost používá k správnému přiřazování rolí spravovaným identitám napříč různými tenanty. Toto přiřazení je užitečné při práci se spravovanými aplikacemi publikovanými na Azure Marketplace, kde vydavatel a zákazník existují v samostatných tenantech.

Proč to potřebujeme?

Když zákazník nasadí spravovanou aplikaci z marketplace, zodpovídá vydavatel za správu prostředků v rámci spravované skupiny prostředků (MRG). Všechna přiřazení rolí provedená jako součást šablony nasazení však probíhají v tenantovi vydavatele. Tato přiřazení vytvoří výzvu při vytvoření spravované identity v tenantovi zákazníka, protože přiřazení role selže, pokud se pokusí najít identitu v nesprávném tenantovi.

Tato delegatedManagedIdentityResourceId vlastnost tento problém řeší explicitním zadáním toho, kde spravovaná identita existuje, a zajišťuje, aby proces přiřazení role správně najděte a přiřaďte oprávnění.

Jak to funguje

Vytvoření spravované identity

Když nasadíte spravovanou aplikaci, vytvoří se spravovaná identita v tenantovi zákazníka.

Přiřazení role

Nasazení přiřazení role probíhá v rámci tenanta vydavatele, přiřazení rolí přirozeně hledají identity v rámci tohoto tenanta.

Použití delegatedManagedIdentityResourceId

Zadáním správného ID prostředku:

  • Pro identity přiřazené systémem: Použijte ID prostředku prostředku, který obsahuje identitu. Například aplikace funkcí nebo aplikace logiky.
  • Pro identity přiřazené uživatelem: Použijte ID prostředku samotné identity.

Jak použít delegatedManagedIdentityResourceId

Pokud chcete správně nastavit přiřazení role, přidejte delegatedManagedIdentityResourceId vlastnost do části přiřazení role šablony Azure Resource Manageru (šablona ARM). Příklad:

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

Běžné chyby a řešení potíží

Selhání přiřazení role kvůli chybějící identitě

  • Ujistěte se, že je zadáno delegatedManagedIdentityResourceIdsprávné ID prostředku .
  • Ověřte, že spravovaná identita existuje v tenantovi zákazníka.

Odepření přiřazení brání přístupu

  • Přiřazení zamítnutí zabraňuje zákazníkům přístup k mrG.
  • Ujistěte se, že identita vydavatele, která spravuje mrG, správně odkazuje v tenantovi zákazníka.

Chybně nakonfigurovaný kontext nasazení

  • Nasazení AMA s publikovanými spravovanými aplikacemi a povoleným přístupem vydavatele dochází v tenantovi vydavatele.
  • Ujistěte se delegatedManagedIdentityResourceId , že je správně nastavená tak, aby odkazovat na identitu tenanta zákazníka.

Žádost PUT přiřazení role podporovaná pouze v rámci napříč tenanty

Požadavek PUT přiřazení role s dotazem delegatedManagedIdentityResourceId se podporuje pouze ve scénářích napříč tenanty a nepodporuje nasazení v rámci stejného tenanta. Pokud ho chcete použít ve stejném tenantovi během testování, přidejte parametr, který tuto vlastnost zahrne takto:

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

Další kroky