SCIM ile kullanıcı sağlama
Kimlik sağlayıcınız QueryProxy kullanıcılarını SCIM 2.0 ile oluştursun, askıya alsın, grupları eşitlesin. Token'lar, desteklenenler, gruplardan takım rolleri.
SCIM 2.0, kimlik sağlayıcınızın QueryProxy kullanıcılarını kendi başına yönetmesini sağlar: biri ekibe katılınca kullanıcıyı oluşturur, profili günceller, biri ayrılınca hesabı askıya alır ve grup üyeliklerini eşitler. Bu, tek oturum açmayı tamamlar: oturum açma “şimdi kim girebilir” sorusunu yanıtlar, SCIM ise girişler arasında erişimi geri alır. SCIM olmadan, sağlayıcıda kaldırılan biri açık QueryProxy oturumu bitene kadar içeride kalır.
SCIM varsayılan olarak kapalıdır. Kapalıyken /scim/v2 altındaki her yol
404 döner.
Açın
QUERYPROXY_SCIM_ENABLED=true
Değiştirdikten sonra konteynerleri yeniden başlatın. Ardından sağlayıcıyı şu adrese yöneltin:
https://queryproxy.example.com/scim/v2
Bu adres APP_URL artı /scim/v2’dir. QueryProxy application/scim+json ile
yanıt verir; yeteneklerini /scim/v2/ServiceProviderConfig altında, yanında
/scim/v2/Schemas ve /scim/v2/ResourceTypes ile bildirir.
SCIM token’ları
Sağlayıcı, SCIM için üretilmiş bir bearer token ile doğrulanır. Bu bir kişisel erişim token’ı değildir; ayrı oluşturulur ve ayrı iptal edilir.
Sistem yöneticisi olarak web arayüzünde Administration → SCIM
(/settings/scim) sayfasından oluşturun. Sayfa uç nokta URL’sini gösterir,
token’ları (ad, oluşturan, son kullanım, durum) listeler, oluşturur ve iptal
eder. Token değeri bir kez gösterilir ve yalnızca kimliğinizi yeniden
doğruladıktan sonra: parola, TOTP kodu ya da yalnızca SSO kullanan yönetici için
son 15 dakika içinde yapılmış bir SSO girişi; API token’larıyla aynı kural.
Doğrulama için sağlayıcıya gönderilen SSO’lu yönetici işlem sonunda SCIM
sayfasına döner. SCIM kapalıyken sayfa nasıl açılacağını anlatır; var olan
token’lar listede kalır ve iptal edilebilir, böylece sızmış bir token her an
kapatılabilir.
Komut satırından da olur:
php artisan queryproxy:scim-token create --name=entra --by=admin@example.com
php artisan queryproxy:scim-token list
php artisan queryproxy:scim-token revoke --id=3 --by=admin@example.com
--by, denetim günlüğü için yöneticinin e-postasıdır. Token qpscim_ ile başlar.
QueryProxy yalnızca SHA-256 özetini saklar; kaybolan token yeniden gösterilemez,
iptal edip yenisini oluşturun.
Geçerli token olmadan gelen istek, SCIM hata gövdesiyle 401 alır. Tekrarlanan
başarısızlıkların etkisi için bkz. Hız sınırları.
Neler desteklenir
| Kaynaklar | Users ve Groups |
| İşlemler | GET (tekil ve liste), POST, PUT, PATCH, DELETE |
| Filtre | Kullanıcılarda userName, externalId, id ve emails.value; gruplarda displayName, externalId ve id üzerinde eq |
| Sayfalama | startIndex ve count, sayfa başına en çok 200 kaynak |
| Desteklenmez | toplu (bulk) işlemler, sıralama, ETag, parola değiştirme |
Hatalar SCIM Error şemasındadır. Beklenmeyen bir arıza, o şemada 500 döner ve
iç nedeni gövdeye yazmaz.
Kullanıcılar
- Oluşturma.
POST /Usersparolasız bir hesap açar. Kullanıcı SSO ile girer; ilk girişte sağlayıcı e-posta adresini doğrulanmış bildiriyorsa QueryProxy hesabı e-postaya göre sağlayıcıya bağlar (bkz. Tek oturum açma sayfasındaki ilk giriş ve bağlama bölümü).userNamee-posta değilse, örneğin Entra ID kullanıcı asıl adı (UPN) ise,emailsiçindeki birincil adres kimlik olur;userNameeşleştirme için saklanır. - Güncelleme.
PUTvePATCHadı, e-posta adresini ve aktiflik bayrağını değiştirir.activealanını içermeyen birPUTmevcut durumu korur. QueryProxy’nin işine yaramayan yollar (unvan, enterprise eklentisi) sağlayıcılar her eşitlemede gönderdiği için reddedilmez, yok sayılır. Tanıdığı bir yol için yanlış değer400veinvalidValuealır. Entra ID’nin boolean yerine gönderdiği"True"ve"False"metinleri kabul edilir. - Askıya alır, silmez.
active=falseveDELETEkullanıcıyı askıya alır: açık oturumlar ve kişisel erişim token’ları hemen çalışmaz olur, hesap giriş yapamaz. Hiçbir şey silinmez.DELETEsonrasında kullanıcı durur veactive=falseile okunur. - Askıyı kaldırma.
active=trueyalnızca SCIM’in kendi koyduğu askıyı kaldırır. Bir yönetici hesabı elle askıya aldıysa SCIM onu askıda bırakır ve denetim kaydı yazmaz. SCIM’in zaten askıya aldığı hesabı bir yönetici de askıya alırsa askıyı yönetici devralır ve SCIM artık kaldıramaz. - Adlar benzersiz olmalı. Başka bir hesaba ait
userNameya da e-posta adresi409veuniquenessdöndürür.
SCIM yalnızca kendi oluşturduğu kullanıcıları ve SSO ile sağlayıcıya zaten
bağlanmış kullanıcıları yönetir. Break-glass yöneticileri dahil yerel hesaplar
ona görünmez: bunlara GET, PATCH ve DELETE 404 döner, aynı e-postayla
kullanıcı oluşturmak 409 döner. Çalınmış bir SCIM token’ı bu yüzden acil durum
hesabınızı askıya alamaz ya da yeniden adlandıramaz. SCIM sistem yöneticisi
bayrağını da asla koymaz.
SCIM’in açtığı hesap SSO hesabı sayılır. Sıfırlama bağlantısıyla parola almaz ve yöneticinin Reset password işlemi onu reddeder. Bkz. Tek oturum açma.
Gruplar ve takım rolleri
Groups üyeleriyle birlikte QueryProxy’de saklanır. Tek oturum açmanın kullandığı
QUERYPROXY_OIDC_ROLE_MAP ile takım rolüne dönüşür; bkz.
Rol eşlemesi. Hangi sağlayıcı grubunun
hangi takımda hangi rol olduğunu söyleyen tek yer bu haritadır.
Bir SCIM grubu, rol haritasındaki bir girdiyle displayName ya da
externalId üzerinden eşleşir. Yazdığınız değeri hangisinin taşıdığı
sağlayıcıya bağlıdır:
- Entra ID. Microsoft’un SCIM başvurusu grubun
objectIddeğeriniexternalId’ye eşler (Microsoft’un SCIM kılavuzu), Entra IDgroupsclaim’ine de nesne kimliklerini koyar; bu yüzden rol haritası nesne kimliğiyle yazılır:1f9c0c2e-0000-0000-0000-000000000000:payments:dba. Güvenmeden önce kurumsal uygulamanızın grup öznitelik eşlemesine bakın. - Grup adını
displayNameolarak gönderen bir sağlayıcıda ad ile yazılmış girdi eşleşir:platform-dba:payments:dba.
Üyelik değişince olanlar:
- QueryProxy, etkilenen kullanıcının rollerini yalnızca değişen grupla eşleşen rol haritası girdilerinin adlandırdığı takımlarda yeniden hesaplar. Başka takımlardaki roller, girişte ya da elle verilmiş olsalar da, değişmez.
- Bir takımda kullanıcının rolü, tüm SCIM gruplarındaki en yüksek roldür (önce
dba, sonradeveloper, sonraauditor). - Hiçbir girdinin eşleşmediği grup kabul edilir ve rollere etkisi olmaz.
- Bir grubu yeniden adlandırmak ya da
externalId’sini değiştirmek tüm üyeleri yeniden hesaplar. Bu iş istek içinde çalışır; binlerce üyeli bir grubun adını değiştirmek yavaştır. - Her rol değişikliği,
viadeğeriscimolanuser.role_syncedolarak yazılır.
SCIM de oturum açma da rol yazar. Sağlayıcı ID token’da SCIM’den farklı gruplar bildirirse son yazan kazanır; iki kaynağı tutarlı tutun. Rol haritası yoksa SCIM kullanıcı oluşturup askıya alabilir ama takım rolü vermez.
Hız sınırları
QUERYPROXY_SCIM_RATE_LIMIT (varsayılan 300) her token’ın dakikadaki istek
bütçesidir. Aynı zamanda bir adresin dakikada yapabileceği başarısız doğrulama
sayısıdır: aşılınca o adres 401 yerine Retry-After ile 429 alır.
| Değişken | Varsayılan | Anlamı |
|---|---|---|
QUERYPROXY_SCIM_ENABLED |
false |
/scim/v2’yi sunar; kapalıyken her SCIM yolu 404 döner |
QUERYPROXY_SCIM_RATE_LIMIT |
300 |
Her token için dakikadaki istek; adres başına başarısız doğrulama sayısı |
Denetim günlüğünde
| Olay | Ne zaman |
|---|---|
scim.user_provisioned |
Kullanıcı oluşturuldu |
scim.user_updated |
Kullanıcı bilgileri değişti |
scim.user_suspended |
active=false ya da DELETE |
scim.user_unsuspended |
SCIM kendi koyduğu askıyı kaldırdı |
scim.group_synced |
Bir grup ya da üyeleri değişti |
scim.token_created, scim.token_revoked |
SCIM token’ı oluşturuldu ya da iptal edildi |
Yükseltme
Migration’ları her zamanki gibi çalıştırın. SCIM tablolarını (scim_tokens,
scim_groups, scim_group_user) ve users üzerinde dört sütunu ekler; hepsi
geri alınabilir. QUERYPROXY_SCIM_ENABLED=true yapana kadar hiçbir şey değişmez.
Sonraki adımlar
- Oturum açma tarafı ve rol eşlemesi için Tek oturum açma.
- Öbür token türü için REST API ve token’lar.
- Olayları dışarı aktarmak için Denetim kaydı ve SIEM.