Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
Prerequisites
- Azure Kaynak Grafı sorgularını çalıştırmak için okuyucu rolü.
- Rol atamaları eklemek veya kaldırmak için Rol Tabanlı Erişim Kontrolü Yöneticisi rolü.
- Rol atamaları eklemek, rol atamalarını kaldırmak veya özel rolleri silmek için Kullanıcı Erişimi Yöneticisi rolü.
- Grup oluşturmak için Grup Yöneticisi veya Kullanıcı Yöneticisi rolü.
Note
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)
Cause
Azure, abonelik başına en fazla 4000 rol atamasını destekler. Bu sınır, abonelik, kaynak grubu ve kaynak kapsamlarındaki rol atamalarını içerir, ancak yönetim grubu kapsamındakileri içermez. Gelecekte zamanlanan uygun rol atamaları ve diğer rol atamaları bu sınıra dahil edilmez. Abonelikteki rol atamalarının sayısını azaltmayı denemelisiniz.
Note
Abonelik başına 4000 rol ataması sınırı sabittir ve artırılamaz.
Rol atamalarının sayısını almak için grafiği Azure portalındaki Erişim denetimi (IAM) sayfasında görüntüleyebilirsiniz. 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.
Azure portalında oturum açın ve Azure Kaynak Grafı Gezgini'ni açın.
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.
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.
Farklı sorumlular için aynı role ve aynı kapsama sahip rol atamalarını almak amacıyla 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 koşullarla rol ataması yönetimini devrediyorsanı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_ descAş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.
Birden çok rol atamasını bir grup için tek bir rol atamasıyla değiştirmek istediğiniz satırı belirleyin.
Ayrıntılar bölmesini açmak için satırda Ayrıntıları göster'i seçin.
Column Description RoleDefinitionId Atanmış rolün şu anki ID'si. Scope Rol atamasının kapsamı, bir abonelik, kaynak grubu veya kaynak olacaktır. RoleDefinitionName Şu anda atanmış rolün adı. count_ Aynı role ve aynı kapsamda atanan sorumluların sayısı. AllPrincipals Aynı kapsam ve aynı role atanan temel kimliklerin listesi. Rol ve kapsamı almak için RoleDefinitionId, RoleDefinitionName ve Scope kullanın.
Aynı rol atamasına sahip asıl kimliklerin listesini almak için AllPrincipals kullanın.
Bir Microsoft Entra grubu oluşturun. Daha fazla bilgi için bkz. Microsoft Entra gruplarını ve grup üyeliğini yönetme.
AllPrincipals'dan sorumluları gruba ekleyin.
Sorumluları toplu olarak ekleme hakkında bilgi için bkz. Microsoft Entra ID'de grup üyelerini toplu ekleme.
Rolü, aynı kapsamda oluşturduğunuz gruba atayın. Daha fazla bilgi için bkz. Azure portalını kullanarak Azure rolleri atama.
Artık asıl tabanlı rol atamalarını bulabilir ve kaldırabilirsiniz.
Asıl kimlik numaralarından asıl adları alın.
- Azure portalını kullanmak için bkz. Kullanıcının profil bilgilerini ve ayarlarını ekleme veya güncelleştirme.
- PowerShell'i kullanmak için bkz. Get-MgUser.
- Azure CLI'yi kullanmak için az ad user show komutunu kullanın.
Erişim denetimi (IAM) sayfasını rol atamalarıyla aynı kapsamda açın.
Rol atamaları sekmesini seçin.
Rol atamalarını filtrelemek için Rol filtresini seçin ve ardından rol adını seçin.
Asıl tabanlı rol atamalarını bulun.
Grup tabanlı rol atamanızı da görmeniz gerekir.
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 veriyorsa, daha düşük bir kapsamdaki yedekli rol atamalarının kaldırılabileceğini tanımlamak için bu adımları izleyin.
Azure portalında oturum açın ve Azure Kaynak Grafı Gezgini'ni açın.
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.
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.
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 koşullarla rol ataması yönetimini devrediyorsanı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_ descAş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.
Column Description RoleDefinitionId Atanmış rolün şu anki ID'si. RoleDefinitionName Şu anda atanmış rolün adı. PrincipalId Rol atanmış esas kişinin kimliği. count_ Aynı role ve aynı sorumluya sahip rol atamaları için farklı kapsamların sayısı. Scopes Aynı role ve aynı sorumluya sahip rol atamaları için kapsamlar. Yedekli rol atamalarını kaldırmak istediğiniz satırı belirleyin.
Ayrıntılar bölmesini açmak için bir satırda Ayrıntılara bakın'ı seçin.
Rol ve asıl kimliği almak için RoleDefinitionId, RoleDefinitionName ve PrincipalId kullanın.
Aynı role ve aynı sorumluya ait kapsamların listesini almak için Kapsamlar'ı kullanın.
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 asgari ayrıcalık en iyi uygulamalarını takip etmelisiniz. Ü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 Sanal Makine Katkıda Bulunan rol ataması gerekli erişimi sağladığında, kullanıcının abonelik kapsamındaki Sanal Makine Katkıda Bulunan rol ataması gerekli olmayabilir.
Asıl kimlikten asıl adı alın.
- Azure portalını kullanmak için bkz. Kullanıcının profil bilgilerini ve ayarlarını ekleme veya güncelleştirme.
- PowerShell'i kullanmak için bkz. Get-MgUser.
- Azure CLI'yi kullanmak için az ad user show komutunu kullanın.
Kaldırmak istediğiniz rol atamasının kapsamındaki Erişim denetimi (IAM) sayfasını açın.
Rol atamaları sekmesini seçin.
Rol atamalarını filtrelemek için Rol filtresini seçin ve ardından rol adını seçin.
Sorumluyu bulun.
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.
Azure portalında oturum açın ve Azure Kaynak Grafı Gezgini'ni açın.
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.
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 koşullarla rol ataması yönetimini devrediyorsanı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_ descAş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.
Column Description PrincipalId Yerleşik rollere atanan sorumlunun kimliği. Scope Yerleşik rol atanımları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ı. Ayrıntılar bölmesini açmak için bir satırda Ayrıntılara bakın'ı seçin.
Özel bir rolde birleştirilebilecek yerleşik rolleri görmek için AllRD'yi kullanın.
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.
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.
Asıl kimlikten asıl adı alın.
- Azure portalını kullanmak için bkz. Kullanıcının profil bilgilerini ve ayarlarını ekleme veya güncelleştirme.
- PowerShell'i kullanmak için bkz. Get-MgUser.
- Azure CLI'yi kullanmak için az ad user show komutunu kullanın.
Erişim denetimi (IAM) sayfasını rol atamalarıyla aynı kapsamda açın.
Sorumluya yeni özel rolü atayın. Daha fazla bilgi için bkz. Azure portalını kullanarak Azure rolleri atama.
Artık yerleşik rol atamalarını kaldırabilirsiniz.
Aynı kapsamdaki Erişim denetimi (IAM) sayfasında Rol atamaları sekmesini seçin.
Temel ve dahili rol atamalarını bulun.
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 varsa, rol atamalarını Microsoft Entra Privileged Identity Management'ta kalıcı olarak atamak yerine uygun hale getirin.
Çözüm 5 - Ek abonelik ekleme
Ek abonelik ekleyin.
Belirti - Yönetim grubu kapsamında başka rol ataması oluşturulamıyor
Yönetim grubu kapsamında rol atayamazsınız.
Cause
Azure, yönetim grubu başına en fazla 500 rol atamasını destekler. Bu sınır, abonelik başına rol ataması sınırından farklıdır.
Note
Yönetim grubu başına 500 rol ataması sınırı sabittir ve artırılamaz.
Solution
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)
Cause
Azure, bir dizinde en fazla 5000 özel rolü destekler. (21Vianet tarafından sağlanan Microsoft Azure için sınır 2000 özel roldür.)
Solution
Kullanılmayan Azure özel rollerini bulmak ve silmek için bu adımları izleyin.
Azure portalında oturum açın ve Azure Kaynak Grafı Gezgini'ni açın.
Kapsam'ı seçin ve sorgunun kapsamını Dizin olarak ayarlayın.
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), ScopeAşağıda sonuçların bir örneği gösterilmektedir:
Column Description RoleDefinitionId Kullanılmayan özel rolün kimliği. RoleDefinitionName Kullanılmayan özel rolün adı. Scope Kullanılmayan özel rolün atanabilir kapsamları. Kapsamı (genellikle abonelik) açın ve ardından Erişim denetimi (IAM) sayfasını açın.
Tüm yerleşik ve özel rollerin listesini görmek için Roller sekmesini seçin.
Tür filtresinde CustomRole'ı seçerek yalnızca özel rollerinizi görün.
Silmek istediğiniz özel rol için üç noktayı (...) ve ardından Sil'i seçin.