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
delegatedManagedIdentityResourceId
sprá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'))]"
}
}