Řešení potíží s limity Azure RBAC

Tento článek popisuje některá běžná řešení, když překročíte limity řízení přístupu na základě role v Azure (Azure RBAC).

Požadavky

Poznámka:

Dotazy použité v tomto článku vrací pouze přiřazení rolí nebo vlastní role, ke kterým máte oprávnění ke čtení. Pokud například máte oprávnění ke čtení přiřazení rolí pouze v oboru skupiny prostředků, přiřazení rolí v oboru předplatného se nevrátí.

Příznak – Není možné vytvořit žádná další přiřazení rolí

Při pokusu o přiřazení role se zobrazí následující chybová zpráva:

No more role assignments can be created (code: RoleAssignmentLimitExceeded)

Příčina

podpora Azure až 4 000 přiřazení rolí na předplatné. Tento limit zahrnuje přiřazení rolí v oboru předplatného, skupiny prostředků a prostředku, ale ne v oboru skupiny pro správu. Měli byste se pokusit snížit počet přiřazení rolí v předplatném.

Poznámka:

Limit přiřazení rolí 4000 na předplatné je pevný a nejde ho zvýšit.

Pokud chcete zjistit počet přiřazení rolí, můžete si prohlédnout graf na stránce Řízení přístupu (IAM) na webu Azure Portal. Můžete také použít následující příkazy Azure PowerShellu:

$scope = "/subscriptions/<subscriptionId>"
$ras = Get-AzRoleAssignment -Scope $scope | Where-Object {$_.scope.StartsWith($scope)}
$ras.Count

Řešení 1 – Nahrazení přiřazení rolí založených na objektech zabezpečení pomocí přiřazení rolí založených na skupinách

Pokud chcete snížit počet přiřazení rolí v předplatném, přidejte instanční objekty (uživatele, instanční objekty a spravované identity) do skupin a přiřaďte k nim role. Tímto postupem určíte, kde lze pro objekty zabezpečení nahradit více přiřazení rolí jediným přiřazením role pro skupinu.

  1. Přihlaste se k webu Azure Portal a otevřete Azure Resource Graph Explorer.

  2. Vyberte Obor a nastavte obor dotazu.

    Obor obvykle nastavíte na Adresář , abyste se mohli dotazovat na celého tenanta, ale rozsah můžete zúžit na konkrétní předplatná.

    Snímek obrazovky s Průzkumníkem Azure Resource Graphu, který zobrazuje výběr oboru

  3. Vyberte Nastavit obor autorizace a nastavte obor autorizace na Hodnotu At( Nahoře a níže ) a dotazujte se na všechny prostředky v zadaném oboru.

    Snímek obrazovky Azure Resource Graph Exploreru s podoknem Nastavit obor autorizace

  4. Spuštěním následujícího dotazu získejte přiřazení rolí se stejnou rolí a ve stejném oboru, ale pro různé objekty zabezpečení.

    Tento dotaz kontroluje aktivní přiřazení rolí a v Microsoft Entra Privileged Identity Management se nepovažuje za oprávněná přiřazení rolí. Pokud chcete zobrazit seznam oprávněných přiřazení rolí, můžete použít Centrum pro správu Microsoft Entra, PowerShell nebo rozhraní REST API. Další informace najdete v tématu Get-AzRoleEligibilityScheduleInstance nebo instance plánu způsobilosti rolí – seznam pro rozsah.

    Pokud používáte podmínky přiřazení role nebo delegujete správu přiřazení rolí s podmínkami, měli byste použít dotaz Podmínky. V opačném případě použijte výchozí dotaz.

    authorizationresources
    | where type =~ "microsoft.authorization/roleassignments"
    | where id startswith "/subscriptions"
    | extend RoleId = tolower(tostring(properties.roleDefinitionId))
    | join kind = leftouter (
      authorizationresources
      | where type =~ "microsoft.authorization/roledefinitions"
      | extend RoleDefinitionName = tostring(properties.roleName)
      | extend RoleId = tolower(id)
      | project RoleDefinitionName, RoleId
    ) on $left.RoleId == $right.RoleId
    | extend principalId = tostring(properties.principalId)
    | extend principal_to_ra = pack(principalId, id)
    | summarize count_ = count(), AllPrincipals = make_set(principal_to_ra) by RoleDefinitionId = RoleId, Scope = tolower(properties.scope), RoleDefinitionName
    | where count_ > 1
    | order by count_ desc
    

    Následující příklad ukazuje příklad výsledků. Sloupec count_ je počet objektů zabezpečení přiřazených stejné roli a ve stejném oboru. Počet se seřadí sestupně.

    Snímek obrazovky Azure Resource Graph Exploreru, který zobrazuje přiřazení rolí se stejnou rolí a ve stejném oboru, ale pro různé objekty zabezpečení

  5. Určete řádek, ve kterém chcete nahradit více přiřazení rolí jedním přiřazením role pro skupinu.

  6. V řádku vyberte Zobrazit podrobnosti a otevřete podokno Podrobnosti .

    Snímek obrazovky s podoknem Podrobností, které zobrazuje přiřazení rolí se stejnou rolí a se stejným oborem, ale pro různé objekty zabezpečení

    Sloupec Popis
    RoleDefinitionId ID aktuálně přiřazené role.
    Obor Rozsah přiřazení role, což bude předplatné, skupina prostředků nebo prostředek.
    RoleDefinitionName Název aktuálně přiřazené role.
    COUNT Počet objektů zabezpečení přiřazených stejné roli a ve stejném oboru
    AllPrincipals SeznamIDch
  7. K získání role a oboru použijte RoleDefinitionId, RoleDefinitionName a Scope.

  8. Pomocí funkcí AllPrincipals získáte seznam ID objektu zabezpečení se stejným přiřazením role.

  9. Vytvořte skupinu Microsoft Entra. Další informace naleznete v tématu Správa skupin a členství ve skupinách Microsoft Entra.

  10. Přidejte objekty zabezpečení ze služby AllPrincipals do skupiny.

    Informace o hromadném přidávání objektů zabezpečení naleznete v tématu Hromadné přidání členů skupiny v Microsoft Entra ID.

  11. Přiřaďte roli skupině, kterou jste vytvořili ve stejném oboru. Další informace viz Přiřazení rolí Azure pomocí webu Azure Portal.

    Teď můžete najít a odebrat přiřazení rolí na základě objektu zabezpečení.

  12. Získejte hlavní názvy z ID objektu zabezpečení.

  13. Otevřete stránku Řízení přístupu (IAM) ve stejném oboru jako přiřazení rolí.

  14. Vyberte kartu Přiřazení rolí.

  15. Pokud chcete filtrovat přiřazení rolí, vyberte filtr role a pak vyberte název role.

  16. Vyhledejte přiřazení rolí na základě objektu zabezpečení.

    Měli byste také vidět přiřazení role založené na skupině.

    Snímek obrazovky se stránkou Řízení přístupu (IAM), která zobrazuje přiřazení rolí se stejnou rolí a ve stejném oboru, ale pro různé objekty zabezpečení

  17. Vyberte a odeberte přiřazení rolí na základě objektu zabezpečení. Další informace najdete v tématu věnovaném odebrání přiřazení rolí v Azure.

Řešení 2 – Odebrání redundantních přiřazení rolí

Pokud chcete snížit počet přiřazení rolí v předplatném, odeberte redundantní přiřazení rolí. Pokud chcete zjistit, kde redundantní přiřazení rolí v nižším rozsahu mohou být potenciálně odebrána, protože přiřazení role v vyšším oboru již uděluje přístup.

  1. Přihlaste se k webu Azure Portal a otevřete Azure Resource Graph Explorer.

  2. Vyberte Obor a nastavte obor dotazu.

    Obor obvykle nastavíte na Adresář , abyste se mohli dotazovat na celého tenanta, ale rozsah můžete zúžit na konkrétní předplatná.

    Snímek obrazovky s Průzkumníkem Azure Resource Graphu, který zobrazuje výběr oboru

  3. Vyberte Nastavit obor autorizace a nastavte obor autorizace na Hodnotu At( Nahoře a níže ) a dotazujte se na všechny prostředky v zadaném oboru.

    Snímek obrazovky Azure Resource Graph Exploreru s podoknem Nastavit obor autorizace

  4. Spuštěním následujícího dotazu získejte přiřazení rolí se stejnou rolí a stejným objektem zabezpečení, ale v různých oborech.

    Tento dotaz kontroluje aktivní přiřazení rolí a v Microsoft Entra Privileged Identity Management se nepovažuje za oprávněná přiřazení rolí. Pokud chcete zobrazit seznam oprávněných přiřazení rolí, můžete použít Centrum pro správu Microsoft Entra, PowerShell nebo rozhraní REST API. Další informace najdete v tématu Get-AzRoleEligibilityScheduleInstance nebo instance plánu způsobilosti rolí – seznam pro rozsah.

    Pokud používáte podmínky přiřazení role nebo delegujete správu přiřazení rolí s podmínkami, měli byste použít dotaz Podmínky. V opačném případě použijte výchozí dotaz.

    authorizationresources
    | where type =~ "microsoft.authorization/roleassignments"
    | where id startswith "/subscriptions"
    | extend RoleDefinitionId = tolower(tostring(properties.roleDefinitionId))
    | extend PrincipalId = tolower(properties.principalId)
    | extend RoleDefinitionId_PrincipalId = strcat(RoleDefinitionId, "_", PrincipalId)
    | join kind = leftouter (
      authorizationresources
      | where type =~ "microsoft.authorization/roledefinitions"
      | extend RoleDefinitionName = tostring(properties.roleName)
      | extend rdId = tolower(id)
      | project RoleDefinitionName, rdId
    ) on $left.RoleDefinitionId == $right.rdId
    | summarize count_ = count(), Scopes = make_set(tolower(properties.scope)) by RoleDefinitionId_PrincipalId,RoleDefinitionName
    | project RoleDefinitionId = split(RoleDefinitionId_PrincipalId, "_", 0)[0], RoleDefinitionName, PrincipalId = split(RoleDefinitionId_PrincipalId, "_", 1)[0], count_, Scopes
    | where count_ > 1
    | order by count_ desc
    

    Následující příklad ukazuje příklad výsledků. Sloupec count_ je počet různých oborů pro přiřazení rolí se stejnou rolí a stejným objektem zabezpečení. Počet se seřadí sestupně.

    Snímek obrazovky Azure Resource Graph Exploreru, který zobrazuje přiřazení rolí pro stejnou roli a stejný objekt zabezpečení, ale v různých oborech

    Sloupec Popis
    RoleDefinitionId ID aktuálně přiřazené role.
    RoleDefinitionName Název aktuálně přiřazené role.
    PrincipalId ID objektu zabezpečení přiřazené role.
    COUNT Počet různých oborů pro přiřazení rolí se stejnou rolí a stejným objektem zabezpečení
    Rozsahy Obory pro přiřazení rolí se stejnou rolí a stejným objektem zabezpečení.
  5. Určete řádek, ve kterém chcete odebrat redundantní přiřazení rolí.

  6. Na řádku vyberte Zobrazit podrobnosti a otevřete podokno Podrobnosti .

    Snímek obrazovky s podoknem Podrobností, které zobrazuje přiřazení rolí pro stejnou roli a stejný objekt zabezpečení, ale v různých oborech

  7. Pomocí RoleDefinitionId, RoleDefinitionName a PrincipalId získejte ID role a objektu zabezpečení.

  8. Pomocí oborů získáte seznam oborů pro stejnou roli a stejný objekt zabezpečení.

  9. Určete obor, který se vyžaduje pro přiřazení role. Ostatní přiřazení rolí je možné odebrat.

    Při určování, která přiřazení rolí je možné odebrat, byste měli dodržovat osvědčené postupy s nejnižšími oprávněními . Přiřazení role ve vyšším oboru může udělit více přístupu k objektu zabezpečení, než je potřeba. V takovém případě byste měli odebrat přiřazení role s vyšším oborem. Uživatel například nemusí potřebovat přiřazení role Přispěvatel virtuálních počítačů v oboru předplatného, když přiřazení role Přispěvatel virtuálních počítačů v oboru nižší skupiny prostředků udělí požadovaný přístup.

  10. Získejte hlavní název z ID objektu zabezpečení.

  11. Otevřete stránku Řízení přístupu (IAM) v oboru přiřazení role, kterou chcete odebrat.

  12. Vyberte kartu Přiřazení rolí.

  13. Pokud chcete filtrovat přiřazení rolí, vyberte filtr role a pak vyberte název role.

  14. Najděte objekt zabezpečení.

  15. Vyberte a odeberte přiřazení role. Další informace najdete v tématu věnovaném odebrání přiřazení rolí v Azure.

Řešení 3 – Nahrazení několika předdefinovaných přiřazení rolí vlastním přiřazením role

Pokud chcete snížit počet přiřazení rolí v předplatném, nahraďte několik předdefinovaných přiřazení rolí jediným přiřazením vlastní role. Postupujte podle těchto kroků a určete, kde je možné nahradit více předdefinovaných přiřazení rolí.

  1. Přihlaste se k webu Azure Portal a otevřete Azure Resource Graph Explorer.

  2. Vyberte Obor a nastavte obor dotazu.

    Obor obvykle nastavíte na Adresář , abyste se mohli dotazovat na celého tenanta, ale rozsah můžete zúžit na konkrétní předplatná.

    Snímek obrazovky s Průzkumníkem Azure Resource Graphu, který zobrazuje výběr oboru

  3. Spuštěním následujícího dotazu získejte přiřazení rolí se stejným objektem zabezpečení a stejným oborem, ale s různými předdefinovanými rolemi.

    Tento dotaz kontroluje aktivní přiřazení rolí a v Microsoft Entra Privileged Identity Management se nepovažuje za oprávněná přiřazení rolí. Pokud chcete zobrazit seznam oprávněných přiřazení rolí, můžete použít Centrum pro správu Microsoft Entra, PowerShell nebo rozhraní REST API. Další informace najdete v tématu Get-AzRoleEligibilityScheduleInstance nebo instance plánu způsobilosti rolí – seznam pro rozsah.

    Pokud používáte podmínky přiřazení role nebo delegujete správu přiřazení rolí s podmínkami, měli byste použít dotaz Podmínky. V opačném případě použijte výchozí dotaz.

    AuthorizationResources
    | where type =~ "microsoft.authorization/roleassignments"
    | where id startswith "/subscriptions"
    | extend PrincipalId = tostring(properties.principalId) 
    | extend Scope = tolower(properties.scope)
    | extend RoleDefinitionId = tolower(tostring(properties.roleDefinitionId))
    | join kind = leftouter (
      AuthorizationResources
      | where type =~ "microsoft.authorization/roledefinitions"
      | extend RoleName = tostring(properties.roleName)
      | extend RoleId = tolower(id)
      | extend RoleType = tostring(properties.type) 
      | where RoleType == "BuiltInRole"
      | extend RoleId_RoleName = pack(RoleId, RoleName)
    ) on $left.RoleDefinitionId == $right.RoleId
    | summarize count_ = count(), AllRD = make_set(RoleId_RoleName) by PrincipalId, Scope
    | where count_ > 1
    | order by count_ desc
    

    Následující příklad ukazuje příklad výsledků. Sloupec count_ je počet různých předdefinovaných přiřazení rolí se stejným objektem zabezpečení a stejným oborem. Počet se seřadí sestupně.

    Snímek obrazovky s Průzkumníkem azure Resource Graphu, který zobrazuje přiřazení rolí pro stejný objekt zabezpečení a stejný obor

    Sloupec Popis
    PrincipalId ID objektu zabezpečení přiřazeného předdefinovaným rolím
    Obor Rozsah předdefinovaných přiřazení rolí
    COUNT Počet předdefinovaných přiřazení rolí se stejným objektem zabezpečení a stejným oborem
    AllRD ID a název předdefinovaných rolí
  4. Na řádku vyberte Zobrazit podrobnosti a otevřete podokno Podrobnosti .

    Snímek obrazovky s podoknem Podrobností, které zobrazuje přiřazení rolí se stejným oborem objektu zabezpečení a stejného oboru

  5. Pomocí funkce AllRD můžete zobrazit předdefinované role, které se dají potenciálně zkombinovat do vlastní role.

  6. Zobrazí seznam akcí a akcí dat pro předdefinované role. Další informace najdete v tématu Výpis definic rolí Azure nebo předdefinovaných rolí Azure.

  7. Vytvořte vlastní roli, která zahrnuje všechny akce a akce dat jako předdefinované role. Pokud chcete usnadnit vytvoření vlastní role, můžete začít klonováním jedné z předdefinovaných rolí. Další informace najdete v tématu Vytvoření nebo aktualizace vlastních rolí Azure pomocí webu Azure Portal.

  8. Získejte hlavní název z ID objektu zabezpečení.

  9. Otevřete stránku Řízení přístupu (IAM) ve stejném oboru jako přiřazení rolí.

  10. Přiřaďte k objektu zabezpečení novou vlastní roli. Další informace viz Přiřazení rolí Azure pomocí webu Azure Portal.

    Teď můžete odebrat předdefinovaná přiřazení rolí.

  11. Na stránce Řízení přístupu (IAM) ve stejném oboru vyberte kartu Přiřazení rolí.

  12. Vyhledejte instanční objekt a předdefinovaná přiřazení rolí.

  13. Odeberte předdefinovaná přiřazení rolí z objektu zabezpečení. Další informace najdete v tématu věnovaném odebrání přiřazení rolí v Azure.

Řešení 4 – Nastavení oprávnění k přiřazení rolí

Pokud chcete snížit počet přiřazení rolí v předplatném a máte Microsoft Entra ID P2, udělte přiřazení rolí oprávněným v Microsoft Entra Privileged Identity Management místo trvalého přiřazení.

Řešení 5 – Přidání dalšího předplatného

Přidejte další předplatné.

Příznak – v oboru skupiny pro správu není možné vytvářet žádná další přiřazení rolí.

Nemůžete přiřadit roli v oboru skupiny pro správu.

Příčina

podpora Azure až 500 přiřazení rolí na skupinu pro správu. Tento limit se liší od limitu přiřazení rolí na předplatné.

Poznámka:

Limit 500 přiřazení rolí na skupinu pro správu je pevný a nelze ho zvýšit.

Řešení

Pokuste se snížit počet přiřazení rolí ve skupině pro správu. Možné možnosti najdete v tématu Příznaky – Není možné vytvořit žádná další přiřazení rolí. Aby dotazy načítaly prostředky na úrovni skupiny pro správu, musíte v dotazech provést následující změnu:

Nahradit

| where id startswith "/subscriptions"

With

| where id startswith "/providers/Microsoft.Management/managementGroups"

Příznak – Není možné vytvořit žádné další definice rolí.

Když se pokusíte vytvořit novou vlastní roli, zobrazí se následující zpráva:

Role definition limit exceeded. No more role definitions can be created (code: RoleDefinitionLimitExceeded)

Příčina

podpora Azure až 5 000 vlastních rolí v adresáři. (Pro Microsoft Azure provozovaný společností 21Vianet je limit 2000 vlastních rolí.)

Řešení

Pomocí těchto kroků vyhledejte a odstraňte nepoužívané vlastní role Azure.

  1. Přihlaste se k webu Azure Portal a otevřete Azure Resource Graph Explorer.

  2. Vyberte Obor a nastavte obor na Adresář dotazu.

    Snímek obrazovky s Průzkumníkem Azure Resource Graphu, který zobrazuje výběr oboru

  3. Spuštěním následujícího dotazu získejte všechny vlastní role, které nemají přiřazení rolí:

    Tento dotaz zkontroluje aktivní přiřazení rolí a v Microsoft Entra Privileged Identity Management se nepovažuje za oprávněná přiřazení vlastních rolí. Pokud chcete zobrazit seznam oprávněných přiřazení vlastních rolí, můžete použít Centrum pro správu Microsoft Entra, PowerShell nebo rozhraní REST API. Další informace najdete v tématu Get-AzRoleEligibilityScheduleInstance nebo instance plánu způsobilosti rolí – seznam pro rozsah.

    AuthorizationResources
    | where type =~ "microsoft.authorization/roledefinitions"
    | where tolower(properties.type) == "customrole"
    | extend rdId = tolower(id)
    | extend Scope = tolower(properties.assignableScopes)
    | join kind = leftouter (
    AuthorizationResources
      | where type =~ "microsoft.authorization/roleassignments"
      | extend RoleId = tolower(tostring(properties.roleDefinitionId))
      | summarize RoleAssignmentCount = count() by RoleId
    ) on $left.rdId == $right.RoleId
    | where isempty(RoleAssignmentCount)
    | project RoleDefinitionId = rdId, RoleDefinitionName = tostring(properties.roleName), Scope
    

    Následuje příklad výsledků:

    Snímek obrazovky Azure Resource Graph Exploreru, který zobrazuje vlastní role bez přiřazení rolí

    Sloupec Popis
    RoleDefinitionId ID nepoužívané vlastní role.
    RoleDefinitionName Název nepoužívané vlastní role
    Obor Přiřaditelné obory pro nepoužívané vlastní role
  4. Otevřete obor (obvykle předplatné) a otevřete stránku Řízení přístupu (IAM).

  5. Výběrem karty Role zobrazíte seznam všech předdefinovaných a vlastních rolí.

  6. Ve filtru Typ vyberte Možnost Vlastní role, aby se zobrazily vaše vlastní role.

  7. Vyberte tři tečky (...) pro vlastní roli, kterou chcete odstranit, a pak vyberte Odstranit.

    Snímek obrazovky se seznamem vlastních rolí, které je možné vybrat k odstranění

Další kroky