AuthZ (Yetkilendirme) Nedir?
AuthZ'nin tanımını, AuthN ve AuthZ arasındaki farkları, AuthZ'nin nasıl çalıştığını ve yetkilendirme için en iyi uygulamaları keşfedin.
AuthZ nedir ve AuthN'den nasıl farklıdır?
AuthZ, yetkilendirme için kısaltmadır. Yetkilendirme, kimlik doğrulama mekanizmasından ayrı bir mekanizmadır. Kimlik doğrulama, kim olduğunuzu tanımlarken, yetkilendirme belirli kaynaklara erişip erişemeyeceğinizi ve bu kaynaklar üzerinde hangi işlemleri gerçekleştirebileceğinizi belirler.
Gerçek dünya örneklerinde, kaynaklar yazılımlar, sistemler, belgeler, siparişler ve varlıkları içerebilir. Yetkilendirme, bu kaynaklara kimin ve hangi şartlar altında erişebileceğini belirleyerek ek bir kontrol katmanı ekler.
AuthZ nasıl çalışır?
Yetkilendirme, kimlik doğrulamadan ayrı bir süreçtir ama sıklıkla onunla bağlantılıdır. Örneğin, OAuth 2.0, OIDC ve SAML gibi standart protokoller, token tabanlı yetkilendirme mekanizmalarını içerir.
Token tabanlı bir yetkilendirme sisteminde, bir yetkilendirme sunucusu kullanıcılara bir erişim tokeni verir. Bu token, kullanıcıların belirli kaynaklara erişip erişemeyeceklerini belirleyen izinleri içerir.
İzinlerin doğrudan kullanıcılara atanması, özellikle daha detaylı koşullar gerektiğinde verimsiz olabilir. Örneğin, erişim, kullanıcının konumu gibi belirli koşullara bağlı olabilir ve bu da daha iyi izin yönetimi için erişim kontrol politikalar ını gerekli kılar.
Yetkilendirmenin nasıl çalıştığını gösteren adım adım üst düzey bir akış şu şekildedir:
- Kimlik doğrulama başlat: Kullanıcı, bir e-posta ve şifre kullanarak bir tanımlayıcı ve yöntem seçerek giriş yapar.
- Yetkilendirme isteği: Giriş yaptıktan sonra kullanıcı, kullanıcı kimliği ve rolleri gibi detayları içeren bir kaynak için erişim talep eder.
- Erişim kontrol doğrulaması: Sistem, isteği önceden tanımlanmış yetkilendirme politikalarına karşı kontrol eder, rol veya öznitelik tabanlı gibi kurallar.
- Yetkilendirme kararı: Sistem, politikalara ve izinlere göre erişim izni verilip verilmeyeceğini belirler.
OAuth 2.0 yetkilendirme isteği akışını detaylı anlamak için yetkilendirme isteği bölümüne göz atabilirsiniz.
Yetkilendirme türleri nelerdir?
Rol tabanlı erişim kontrolü ve nasıl çalıştığı
Rol Tabanlı Erişim Kontrolü (RBAC) erişimi yönetmek için rolleri kullanır. Her kullanıcıya bir veya daha fazla önceden tanımlanmış rol atanır ve her rol bir dizi izin içerir. RBAC'nin anahtarı, özneler (veya kullanıcılar), roller ve izinler arasındaki ilişkiyi anlamaktır.
Rol Tabanlı Erişim Kontrolünün (RBAC) nasıl çalıştığını anlamak için bilmeniz gerekenler:
- Özneler: Bunlar kullanıcılar veya
makine-makine uygulaması
gibi insan dışı varlıklar olabilir. - Roller: İşlev veya sorumlulukları temsil eder. Örneğin,
admin
üye
- İzinler: Belirli kaynaklar üzerindeki izin verilen işlemleri belirtir. Örneğin,
okuma: sipariş
.
Öznitelik tabanlı erişim kontrolü ve nasıl çalıştığı
Öznitelik Tabanlı Erişim Kontrolü (ABAC), yetkilendirmede yaygın olarak kullanılır ve rolleri aşan belirli bir varlığın özelliklerini kullanarak daha karmaşık senaryoları destekler.
Örneğin, Bir şirket, çalışanların iş rolüne, konumuna ve belgenin sınıflandırma seviyesine göre kontrollü erişim gerektiren küresel bir belge paylaşım platformunu yönetmektedir.
Öznitelikler aşağıdaki şekillerde tasarlanabilir:
- Kullanıcı öznitelikleri: Rol (Örneğin, “Yönetici,” “Mühendis”), konum (Örneğin, “ABD,” “Avrupa”).
- Kaynak öznitelikleri: Belge türü (Örneğin, “Mali Rapor,” “Tasarım Dosyası”), sınıflandırma seviyesi (Örneğin, “Gizli”).
- Ortam öznitelikleri: Erişim zamanı (Örneğin, “Mesai Saatleri İçinde”), cihaz türü (Örneğin, “Şirket Dizüstü Bilgisayarı”).
Ayrıca politika tabanlı erişim kontrolü (PBAC) gibi diğer erişim kontrol modelleri de vardır. Her modelin kendi güçlü ve zayıf yönleri vardır ve model seçimi kullanım durumunuza ve gereksinimlerinize bağlıdır.
AuthZ kullanım durumları ve örnekleri
B2C yazılımı
B2C yazılımları genellikle iş ihtiyaçlarına dayalı belirli roller gerektirir. Örneğin, bir kitapçı yönetim uygulaması, farklı sorumlulukları olan roller içerebilir, kaynakları ve hizmetleri yönetme gibi.
B2B çok kiracılı uygulama
B2B uygulamaları genellikle her kiracının bir kuruluşu temsil ettiği bir çok kiracılı mimari kullanır. Kuruluş içinde admin ve üye gibi roller gereklidir. Bu noktada Yetkilendirme (AuthZ), kuruluş düzeyinde kullanıcıları yönetmede önemli bir rol oynar ve genellikle Rol Tabanlı Erişim Kontrolü (RBAC) kullanılır.
Makineden makineye yetkilendirme
Makineden makineye iletişim, hizmetler arasında doğrudan insan etkileşimi olmadan gerçekleşir. Örneğin, API hizmetlerinin çağrılması. Genellikle güvenli, dinamik ve ayrıntılı erişimi sağlamak için tokenlar (Örneğin, OAuth 2.0 erişim tokenları) içerir.
AuthZ için en iyi uygulamalar nelerdir?
Güvenli ve etkili erişim kontrolünü sağlamak için bazı yetkilendirme (authZ) için en iyi uygulamalar şunlardır:
-
En az ayrıcalık prensibi
Bu prensip, yetkisiz erişim veya hesapların ele geçirilmesinden kaynaklanan zararın en aza indirilmesini sağlar. Kullanıcılar ve sistemler, sadece rollerine uygun kaynaklara ve eylemlere erişmelidir.
-
Token tabanlı yetkilendirme uygulama
Token tabanlı erişim kontrolü, daha fazla esneklik ve ince ayar kontrolü sunar ve açık standartlara uyar. Zaman duyarlı ve kapsamlı erişim sağlamak için güvenli tokenlar (Örneğin, OAuth 2.0, JWT'ler) kullanın.
-
Düzenli olarak denetleyin ve izleyin
Erişim loglarının ve yetkilendirme politikalarının düzenli olarak gözden geçirilmesi, anormalliklerin veya güncelliğini yitirmiş izinlerin tespit edilmesi için gereklidir.
-
Görev ayrılığı uygulayın
Ayrıntılı izinler belirlemekle başlayın, örneğin belirli eylemler ve kaynaklar (Örn, okuma, yazma, silme). Roller oluştururken, net rol isimleri kullanın ve görev ayrılığını uygulayarak tek bir kullanıcı tarafından yapılabilecek dolandırıcılık veya hataların riskini en aza indirin.
-
Çok kiracılılığı destekleyin (uygulanabilir ise)
Çok kiracılı sistemler için, kiracı izolasyonu önemlidir. Rol tabanlı erişim kontrolü ile birleştirerek, kaynaklarınızı ayırabilir, böylece uygun rollerin yalnızca kendi kiracılarındaki kaynaklara erişimini sağlayabilirsiniz. Bu, diğer kiracıların kaynaklarına kazara veya kötü niyetli erişimi önler.
-
Erişimi dinamik olarak kaldırın
AuthZ sisteminizi tasarlarken, koşullar değiştiğinde (Örn, rol güncellemeleri veya işten çıkarma) izinlerin hemen güncellenebileceğinden veya kaldırılabileceğinden emin olun. Bu, dinamik API kontrolleri, webhooklar veya diğer yöntemler aracılığıyla başarılabilir. Amaç, yetkisiz erişimi gerçek zamanlı olarak önlemektir.
AuthZ (Yetkilendirme) ve Auth (Kimlik Doğrulama) arasındaki farklar nelerdir?
Kimlik doğrulama ve yetkilendirme arasındaki fark, kimlik ve erişim yönetimi içindeki amaç ve süreçlerinde yatar.
AuthN (Kimlik Doğrulama), “Kim olduğun ve hangi kimliği sahip olduğun” sorusunu yanıtlar. Kimliği doğrulama sürecidir ve bir kullanıcı, hizmet veya cihazın kimliğini doğrular. Kimlik doğrulama, bir sistemi veya kaynağı erişmeye çalışan varlığın gerçek olduğunu garanti eder. Yaygın yöntemler şifreler, biyometrik veriler ve iki faktörlü kimlik doğrulama (2FA) içerir. Örneğin, e-posta ve şifrenizi kullanarak bir hesaba giriş yaptığınızda, sistem kimliğinizi doğrulamak için kimlik doğrulama yapar.
AuthZ (Yetkilendirme), “Ne yapmana izin veriliyor?” sorusunu yanıtlar. Kullanıcının izinleri veya rolleri temelinde kaynaklara erişim verme veya reddetme sürecidir. Yetkilendirme, kimlik doğrulama sonrası ortaya çıkar ve doğrulanmış kullanıcının hangi işlemleri yapabileceğini belirler. Örneğin, giriş yaptıktan sonra, bir admin kullanıcısı ayarları değiştirme erişimine sahipken, normal bir kullanıcı sadece onları görüntüleyebilir.
Özetle, AuthN (kimlik doğrulama) kimliği teyit ederken, AuthZ (yetkilendirme) erişimi tanımlar. Güvenli ve uygun kaynak kullanımı sağlamak için önce kimlik doğrulama, ardından yetkilendirme yapılır.
Logto ile AuthZ (Yetkilendirme) Oluşturun
Logto Cloud, OIDC, OAuth 2.0 ve SAML gibi açık standart protokollerine dayalı temel yetkilendirme hizmetleri sunar. Özellikler, çeşitli açılardan yetkilendirme ihtiyaçlarınızı karşılamak üzere Rol Tabanlı Erişim Kontrolü, Organizasyonlar (Çok-Tenancy) ve Özel Token İddiaları'ı içerir.