A laptop displaying code editor with a motivational mug that reads 'Make It Happen' on a workspace.

İ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ışı:

  1. Kullanıcı aka.ms/setupsecurityinfo’ya gidiyor
  2. “Add sign-in method” → Security key
  3. YubiKey’i takıp PIN belirliyor
  4. 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

  1. 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.
  2. Break-glass account unutmak: Tenant kilitlenirse açacak hesap olmazsa Microsoft support (~~saatler). 2 break-glass account, FIDO2 key, kasada.
  3. 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.

🇹🇷 Türkçe🇬🇧 English🇩🇪 Deutsch🇫🇷 Français🇸🇦 العربية🇷🇺 Русский🇪🇸 Español