İstanbul’da 620 çalışanlı bir inşaat + perakende holdingi, eski “şifre + 90 günde değiştir” modelinden Entra ID modern kimlik yönetimine geçişi tamamladı. 6 aylık programın sonunda phishing-based account takeover sıfıra indi, helpdesk şifre sıfırlama biletleri %78 azaldı, denetim raporu temiz çıktı. Bu yazı sahadaki teknik kararlar.
Başlangıç Durumu
- 620 user, 38 service principal, 24 break-glass adayı admin
- MFA: sadece BT departmanı (12 kişi)
- Conditional Access: 0 policy
- PIM: kullanılmıyor, tüm admin’ler permanent
- Phishing simülasyon (KnowBe4): kurum başarısızlık oranı %32
- Helpdesk: ayda ~~140 şifre sıfırlama bileti
Conditional Access Policy Tasarımı
Toplam 14 policy tasarlandı. Önemli olanlar:
Policy 1: Block Legacy Authentication
POP3, IMAP, SMTP basic auth modern security’yi by-pass eder. Tamamen block:
Users: All
Cloud apps: All
Conditions:
Client apps: Exchange ActiveSync clients, Other clients
Grant: Block access
Policy 2: Require MFA for All Users
Users: All users
Exclude: Break-glass accounts (×2)
Cloud apps: All
Conditions:
Locations: Exclude trusted IPs (corp HQ, branch offices)
Grant: Require MFA
Policy 3: Require Compliant Device for M365
Sadece Intune-managed compliant cihazlardan M365’e erişim:
Users: All employees
Cloud apps: Office 365
Grant: Require device to be marked as compliant
OR Require Hybrid Azure AD joined device
Policy 4: Block High-Risk Sign-Ins
Identity Protection ile risk-based:
Users: All
Cloud apps: All
Conditions:
Sign-in risk: High
Grant: Block access
Policy 5: Require Password Change on Medium Risk
Conditions:
User risk: Medium
Grant: Require password change + MFA
PIM (Privileged Identity Management)
24 admin’in hepsi permanent rol’den eligible’a çevrildi:
# Global Admin role
az rest --method PUT
--url "https://graph.microsoft.com/v1.0/roleManagement/directory/roleEligibilityScheduleRequests"
--body '{
"action": "AdminAssign",
"principalId": "{user-id}",
"roleDefinitionId": "62e90394-69f5-4237-9190-012177145e10",
"directoryScopeId": "/",
"scheduleInfo": {
"startDateTime": "2026-04-01T00:00:00Z",
"expiration": { "type": "AfterDuration", "duration": "P365D" }
}
}'
Activation rules:
- Max activation: 8 saat
- MFA on activation: Required
- Justification: Required
- Approval: Required (Global Admin için 2 onaylayan)
- Notifications: Email to security team
FIDO2 Passwordless Geçişi
Pilot 50 kullanıcıyla başlandı. YubiKey 5C dağıtıldı, kullanıcı kayıt akışı:
- Kullanıcı aka.ms/setupsecurityinfo’ya gidiyor
- “Add sign-in method” → Security key
- YubiKey’i takıp PIN belirliyor
- Sonraki sign-in’de password yerine YubiKey + PIN kullanıyor
Pilot sonuçları başarılı: 6 ay sonunda 280 user passwordless. Helpdesk şifre sıfırlama biletleri ~~%78 düştü.
Identity Protection: Risk-Based Detection
Entra ID Identity Protection (P2 lisans gerektirir) tipik tehditleri otomatik tespit:
- Atypical travel (5 dk önce İstanbul’dan, şimdi Berlin’den login)
- Anonymous IP (Tor, VPN)
- Malware-linked IP address
- Leaked credentials (Microsoft dark web monitoring)
- Password spray attempt
- Unfamiliar sign-in properties
Risk level (Low/Medium/High) → Conditional Access ile aksiyon (require MFA / require password change / block).
Hybrid Identity: AD Connect Sync
On-prem AD’deki 620 user Entra ID’ye sync. Password Hash Sync (PHS) modunda — on-prem AD down olsa bile kullanıcı M365’e giriş yapabiliyor.
Sync attributes:
- userPrincipalName, mail, givenName, surname
- department, manager, employeeId
- groups (security + distribution)
- Password hash
Filter:
- Exclude OU "Service Accounts"
- Exclude disabled users
- Sync only "Employees" OU
App Registration ve Service Principal Audit
38 SP’den 14’ü kullanılmıyordu (legacy migration kalıntısı). Audit script:
az rest --method GET
--url "https://graph.microsoft.com/v1.0/servicePrincipals"
--query "value[].{name:displayName,id:id,createdDate:createdDateTime}"
# Sign-in log'una bak (son 90 gün hiç kullanılmayan)
az monitor activity-log list --start-time 2026-01-01
--query "[?caller=='*service*'].caller" -o tsv | sort -u
Kullanılmayan SP’ler silindi. Aktif SP’lerin secret’ları federated credential’a geçirildi (rotation derdi yok).
Sonuçlar
| Metrik | Önce | Sonra |
|---|---|---|
| MFA enrolled user | %2 (BT) | %100 |
| Permanent admin | 24 | 0 (hepsi eligible) |
| Helpdesk şifre biletleri (aylık) | ~~140 | ~~30 |
| Phishing simülasyon başarısızlık | %32 | %8 |
| Account takeover olayı (12 ay) | 3 | 0 |
| Identity Protection alarm/ay | — | ~~12 (çoğu legitimate travel) |
Maliyet
| Kalem | Aylık (USD) |
|---|---|
| Entra ID P2 lisans (620 user × $9) | 5.580 |
| YubiKey 5C (one-time, 280 adet × $55) | 15.400 (one-time) |
| Pilot eğitim + program PM | ~~one-time $18.000 |
Karşılığında: 1 başarılı account takeover engellense direkt zarar (ransom + downtime + müşteri kaybı) genelde $200K+. Yatırım 1 olayda kendini ödüyor.
Sahada Düşülen Üç Tuzak
- Conditional Access policy’leri test etmeden enforce etmek: Yanlış yazılmış policy tüm kullanıcıyı kilitler. “Report-only” mode’da 1 hafta gözlem zorunlu.
- Break-glass account unutmak: Tenant kilitlenirse açacak hesap olmazsa Microsoft support (~~saatler). 2 break-glass account, FIDO2 key, kasada.
- PIM activation süresini çok uzun tutmak: 24 saat aktivasyon güvenlik anlamını kaybediyor. Max 8 saat, justification şart.
CloudSpark olarak Microsoft Entra ID modernizasyon projeleri, Conditional Access tasarımı, PIM kurulumu, FIDO2 passwordless geçişi ve identity governance için danışmanlık veriyoruz.



