Problemen met Azure RBAC-limieten oplossen
In dit artikel worden enkele algemene oplossingen beschreven wanneer u de limieten in op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) overschrijdt.
Vereisten
- Lezerrol voor het uitvoeren van Azure Resource Graph-query's.
- Op rollen gebaseerd toegangsbeheerbeheerder om roltoewijzingen toe te voegen of te verwijderen.
- Beheerdersrol gebruikerstoegang om roltoewijzingen toe te voegen, roltoewijzingen te verwijderen of aangepaste rollen te verwijderen.
- De rol Groepsbeheerder of Gebruikersbeheerder voor het maken van groepen.
Notitie
De query's die in dit artikel worden gebruikt, retourneren alleen roltoewijzingen of aangepaste rollen waarvoor u machtigingen hebt om te lezen. Als u bijvoorbeeld alleen machtigingen hebt voor het lezen van roltoewijzingen binnen het bereik van de resourcegroep, worden roltoewijzingen in het abonnementsbereik niet geretourneerd.
Symptoom: er kunnen geen roltoewijzingen meer worden gemaakt
Wanneer u een rol probeert toe te wijzen, wordt het volgende foutbericht weergegeven:
No more role assignments can be created (code: RoleAssignmentLimitExceeded)
Oorzaak
ondersteuning voor Azure maximaal 4000 roltoewijzingen per abonnement. Deze limiet omvat roltoewijzingen voor het abonnement, de resourcegroep en het resourcebereik, maar niet voor het bereik van de beheergroep. In aanmerking komende roltoewijzingen en roltoewijzingen die in de toekomst zijn gepland, tellen niet mee voor deze limiet. Probeer het aantal roltoewijzingen in het abonnement te verminderen.
Notitie
De limiet voor 4000 roltoewijzingen per abonnement is vast en kan niet worden verhoogd.
Als u het aantal roltoewijzingen wilt weten, bekijkt u de grafiek op de pagina Toegangsbeheer (IAM) in Azure Portal. U kunt ook de volgende Azure PowerShell-opdrachten gebruiken:
$scope = "/subscriptions/<subscriptionId>"
$ras = Get-AzRoleAssignment -Scope $scope | Where-Object {$_.scope.StartsWith($scope)}
$ras.Count
Oplossing 1: op principal gebaseerde roltoewijzingen vervangen door op groepen gebaseerde roltoewijzingen
Als u het aantal roltoewijzingen in het abonnement wilt verminderen, voegt u principals (gebruikers, service-principals en beheerde identiteiten) toe aan groepen en wijst u in plaats daarvan rollen toe aan de groepen. Volg deze stappen om te bepalen waar meerdere roltoewijzingen voor principals kunnen worden vervangen door één roltoewijzing voor een groep.
Meld u aan bij Azure Portal en open Azure Resource Graph Explorer.
Selecteer Bereik en stel het bereik voor de query in.
Doorgaans stelt u het bereik in op Directory om een query uit te voeren op uw hele tenant, maar u kunt het bereik beperken tot bepaalde abonnementen.
Selecteer Autorisatiebereik instellen en stel het autorisatiebereik in op At, boven en hieronder om een query uit te voeren op alle resources in het opgegeven bereik.
Voer de volgende query uit om de roltoewijzingen met dezelfde rol en hetzelfde bereik op te halen, maar voor verschillende principals.
Met deze query worden actieve roltoewijzingen gecontroleerd en wordt geen rekening gehouden met in aanmerking komende roltoewijzingen in Microsoft Entra Privileged Identity Management. Als u in aanmerking komende roltoewijzingen wilt weergeven, kunt u het Microsoft Entra-beheercentrum, PowerShell of REST API gebruiken. Zie Get-AzRoleEligibilityScheduleInstance of Instanties van rolgeschiktheidsplanning - Lijst voor bereik voor meer informatie.
Als u voorwaarden voor roltoewijzing gebruikt of roltoewijzingsbeheer delegeert met voorwaarden, moet u de query Voorwaarden gebruiken. Gebruik anders de standaardquery.
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
Hieronder ziet u een voorbeeld van de resultaten. De kolom count_ is het aantal principals waaraan dezelfde rol en hetzelfde bereik is toegewezen. Het aantal wordt in aflopende volgorde gesorteerd.
Identificeer een rij waarin u de meerdere roltoewijzingen wilt vervangen door één roltoewijzing voor een groep.
Selecteer Details weergeven in de rij om het deelvenster Details te openen.
Kolom Beschrijving RoleDefinitionId Id van de momenteel toegewezen rol. Bereik Bereik voor de roltoewijzing, die een abonnement, resourcegroep of resource is. RoleDefinitionName Naam van de momenteel toegewezen rol. aantal_ Het aantal principals dat dezelfde rol en hetzelfde bereik heeft toegewezen. AllPrincipals Lijst met principal-id's die dezelfde rol en hetzelfde bereik hebben toegewezen. Gebruik RoleDefinitionId, RoleDefinitionName en Scope om de rol en het bereik op te halen.
Gebruik AllPrincipals om de lijst met principal-id's met dezelfde roltoewijzing op te halen.
Maak een Microsoft Entra-groep. Raadpleeg Microsoft Entra-groepen en groepslidmaatschap beheren voor meer informatie.
Voeg de principals van AllPrincipals toe aan de groep.
Zie Groepsleden bulksgewijs toevoegen in Microsoft Entra-id voor meer informatie over het bulksgewijs toevoegen van principals.
Wijs de rol toe aan de groep die u hebt gemaakt in hetzelfde bereik. Zie voor meer informatie Azure-rollen toewijzen met behulp van de Azure-portal.
U kunt nu de op principal gebaseerde roltoewijzingen vinden en verwijderen.
Haal de principal-namen op uit de principal-id's.
- Als u Azure Portal wilt gebruiken, raadpleegt u Profielgegevens en -instellingen van een gebruiker toevoegen of bijwerken.
- Als u PowerShell wilt gebruiken, raadpleegt u Get-MgUser.
- Als u Azure CLI wilt gebruiken, raadpleegt u az ad user show.
Open de pagina Toegangsbeheer (IAM) in hetzelfde bereik als de roltoewijzingen.
Selecteer het tabblad Roltoewijzingen.
Als u de roltoewijzingen wilt filteren, selecteert u het rolfilter en selecteert u vervolgens de rolnaam.
Zoek de op principal gebaseerde roltoewijzingen.
U ziet ook de roltoewijzing op basis van een groep.
Selecteer en verwijder de op principal gebaseerde roltoewijzingen. Zie Azure-roltoewijzingen verwijderen voor meer informatie.
Oplossing 2: redundante roltoewijzingen verwijderen
Als u het aantal roltoewijzingen in het abonnement wilt verminderen, verwijdert u redundante roltoewijzingen. Volg deze stappen om te bepalen waar redundante roltoewijzingen in een lager bereik mogelijk kunnen worden verwijderd, omdat een roltoewijzing in een hoger bereik al toegang verleent.
Meld u aan bij Azure Portal en open Azure Resource Graph Explorer.
Selecteer Bereik en stel het bereik voor de query in.
Doorgaans stelt u het bereik in op Directory om een query uit te voeren op uw hele tenant, maar u kunt het bereik beperken tot bepaalde abonnementen.
Selecteer Autorisatiebereik instellen en stel het autorisatiebereik in op At, boven en hieronder om een query uit te voeren op alle resources in het opgegeven bereik.
Voer de volgende query uit om de roltoewijzingen op te halen met dezelfde rol en dezelfde principal, maar met verschillende bereiken.
Met deze query worden actieve roltoewijzingen gecontroleerd en wordt geen rekening gehouden met in aanmerking komende roltoewijzingen in Microsoft Entra Privileged Identity Management. Als u in aanmerking komende roltoewijzingen wilt weergeven, kunt u het Microsoft Entra-beheercentrum, PowerShell of REST API gebruiken. Zie Get-AzRoleEligibilityScheduleInstance of Instanties van rolgeschiktheidsplanning - Lijst voor bereik voor meer informatie.
Als u voorwaarden voor roltoewijzing gebruikt of roltoewijzingsbeheer delegeert met voorwaarden, moet u de query Voorwaarden gebruiken. Gebruik anders de standaardquery.
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
Hieronder ziet u een voorbeeld van de resultaten. De kolom count_ is het aantal verschillende bereiken voor roltoewijzingen met dezelfde rol en dezelfde principal. Het aantal wordt in aflopende volgorde gesorteerd.
Kolom Beschrijving RoleDefinitionId Id van de momenteel toegewezen rol. RoleDefinitionName Naam van de momenteel toegewezen rol. PrincipalId Id van de principal waaraan de rol is toegewezen. aantal_ Aantal verschillende bereiken voor roltoewijzingen met dezelfde rol en dezelfde principal. Bereiken Bereiken voor roltoewijzingen met dezelfde rol en dezelfde principal. Identificeer een rij waar u redundante roltoewijzingen wilt verwijderen.
Selecteer In een rij Details weergeven om het deelvenster Details te openen.
Gebruik RoleDefinitionId, RoleDefinitionName en PrincipalId om de rol- en principal-id op te halen.
Gebruik Bereiken om de lijst met bereiken voor dezelfde rol en dezelfde principal op te halen.
Bepaal welk bereik vereist is voor de roltoewijzing. De andere roltoewijzingen kunnen worden verwijderd.
U moet de aanbevolen procedures van minimale bevoegdheden volgen bij het bepalen welke roltoewijzingen kunnen worden verwijderd. De roltoewijzing op het hogere bereik verleent mogelijk meer toegang tot de principal dan nodig is. In dat geval moet u de roltoewijzing met het hogere bereik verwijderen. Een gebruiker heeft bijvoorbeeld mogelijk geen roltoewijzing van inzender voor virtuele machines nodig in het abonnementsbereik wanneer een roltoewijzing van een inzender voor virtuele machines in een lager resourcegroepsbereik de vereiste toegang verleent.
Haal de principal-naam op uit de principal-id.
- Als u Azure Portal wilt gebruiken, raadpleegt u Profielgegevens en -instellingen van een gebruiker toevoegen of bijwerken.
- Als u PowerShell wilt gebruiken, raadpleegt u Get-MgUser.
- Als u Azure CLI wilt gebruiken, raadpleegt u az ad user show.
Open de pagina Toegangsbeheer (IAM) in het bereik voor een roltoewijzing die u wilt verwijderen.
Selecteer het tabblad Roltoewijzingen.
Als u de roltoewijzingen wilt filteren, selecteert u het rolfilter en selecteert u vervolgens de rolnaam.
Zoek de principal.
Selecteer en verwijder de roltoewijzing. Zie Azure-roltoewijzingen verwijderen voor meer informatie.
Oplossing 3: meerdere ingebouwde roltoewijzingen vervangen door een aangepaste roltoewijzing
Als u het aantal roltoewijzingen in het abonnement wilt verminderen, vervangt u meerdere ingebouwde roltoewijzingen door één aangepaste roltoewijzing. Volg deze stappen om te bepalen waar meerdere ingebouwde roltoewijzingen mogelijk kunnen worden vervangen.
Meld u aan bij Azure Portal en open Azure Resource Graph Explorer.
Selecteer Bereik en stel het bereik voor de query in.
Doorgaans stelt u het bereik in op Directory om een query uit te voeren op uw hele tenant, maar u kunt het bereik beperken tot bepaalde abonnementen.
Voer de volgende query uit om roltoewijzingen op te halen met dezelfde principal en hetzelfde bereik, maar met verschillende ingebouwde rollen.
Met deze query worden actieve roltoewijzingen gecontroleerd en wordt geen rekening gehouden met in aanmerking komende roltoewijzingen in Microsoft Entra Privileged Identity Management. Als u in aanmerking komende roltoewijzingen wilt weergeven, kunt u het Microsoft Entra-beheercentrum, PowerShell of REST API gebruiken. Zie Get-AzRoleEligibilityScheduleInstance of Instanties van rolgeschiktheidsplanning - Lijst voor bereik voor meer informatie.
Als u voorwaarden voor roltoewijzing gebruikt of roltoewijzingsbeheer delegeert met voorwaarden, moet u de query Voorwaarden gebruiken. Gebruik anders de standaardquery.
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
Hieronder ziet u een voorbeeld van de resultaten. De count_ kolom is het aantal verschillende ingebouwde roltoewijzingen met dezelfde principal en hetzelfde bereik. Het aantal wordt in aflopende volgorde gesorteerd.
Kolom Beschrijving PrincipalId Id van de principal waaraan de ingebouwde rollen zijn toegewezen. Bereik Bereik voor ingebouwde roltoewijzingen. aantal_ Aantal ingebouwde roltoewijzingen met dezelfde principal en hetzelfde bereik. AllRD Id en naam van ingebouwde rollen. Selecteer In een rij Details weergeven om het deelvenster Details te openen.
Gebruik AllRD om de ingebouwde rollen te zien die mogelijk kunnen worden gecombineerd tot een aangepaste rol.
De acties en gegevensacties voor de ingebouwde rollen weergeven. Zie Lijst met Azure-roldefinities of ingebouwde Azure-rollen voor meer informatie
Maak een aangepaste rol met alle acties en gegevensacties als ingebouwde rollen. Om het gemakkelijker te maken om de aangepaste rol te maken, kunt u beginnen met het klonen van een van de ingebouwde rollen. Zie Aangepaste Azure-rollen maken of bijwerken met behulp van Azure Portal voor meer informatie.
Haal de principal-naam op uit de principal-id.
- Als u Azure Portal wilt gebruiken, raadpleegt u Profielgegevens en -instellingen van een gebruiker toevoegen of bijwerken.
- Als u PowerShell wilt gebruiken, raadpleegt u Get-MgUser.
- Als u Azure CLI wilt gebruiken, raadpleegt u az ad user show.
Open de pagina Toegangsbeheer (IAM) in hetzelfde bereik als de roltoewijzingen.
Wijs de nieuwe aangepaste rol toe aan de principal. Zie voor meer informatie Azure-rollen toewijzen met behulp van de Azure-portal.
U kunt nu de ingebouwde roltoewijzingen verwijderen.
Selecteer op de pagina Toegangsbeheer (IAM) in hetzelfde bereik het tabblad Roltoewijzingen .
Zoek de principal- en ingebouwde roltoewijzingen.
Verwijder de ingebouwde roltoewijzingen uit de principal. Zie Azure-roltoewijzingen verwijderen voor meer informatie.
Oplossing 4: roltoewijzingen in aanmerking laten komen
Als u het aantal roltoewijzingen in het abonnement wilt verminderen en u Microsoft Entra ID P2 hebt, maakt u roltoewijzingen die in aanmerking komen voor Microsoft Entra Privileged Identity Management in plaats van permanent toegewezen.
Oplossing 5: een extra abonnement toevoegen
Voeg een extra abonnement toe.
Symptoom: er kunnen geen roltoewijzingen meer worden gemaakt in het bereik van de beheergroep
U kunt geen rol toewijzen in het bereik van de beheergroep.
Oorzaak
ondersteuning voor Azure maximaal 500 roltoewijzingen per beheergroep. Deze limiet verschilt van de limiet voor roltoewijzingen per abonnement.
Notitie
De limiet van 500 roltoewijzingen per beheergroep is vast en kan niet worden verhoogd.
Oplossing
Probeer het aantal roltoewijzingen in de beheergroep te verminderen. Zie Symptoom voor mogelijke opties : er kunnen geen roltoewijzingen meer worden gemaakt. Voor het ophalen van resources op het niveau van de beheergroep moet u de volgende wijziging aanbrengen in de query's:
Replace
| where id startswith "/subscriptions"
With
| where id startswith "/providers/Microsoft.Management/managementGroups"
Symptoom: er kunnen geen roldefinities meer worden gemaakt
Wanneer u een nieuwe aangepaste rol probeert te maken, krijgt u het volgende bericht:
Role definition limit exceeded. No more role definitions can be created (code: RoleDefinitionLimitExceeded)
Oorzaak
ondersteuning voor Azure maximaal 5000 aangepaste rollen in een directory. (Voor Microsoft Azure beheerd door 21Vianet is de limiet 2000 aangepaste rollen.)
Oplossing
Volg deze stappen om ongebruikte aangepaste Azure-rollen te zoeken en te verwijderen.
Meld u aan bij Azure Portal en open Azure Resource Graph Explorer.
Selecteer Bereik en stel het bereik in op Directory voor de query.
Voer de volgende query uit om alle aangepaste rollen op te halen die geen roltoewijzingen hebben:
Deze query controleert actieve roltoewijzingen en overweegt geen in aanmerking komende aangepaste roltoewijzingen in Microsoft Entra Privileged Identity Management. Als u in aanmerking komende aangepaste roltoewijzingen wilt weergeven, kunt u het Microsoft Entra-beheercentrum, PowerShell of REST API gebruiken. Zie Get-AzRoleEligibilityScheduleInstance of Instanties van rolgeschiktheidsplanning - Lijst voor bereik voor meer informatie.
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
Hieronder ziet u een voorbeeld van de resultaten:
Kolom Beschrijving RoleDefinitionId Id van de ongebruikte aangepaste rol. RoleDefinitionName Naam van de ongebruikte aangepaste rol. Bereik Toewijsbare bereiken voor de ongebruikte aangepaste rol. Open het bereik (meestal abonnement) en open vervolgens de pagina Toegangsbeheer (IAM).
Selecteer het tabblad Rollen om een lijst te zien met alle ingebouwde en aangepaste rollen.
Selecteer CustomRole in het filter Type om alleen uw aangepaste rollen te zien.
Selecteer het beletselteken (...) voor de aangepaste rol die u wilt verwijderen en selecteer vervolgens Verwijderen.