Azure RBAC sınırlarıyla ilgili sorunları giderme

Bu makalede, Azure rol tabanlı erişim denetimindeki (Azure RBAC) sınırları aştığınızda bazı yaygın çözümler açıklanmaktadır.

Önkoşullar

Not

Bu makalede kullanılan sorgular yalnızca okuma izinlerine sahip olduğunuz rol atamalarını veya özel rolleri döndürür. Örneğin, yalnızca kaynak grubu kapsamında rol atamalarını okuma izinleriniz varsa abonelik kapsamındaki rol atamaları döndürülemez.

Belirti - Başka rol ataması oluşturulamıyor

Rol atamaya çalıştığınızda aşağıdaki hata iletisini alırsınız:

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

Neden

abonelik başına en fazla 4000 rol ataması Azure desteği. Bu sınır abonelikteki, kaynak grubundaki ve kaynak kapsamlarındaki rol atamalarını içerir ama yönetim grubu kapsamındaki atamaları içermez. Abonelikteki rol atamalarının sayısını azaltmayı denemelisiniz.

Not

Abonelik başına 4000 rol ataması sınırı sabittir ve artırılamaz.

Rol atamalarının sayısını, Azure portalda Erişim denetimi (IAM) sayfasındaki grafikte görebilirsiniz. Aşağıdaki Azure PowerShell komutlarını da kullanabilirsiniz:

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

Çözüm 1 - Asıl tabanlı rol atamalarını grup tabanlı rol atamalarıyla değiştirme

Abonelikteki rol atamalarının sayısını azaltmak için gruplara sorumlular (kullanıcılar, hizmet sorumluları ve yönetilen kimlikler) ekleyin ve bunun yerine gruplara roller atayın. Sorumlular için birden çok rol atamasını bir grup için tek bir rol atamasıyla değiştirebilecekleri yerleri belirlemek için bu adımları izleyin.

  1. Azure portalında oturum açın ve Azure Kaynak Grafı Gezgini'ni açın.

  2. Kapsam'ı seçin ve sorgunun kapsamını ayarlayın.

    Kiracınızın tamamını sorgulamak için genellikle kapsamı Dizin olarak ayarlarsınız, ancak kapsamı belirli aboneliklere göre daraltabilirsiniz.

    Kapsam seçimini gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

  3. Yetkilendirme kapsamını ayarla'yı seçin ve belirtilen kapsamdaki tüm kaynakları sorgulamak için yetkilendirme kapsamını yukarıda ve aşağıda At olarak ayarlayın.

    Yetkilendirme kapsamını ayarla bölmesini gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

  4. Aynı role ve aynı kapsama sahip rol atamalarını almak için ancak farklı sorumlular için aşağıdaki sorguyu çalıştırın.

    Bu sorgu etkin rol atamalarını denetler ve Microsoft Entra Privileged Identity Management'ta uygun rol atamalarını dikkate almaz. Uygun rol atamalarını listelemek için Microsoft Entra yönetim merkezini, PowerShell'i veya REST API'yi kullanabilirsiniz. Daha fazla bilgi için bkz . Get-AzRoleEligibilityScheduleInstance veya Rol Uygunluğu Zamanlama Örnekleri - Kapsam Listesi.

    Rol atama koşullarını kullanıyorsanız veya rol ataması yönetimini koşullarla birlikte temsilci olarak kullanıyorsanız, Koşullar sorgusunu kullanmanız gerekir. Aksi takdirde Varsayılan sorguyu kullanın.

    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
    

    Aşağıda sonuçların bir örneği gösterilmektedir. count_ sütunu, aynı role ve aynı kapsamda atanan sorumluların sayısıdır. Sayı azalan düzende sıralanır.

    Azure Kaynak Grafı Gezgini'nin aynı role ve aynı kapsama sahip rol atamalarını ancak farklı sorumlular için gösteren ekran görüntüsü.

  5. Birden çok rol atamasını bir grup için tek bir rol atamasıyla değiştirmek istediğiniz satırı belirleyin.

  6. Ayrıntılar bölmesini açmak için satırda Ayrıntıları göster'i seçin.

    Aynı role ve aynı kapsama sahip ancak farklı sorumlular için rol atamalarını gösteren Ayrıntılar bölmesinin ekran görüntüsü.

    Sütun Açıklama
    RoleDefinitionId Şu anda atanmış rolün kimliği .
    Kapsam Abonelik, kaynak grubu veya kaynak olacak rol atamasının kapsamı.
    RoleDefinitionName Şu anda atanmış rolün adı .
    count_ Aynı role ve aynı kapsamda atanan sorumluların sayısı.
    AllPrincipals Aynı role ve aynı kapsamda atanan asıl kimliklerin listesi.
  7. Rol ve kapsamı almak için RoleDefinitionId, RoleDefinitionName ve Scope kullanın.

  8. Aynı rol atamasına sahip asıl kimliklerin listesini almak için AllPrincipals kullanın.

  9. Bir Microsoft Entra grubu oluşturun. Daha fazla bilgi için bkz . Microsoft Entra gruplarını ve grup üyeliğini yönetme.

  10. AllPrincipals'dan sorumluları gruba ekleyin.

    Sorumluları toplu olarak ekleme hakkında bilgi için bkz . Microsoft Entra Id'de grup üyelerini toplu ekleme.

  11. Rolü, aynı kapsamda oluşturduğunuz gruba atayın. Daha fazla bilgi edinmek için bkz. Azure portal kullanarak Azure rolleri atama.

    Artık asıl tabanlı rol atamalarını bulabilir ve kaldırabilirsiniz.

  12. Asıl kimliklerden asıl adları alın.

  13. Erişim denetimi (IAM) sayfasını rol atamalarıyla aynı kapsamda açın.

  14. Rol atamaları sekmesini seçin.

  15. Rol atamalarını filtrelemek için Rol filtresini seçin ve ardından rol adını seçin.

  16. Asıl tabanlı rol atamalarını bulun.

    Grup tabanlı rol atamanızı da görmeniz gerekir.

    Aynı role sahip ve aynı kapsamda, ancak farklı sorumlular için rol atamalarını gösteren Erişim denetimi (IAM) sayfasının ekran görüntüsü.

  17. Asıl tabanlı rol atamalarını seçin ve kaldırın. Daha fazla bilgi için, bkz. Azure rol atamalarını kaldırma.

Çözüm 2 - Yedekli rol atamalarını kaldırma

Abonelikteki rol atamalarının sayısını azaltmak için yedekli rol atamalarını kaldırın. Daha yüksek bir kapsamdaki bir rol ataması zaten erişim izni verdikten sonra daha düşük bir kapsamdaki yedekli rol atamalarının kaldırılma olasılığını belirlemek için bu adımları izleyin.

  1. Azure portalında oturum açın ve Azure Kaynak Grafı Gezgini'ni açın.

  2. Kapsam'ı seçin ve sorgunun kapsamını ayarlayın.

    Kiracınızın tamamını sorgulamak için genellikle kapsamı Dizin olarak ayarlarsınız, ancak kapsamı belirli aboneliklere göre daraltabilirsiniz.

    Kapsam seçimini gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

  3. Yetkilendirme kapsamını ayarla'yı seçin ve belirtilen kapsamdaki tüm kaynakları sorgulamak için yetkilendirme kapsamını yukarıda ve aşağıda At olarak ayarlayın.

    Yetkilendirme kapsamını ayarla bölmesini gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

  4. Aynı role ve aynı sorumluya sahip ancak farklı kapsamlarda rol atamalarını almak için aşağıdaki sorguyu çalıştırın.

    Bu sorgu etkin rol atamalarını denetler ve Microsoft Entra Privileged Identity Management'ta uygun rol atamalarını dikkate almaz. Uygun rol atamalarını listelemek için Microsoft Entra yönetim merkezini, PowerShell'i veya REST API'yi kullanabilirsiniz. Daha fazla bilgi için bkz . Get-AzRoleEligibilityScheduleInstance veya Rol Uygunluğu Zamanlama Örnekleri - Kapsam Listesi.

    Rol atama koşullarını kullanıyorsanız veya rol ataması yönetimini koşullarla birlikte temsilci olarak kullanıyorsanız, Koşullar sorgusunu kullanmanız gerekir. Aksi takdirde Varsayılan sorguyu kullanın.

    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
    

    Aşağıda sonuçların bir örneği gösterilmektedir. count_ sütunu, aynı role ve aynı sorumluya sahip rol atamaları için farklı kapsamların sayısıdır. Sayı azalan düzende sıralanır.

    Aynı rol ve aynı sorumlu için rol atamalarını ancak farklı kapsamlarda gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

    Sütun Açıklama
    RoleDefinitionId Şu anda atanmış rolün kimliği .
    RoleDefinitionName Şu anda atanmış rolün adı .
    PrincipalId Role atanan sorumlunun kimliği.
    count_ Aynı role ve aynı sorumluya sahip rol atamaları için farklı kapsamların sayısı.
    Kapsamlar Aynı role ve aynı sorumluya sahip rol atamaları için kapsamlar.
  5. Yedekli rol atamalarını kaldırmak istediğiniz satırı belirleyin.

  6. Ayrıntılar bölmesini açmak için bir satırda Ayrıntılara bakın'ı seçin.

    Aynı rol ve aynı sorumlu için ancak farklı kapsamlarda rol atamalarını gösteren Ayrıntılar bölmesinin ekran görüntüsü.

  7. Rol ve asıl kimliği almak için RoleDefinitionId, RoleDefinitionName ve PrincipalId kullanın.

  8. Aynı role ve aynı sorumluya ait kapsamların listesini almak için Kapsamlar'ı kullanın.

  9. Rol ataması için hangi kapsamın gerekli olduğunu belirleyin. Diğer rol atamaları kaldırılabilir.

    Hangi rol atamalarının kaldırılabileceğini belirlerken en iyi ayrıcalık uygulamalarını izlemeniz gerekir. Üst kapsamdaki rol ataması, sorumluya gerekenden daha fazla erişim vermekte olabilir. Bu durumda, daha yüksek kapsamlı rol atamasını kaldırmanız gerekir. Örneğin, daha düşük bir kaynak grubu kapsamındaki bir Sanal Makine Katkıda Bulunanı rol ataması gerekli erişimi verince kullanıcının abonelik kapsamında Sanal Makine Katkıda Bulunanı rol ataması gerekli olmayabilir.

  10. Asıl kimlikten asıl adı alın.

  11. Kaldırmak istediğiniz rol atamasının kapsamındaki Erişim denetimi (IAM) sayfasını açın.

  12. Rol atamaları sekmesini seçin.

  13. Rol atamalarını filtrelemek için Rol filtresini seçin ve ardından rol adını seçin.

  14. Sorumluyu bulun.

  15. Rol atamasını seçin ve kaldırın. Daha fazla bilgi için, bkz. Azure rol atamalarını kaldırma.

Çözüm 3 - Birden çok yerleşik rol atamalarını özel rol atamasıyla değiştirme

Abonelikteki rol atamalarının sayısını azaltmak için, birden çok yerleşik rol atamasını tek bir özel rol atamasıyla değiştirin. Birden çok yerleşik rol atamasını değiştirme olasılığını belirlemek için bu adımları izleyin.

  1. Azure portalında oturum açın ve Azure Kaynak Grafı Gezgini'ni açın.

  2. Kapsam'ı seçin ve sorgunun kapsamını ayarlayın.

    Kiracınızın tamamını sorgulamak için genellikle kapsamı Dizin olarak ayarlarsınız, ancak kapsamı belirli aboneliklere göre daraltabilirsiniz.

    Kapsam seçimini gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

  3. Aynı sorumluya ve aynı kapsama sahip ancak farklı yerleşik rollere sahip rol atamaları almak için aşağıdaki sorguyu çalıştırın.

    Bu sorgu etkin rol atamalarını denetler ve Microsoft Entra Privileged Identity Management'ta uygun rol atamalarını dikkate almaz. Uygun rol atamalarını listelemek için Microsoft Entra yönetim merkezini, PowerShell'i veya REST API'yi kullanabilirsiniz. Daha fazla bilgi için bkz . Get-AzRoleEligibilityScheduleInstance veya Rol Uygunluğu Zamanlama Örnekleri - Kapsam Listesi.

    Rol atama koşullarını kullanıyorsanız veya rol ataması yönetimini koşullarla birlikte temsilci olarak kullanıyorsanız, Koşullar sorgusunu kullanmanız gerekir. Aksi takdirde Varsayılan sorguyu kullanın.

    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
    

    Aşağıda sonuçların bir örneği gösterilmektedir. count_ sütunu, aynı sorumluya ve aynı kapsama sahip farklı yerleşik rol atamalarının sayısıdır. Sayı azalan düzende sıralanır.

    Aynı sorumlu ve aynı kapsama sahip için rol atamalarını gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

    Sütun Açıklama
    PrincipalId Yerleşik rollere atanan sorumlunun kimliği.
    Kapsam Yerleşik rol atamalarının kapsamı.
    count_ Aynı sorumluya ve aynı kapsama sahip yerleşik rol atamalarının sayısı.
    AllRD Yerleşik rollerin kimliği ve adı.
  4. Ayrıntılar bölmesini açmak için bir satırda Ayrıntılara bakın'ı seçin.

    Aynı sorumlu ve aynı kapsama sahip rol atamalarını gösteren Ayrıntılar bölmesinin ekran görüntüsü.

  5. Özel bir rolde birleştirilebilecek yerleşik rolleri görmek için AllRD'yi kullanın.

  6. Yerleşik roller için eylemleri ve veri eylemlerini listeleyin. Daha fazla bilgi için bkz. Azure rol tanımlarını veya Azure yerleşik rollerini listeleme

  7. Yerleşik roller olarak tüm eylemleri ve veri eylemlerini içeren özel bir rol oluşturun. Özel rol oluşturmayı kolaylaştırmak için, yerleşik rollerden birini kopyalayarak işe başlayabilirsiniz. Daha fazla bilgi için bkz . Azure portalını kullanarak Azure özel rolleri oluşturma veya güncelleştirme.

  8. Asıl kimlikten asıl adı alın.

  9. Erişim denetimi (IAM) sayfasını rol atamalarıyla aynı kapsamda açın.

  10. Sorumluya yeni özel rolü atayın. Daha fazla bilgi edinmek için bkz. Azure portal kullanarak Azure rolleri atama.

    Artık yerleşik rol atamalarını kaldırabilirsiniz.

  11. Aynı kapsamdaki Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.

  12. Sorumlu ve yerleşik rol atamalarını bulun.

  13. Yerleşik rol atamalarını sorumludan kaldırın. Daha fazla bilgi için, bkz. Azure rol atamalarını kaldırma.

Çözüm 4 - Rol atamalarını uygun hale getirme

Abonelikteki rol atamalarının sayısını azaltmak ve Microsoft Entra Id P2'niz olması için rol atamalarını kalıcı olarak atanmak yerine Microsoft Entra Privileged Identity Management'ta uygun hale getirin.

Çözüm 5 - Ek abonelik ekleme

Bir abonelik daha ekleyin.

Belirti - Yönetim grubu kapsamında başka rol ataması oluşturulamıyor

Yönetim grubu kapsamında rol atayamazsınız.

Neden

yönetim grubu başına en fazla 500 rol ataması Azure desteği. Bu sınır abonelik başına rol ataması sayısı sınırından faklıdır.

Not

Yönetim grubu başına 500 rol ataması sınırı sabittir ve artırılamaz.

Çözüm

Yönetim grubundaki rol atamalarının sayısını azaltmayı deneyin. Olası seçenekler için bkz . Belirti - Başka rol ataması oluşturulamıyor. Sorguların yönetim grubu düzeyindeki kaynakları alması için sorgularda aşağıdaki değişikliği yapmanız gerekir:

Replace

| where id startswith "/subscriptions"

With

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

Belirti - Başka rol tanımı oluşturulamıyor

Yeni bir özel rol oluşturmaya çalıştığınızda aşağıdaki iletiyi alırsınız:

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

Neden

Azure desteği dizinde en fazla 5000 özel rol vardır. (21Vianet tarafından sağlanan Microsoft Azure için sınır 2000 özel roldür.)

Çözüm

Kullanılmayan Azure özel rollerini bulmak ve silmek için bu adımları izleyin.

  1. Azure portalında oturum açın ve Azure Kaynak Grafı Gezgini'ni açın.

  2. Kapsam'ı seçin ve sorgunun kapsamını Dizin olarak ayarlayın.

    Kapsam seçimini gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

  3. Herhangi bir rol ataması olmayan tüm özel rolleri almak için aşağıdaki sorguyu çalıştırın:

    Bu sorgu etkin rol atamalarını denetler ve Microsoft Entra Privileged Identity Management'ta uygun özel rol atamalarını dikkate almaz. Uygun özel rol atamalarını listelemek için Microsoft Entra yönetim merkezini, PowerShell'i veya REST API'yi kullanabilirsiniz. Daha fazla bilgi için bkz . Get-AzRoleEligibilityScheduleInstance veya Rol Uygunluğu Zamanlama Örnekleri - Kapsam Listesi.

    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
    

    Aşağıda sonuçların bir örneği gösterilmektedir:

    Rol atamaları olmadan özel rolleri gösteren Azure Kaynak Grafı Gezgini'nin ekran görüntüsü.

    Sütun Açıklama
    RoleDefinitionId Kullanılmayan özel rolün kimliği.
    RoleDefinitionName Kullanılmayan özel rolün adı.
    Kapsam Kullanılmayan özel rol için atanabilir kapsamlar .
  4. Kapsamı (genellikle abonelik) açın ve ardından Erişim denetimi (IAM) sayfasını açın.

  5. Tüm yerleşik ve özel rollerin listesini görmek için Roller sekmesini seçin.

  6. Tür filtresinde CustomRole'ı seçerek yalnızca özel rollerinizi görün.

  7. Silmek istediğiniz özel rol için üç noktayı (...) ve ardından Sil'i seçin.

    Silinmek üzere seçilebilen özel rollerin listesinin ekran görüntüsü.

Sonraki adımlar