Distribuera en princip som kan åtgärdas i en delegerad prenumeration

Med Azure Lighthouse kan tjänstleverantörer skapa och redigera principdefinitioner i en delegerad prenumeration. Om du vill distribuera principer som använder en reparationsaktivitet (dvs. principer med effekten deployIfNotExists eller ändra ) måste du skapa en hanterad identitet i kundklientorganisationen. Den här hanterade identiteten kan användas av Azure Policy för att distribuera mallen i principen. Den här artikeln beskriver de steg som krävs för att aktivera det här scenariot, både när du registrerar kunden för Azure Lighthouse och när du distribuerar själva principen.

Dricks

Även om vi refererar till tjänsteleverantörer och kunder i det här avsnittet kan företag som hanterar flera klienter använda samma processer.

Skapa en användare som kan tilldela roller till en hanterad identitet i kundklientorganisationen

När du registrerar en kund i Azure Lighthouse definierar du auktoriseringar som ger åtkomst till delegerade resurser i kundklientorganisationen. Varje auktorisering anger ett principalId som motsvarar en Microsoft Entra-användare, grupp eller tjänstens huvudnamn i den hanterande klientorganisationen och ett roleDefinitionId som motsvarar den inbyggda Azure-roll som ska beviljas.

Om du vill tillåta att ett principalId tilldelar roller till en hanterad identitet i kundklientorganisationen måste du ange dess roleDefinitionId till Administratör för användaråtkomst. Även om den här rollen vanligtvis inte stöds för Azure Lighthouse kan den användas i det här specifika scenariot. Genom att tilldela den här rollen till det här principalId :et kan den tilldela specifika inbyggda roller till hanterade identiteter. De här rollerna definieras i egenskapen delegatedRoleDefinitionIds och kan innehålla valfri inbyggd Azure-roll som stöds förutom administratör för användaråtkomst eller ägare.

När kunden har registrerats kan principalId som skapats i den här auktoriseringen tilldela dessa inbyggda roller till hanterade identiteter i kundklientorganisationen. Den har inga andra behörigheter som normalt är associerade med rollen Administratör för användaråtkomst.

Kommentar

Rolltilldelningar mellan klienter måste för närvarande utföras via API:er, inte i Azure-portalen.

Exemplet nedan visar ett principalId som ska ha rollen Administratör för användaråtkomst. Den här användaren kommer att kunna tilldela två inbyggda roller till hanterade identiteter i kundklientorganisationen: Deltagare och Log Analytics-deltagare.

{
    "principalId": "3kl47fff-5655-4779-b726-2cf02b05c7c4",
    "principalIdDisplayName": "Policy Automation Account",
    "roleDefinitionId": "18d7d88d-d35e-4fb5-a5c3-7773c20a72d9",
    "delegatedRoleDefinitionIds": [
         "b24988ac-6180-42a0-ab88-20f7382dd24c",
         "92aaf0da-9dab-42b6-94a3-d43ce8d16293"
    ]
}

Distribuera principer som kan åtgärdas

När du har skapat användaren med nödvändiga behörigheter enligt beskrivningen ovan kan användaren distribuera principer som använder reparationsuppgifter i delegerade kundprenumerationer.

Anta till exempel att du ville aktivera diagnostik på Azure Key Vault-resurser i kundklientorganisationen, som du ser i det här exemplet. En användare i den hanterande klienten med rätt behörigheter (enligt beskrivningen ovan) distribuerar en Azure Resource Manager-mall för att aktivera det här scenariot.

Du måste för närvarande skapa den principtilldelning som ska användas med en delegerad prenumeration via API:er, inte i Azure-portalen. När du gör det måste apiVersion anges till 2019-04-01-preview eller senare för att inkludera den nya egenskapen delegatedManagedIdentityResourceId. Med den här egenskapen kan du inkludera en hanterad identitet som finns i kundklientorganisationen (i en prenumeration eller resursgrupp som har registrerats i Azure Lighthouse).

I följande exempel visas en rolltilldelning med ett delegatedManagedIdentityResourceId.

"type": "Microsoft.Authorization/roleAssignments",
            "apiVersion": "2019-04-01-preview",
            "name": "[parameters('rbacGuid')]",
            "dependsOn": [
                "[variables('policyAssignment')]"
            ],
            "properties": {
                "roleDefinitionId": "[concat(subscription().id, '/providers/Microsoft.Authorization/roleDefinitions/', variables('rbacContributor'))]",
                "principalType": "ServicePrincipal",
                "delegatedManagedIdentityResourceId": "[concat(subscription().id, '/providers/Microsoft.Authorization/policyAssignments/', variables('policyAssignment'))]",
                "principalId": "[toLower(reference(concat('/providers/Microsoft.Authorization/policyAssignments/', variables('policyAssignment')), '2018-05-01', 'Full' ).identity.principalId)]"
            }

Dricks

Det finns ett liknande exempel som visar hur du distribuerar en princip som lägger till eller tar bort en tagg (med ändringseffekten) till en delegerad prenumeration.

Nästa steg