vCenter ortamındaki tüm permission atamalarını analiz ederek "kim neye erişiyor, propagation nereye kadar gidiyor, anomali var mı?" sorularını cevaplayıp denetim raporu üretir.
- Bankalar ve finans kurumları (BDDK/SPK denetimleri)
- Enterprise VMware ortamları
- Güvenlik ve compliance ekipleri
- PowerShell 7.2+
- VMware.PowerCLI
- Active Directory entegrasyonu (opsiyonel, -CheckAD)
- Çıktı: HTML rapor, CSV, JSON
- Permission = Principal (user/group) + Role + Object + Propagate flag
- Object hiyerarşisi: vCenter → Datacenter → Cluster → Host → VM
- Global Permissions: tüm vCenter'lara uygulanır
- Propagation: alt objelere otomatik devralma
- Get-VIPermission ile tüm permission'ları topla
- Her permission için: Principal, Role, Object, ObjectType, Propagate, IsGroup, FullObjectPath
- Group membership expansion: AD grubu ise member'ları çöz
ANOMALY tipleri:
A) OverPrivileged — AdminRole outside of vCenter root Get-VIPermission | Where {$.Role -eq "Admin"} | Where {$.Entity.GetType().Name -ne "VCenterServer"} → Production VM'de Administrator rolü varsa CRITICAL
B) OrphanedPermission — Principal artık AD'de yok AD'de kullanıcı disabled veya deleted ama permission kalmış → WARN: potansiyel ghost access
C) DirectUserPermission — Group yerine direkt user atanmış Best practice: gruplar üzerinden yönet → INFO
D) PropagationAnomaly — Propagate=false olan izole permission'lar Genellikle kasıtlı ama audit trail gerektirir → INFO
E) ServiceAccountOverPrivilege — svc- prefix'li account'lara Admin rolü atanmışsa → HIGH
F) CrossDatacenterPermission — Bir user'ın birden fazla Datacenter'da permission'u varsa audit et → INFO
- Custom roller: ne yetkiler içeriyor?
- Kullanılmayan roller: hiç atanmamış roller
- En riskli roller: privilege count bazında sıralama
- En fazla permission'a sahip 10 kullanıcı/grup
- Bir objeye atanmış permission sayısı > 5 → WARN
- vCenter root'a direkt atama sayısı
[PSCustomObject]@{ Principal = "DOMAIN\username" PrincipalType = "User" | "Group" Role = "Admin" | "ReadOnly" | "CustomRole" ObjectName = "vm-prod-db-01" ObjectType = "VirtualMachine" | "Cluster" | "Datacenter" ObjectPath = "/DC-Istanbul/host/CLUSTER-01/esxi-01/vm-db-01" Propagate = $true | $false AnomalyType = $null | "OverPrivileged" | "OrphanedPermission" vb. Severity = "CRITICAL" | "HIGH" | "MEDIUM" | "LOW" | "INFO" AdStatus = "Active" | "Disabled" | "NotFound" | "NotChecked" LastLoginDays = 45 | $null }
-
Özet dashboard:
- Toplam permission sayısı
- Anomali dağılımı (pie chart SVG)
- Risk seviyesi özeti
- En riskli 5 principal
-
Anomali tablosu (filtreli, severity'ye göre sıralı)
-
Permission matrisi:
- Satırlar: Principal'lar
- Sütunlar: Object tiplerinden seçili (DC, Cluster, Host, VM)
- Cell'ler: Role adı, renkli
-
Role inventory tablosu
-
Remediation önerileri:
- Kaldırılması önerilen permission'lar listesi
- "Remove-VIPermission" PowerCLI komutları (hazır yapıştır)
- Read-only: araç hiçbir değişiklik yapmaz
- Sadece önerir, "remediation mode" tasarlanmadı
- AD sorgusu opsiyonel ve ayrı credential gerektirir
Bu araç hassas veri içerir (kim neye erişiyor). HTML rapor şifreli tutulmalı, --redact-principals flag ile kullanıcı adları maskelenebilir (dış paylaşım için).