Exchange RBAC Assignments hakkında detaylı analiz ve raporlama


Exchange Server ve Exchange Online, RBAC tarafından desteklenen yönetim denetimleriyle tanınır. Ayrıntılara büyük özen gösterilerek tasarlanan RBAC modeli, her bir sistem yöneticisinin veya kullanıcının ne yapabileceğini, ayrı ayrı cmdlet’e ve hatta parametre düzeyine kadar ayrıntılı bir şekilde kontrol etmenizi sağlar. Bu son derece yararlı olsa da, modelin esnekliği nedeniyle, bazen kuruluşta hangi izinlerin verildiğini takip etmek biraz zor olabilir.

Bu sorunu gidermek için, atanan rollerin ayrıntılı raporlarını hazırlamak üzere PowerShell’i kullanabilirsiniz. Örnek powershell komut dosyasını Technet ya da Github üzerinden indirebilirsiniz. Powershell komut dosyası AD PowerShell cmdlet’lerine dayanır ve bu nedenle Exchange Online üzerinde çalıştırılamaz. Bu nedenle bu makalede alternatif bir yöntem sunacağım.

Exchange RBAC nedir?

İlk olarak Exchange 2010’da tanıtılan Role Dayalı Erişim Denetimi, roller ve rol gruplarından oluşur. Rol, Exchange yöneticisinin gerçekleştirebileceği bir dizi görev tarafından tanımlanır. Bir Exchange yöneticisine bir rol atandığında, o rol içinde izin verilen görevleri gerçekleştirme iznine sahip olur. Ancak birçok yöneticinin çok sayıda sorumluluğu olduğu için bunlara rol grupları atanabilir. Bir rol grubu, yöneticiye belirli bir rol grubunda yer alan çeşitli roller tarafından tanımlanan görevleri gerçekleştirme izni verir.

Her şey başlangıçta çok kafa karıştırıcı gelsede RBAC modelinin arkasındaki temel ilkeleri anladıktan sonra, sağlamlığını ve özelleştirilebilirliğini görebilirsiniz. Exchange Online’da, RBAC modeli On-premise sürümlere göre biraz daha sınırlıdır. Ancak Azure AD de dahil olmak üzere hizmetin diğer bölümlerinde elde ettiğimiz durumdan çok daha ileridedir.

Kimin izinleri olduğunu bulma

Bazı yönetici işlevlerinin mevcut olması, kullanımda olduğu anlamına gelmez. Aynısı tüm Exchange yönetim rolleri için de geçerlidir. Rol atamaları, rol ile rolün bir parçası olarak kullanılabilen cmdlet’lere, komut dosyalarına veya araçlara erişme izni verilen güvenlik ilkeleri arasındaki linki etkin bir şekilde temsil eder. Belirli bir rol için hiçbir rol ataması yoksa, kuruluştaki hiç kimse etkinleştirdiği yönetim görevlerine erişemez. Genel olarak, bu rolleri raporunuzdan çıkarabilirsiniz. Ancak, ayrıntılı rapor almak istiyorsanız aşağıdaki Powershell komutunu kullanabilirsiniz.

Get-ManagementRole | ? { !(Get-ManagementRoleAssignment -Role $_.Guid.Guid) -and !$_.IsEndUserRole }

Yukarıda, tüm rolleri listeliyoruz, daha sonra her rol için herhangi bir rol atamasının olup olmadığını kontrol ediyoruz. Farklı OWA özelliklerini yönetenler gibi “end user” rollerini de hariç tutuyoruz. Sonuçta ortaya çıkan liste yalnızca “unassigned” rolleri döndürür. Yine, şu anda hiç kimse bu rollere atanmadığından, “in use” değildirler ve bunları görmezden gelebilirsiniz. Sonuç olarak, şirkette şu anda verilen izinlere genel olarak bakmak istiyorsanız, Get-ManagementRoleAssignment cmdlet’i başlangıç ​​noktanız olmalıdır.

Artık belirli bir rol için atamaları nasıl listeleyeceğimizi biliyoruz. Ancak, roller security groups’lara devredilebildiği veya role groups ve role assignment policies’lerde toplanabileceği için bu, kime erişim izni verildiği sorusunu tam olarak yanıtlamaz. Tek tek kullanıcıları listelemek istiyorsak, ilgili nesneyi daha da genişletmeliyiz. Ancak daha geniş bir senaryoyu ele almaya çalışıyoruz. Bu nedenle User, SecurityGroup ve PartnerLinkedRoleGroup türündeki atamaları da hesaba katmamız gerekiyor. Buna karşılık, gerektiğinde grup üyeliğini genişletmeyi ve bireysel kullanıcıları listelemeyi hedeflemeliyiz.

On-premise (şirket içi) yapılarda, grup genişletme işlemi AD araçları aracılığıyla kolayca gerçekleştirilir. Bununla birlikte, Office 365’te işler o kadar basit değildir ve genel olarak, bu makalede anlatılanlar gibi çözümler kullanmalıyız. Microsoft mühendisleri, Role assignments işlemlerinde kullanabileceğimiz daha kolay bir yöntem, yani -GetEffectiveUsers switch parametresini geliştirdiler. Parametrenin yaptığı, her bir nested grubun tekrarlı olarak işlenmesi ve tek tek kullanıcıların bir listesini döndürmektir. Aşağıda bir örneğini görebilirsiniz.

İlk cmdlet, Journaling rolüne doğrudan atanan kişileri listeler. İlk cmdlet, yalnızca Journaling rolüne doğrudan atanan kişileri listeler. Bu girdilerin üçü, yani Compliance management” ve “Organization management” rol grupları ve “MESGtop” security grubunun ek üyeleri ve hatta bazı nedted grupları vardır. Üyelerin tam listesi, kullanıcı başına bir giriş olan GetEffectiveUsers anahtarıyla cmdlet’i yeniden çalıştırdığımızda döndürülür. Raporu oluşturmak için neredeyse tek ihtiyacımız olan şey budur.

Başka bir yöntem, Get-ManagementRoleAssignment cmdlet’ini kullanmaktır. Cmdlet, yalnızca doğrudan atamaları değil, aynı zamanda nested gruplar da dahil olmak üzere tüm atamaları listelemek için kullanılabilir. Ancak, çoğu şirkette bu tür nesnelerin sayısı rol atama sayısından daha fazla olduğundan, bu yöntem pek tercih edilmeyebilir. Örneği aşağıda görebilirsiniz.

Artık her bir kullanıcıyı ve atandıkları her rolü nasıl listeleyeceğimizi bildiğimize göre, tek yapmamız gereken çıktıyı hazırlamaktır. Tüm bu bilgileri bir CSV dosyasına dökebilir ve ardından gerektiği gibi filtrelemek ya da sıralamak için Excel’i kullanabilirsiniz.

Her atanan kişi hakkında ek bilgi sağlamanın yanı sıra, çıktıyı kullanıcıya göre gruplandırmak için PowerShell özelliklerini de kullanabiliriz. Ancak yukarıda belirtildiği gibi, herhangi bir gruplama, sıralama ve filtreleme işlemi gerçekleştirmek için Excel gibi araçları da kullanabilirsiniz. Komut dosyasından döndürülen çıktı aşağıda örneklenmiştir.

Ek parametreler;

  • – IncludeDelegatingAssignments
  • – IncludeRoleGroups
  • – IncludeUnassignedRoleGroups

Tüm bu parametreler kullanıldığında çıktı aşağıdaki gibi görünecektir.

Komut dosyasını TechNet Gallery veya GitHub‘dan indirebilirsiniz.

KAYNAKEXCHANGE