NodeJS, kullanıcılarına düşük gecikme süresi deneyimi sunması gereken olay odaklı web uygulamaları geliştirmek için güçlü bir platform olarak kategorize edilmiştir. Platformlar arası yetenekli ve mobil uyumlu olmasına rağmen, bu kadar popüler olmasının en önemli nedeni, JavaScript’i kullanması ve geliştiricilerin web tarayıcısı içinde uygulamalar geliştirmesine izin vermesidir.
Geliştiriciler, örneğin ampplication.com gibi kutudan çıktığı anda yerel destek sağlayan geliştirme ortamlarını kullanmayı seçtiğinde NodeJS kendine gelir. Bu üst düzey ortamlar genellikle kod tamamlama ve pano tabanlı güvenlik yapılandırması sağlar.
Bir web uygulamasının güvenliğini korumak için, geliştiricilerin izinleri belirlemesine ve gerektiğinde erişim yetkisi vermesine izin veren kontrollerin mevcut olması gerekir. NodeJS’nin bunu başarmak için iki ana yöntemi vardır.
NodeJS Rol Tabanlı Erişim denetimi
Rol Tabanlı Erişim Denetimi (RBAC), NodeJS ekosistemine özgü bir erişim denetimi yöntemidir. RBAC, erişim kontrolünde kullanıcı rollerinin geleneksel tanımından türetilmiştir. Yöneticiler, roller tanımlayarak, her rolün hangi erişim düzeyine sahip olması gerektiğine karar verebilir.
Güvenlik yöneticileri, kullanıcı oluşturma sırasında yönetim zamanından tasarruf etmek için kullanıcılara tek tek değil, role göre izinler verir. Yöneticiler, kaynaklara erişimi geniş ölçekte açık bir şekilde tanımlayabilir ve izleyebilir. Bir kullanıcının çevrimiçi kaynaklara erişimini, işini tamamlamak için gereken minimum düzeyde sınırlayarak, en az ayrıcalık ilkesi uygulanabilir.
Kullanıcı hesapları rollere atanır ve hesaplar, rol tarafından ayrıntılı olarak açıklanan zımni güvenliği devralır. Bir kullanıcı belirli bir eylemi gerçekleştirmek istediğinde, kullanıcının rolüne göre hareket etmesine izin verilip verilmediğini doğrulamak için uygulama veritabanında bir kontrol yapılır.
NodeJS Öznitelik Tabanlı Erişim Kontrolü
Özniteliğe dayalı Erişim Kontrolü (ABAC) ise erişim talep eden kullanıcıya özgü tanımlayıcı faktörleri kullanır. ABAC, NodeJS tarafından kullanılan yeni nesil bir teknoloji olarak kabul edilir. Kullanıcılara, kim olduklarına bağlı olarak kaynaklara erişim izni verir.
Kullanıcı adı, konum gibi karmaşık kullanıcı özniteliklerini ve hatta örneğin güvenlik izni gibi bağlı sistemlerden öznitelikleri kullanarak. Kullanıcı erişimi, mevcut bir veri deposundan referans alınmayan niteliklerle de kontrol edilebilir. Bu nitelikler, erişim zamanı veya erişim konumu gibi çevresel nitelikler olabilir.
Kontrol, erişilen kaynağın öznitelikleri kullanılarak da gerçekleştirilebilir. Buna örnek olarak dosya değiştirme tarihleri, veri gizliliği vb. verilebilir.
ABAC, nihai olarak, RBAC’den çok daha esnektir ve güvenlik yöneticilerinin, müşteri ve işletme bilgilerini istenmeyen tehdit aktörlerinden güvende tutmak için gerektiği kadar çok veya az granülasyona izin verir. Bu uygulama, içeriden gelen tehditleri önlemek için bir güvenlik katmanı eklediğinden, yalnızca bir kuruluş içindeki çalışanların erişebildiği sistemler için de teşvik edilir.
RBAC vs ABAC
RBAC, ABAC için ilkel bir erişim denetimi biçimi olarak kabul edilebilirken, modern güvenliğin düzenlenmesinde hala bir yeri vardır.
RBAC, ikisinin bir kombinasyonu uygulandığında tipik olarak ABAC’tan önce yapılandırılır. Bu, bulut hizmeti sağlayıcıları tarafından kullanılan güvenlik yığınına benzer bir güvenlik denetimi için bir temel oluşturur. ABAC’ı RBAC’ın üzerine eklemek, erişim gereksinimlerine ek karmaşıklık katabilir. Ancak, bu mekanizmaların birleştirilmesinin ek sunucu tarafı bellek ve işlem süresi gerektirdiği ve yalnızca gerektiğinde yapılması gerektiği unutulmamalıdır. Sonuçta, çevrimiçi işlem süresi, barındırma hizmetleri söz konusu olduğunda doğrudan genel giderlere dönüşür.
Ortamın iç yapısını uygulanacak güvenlik şemasına uygun hale getirmek için projenin başlangıcında dikkatli ve kararlı bir planlamaya ihtiyaç vardır. RBAC ve ABAC birleştirildiğinde, geniş erişim başlangıçta RBAC tarafından verilebilir ve erişim daha sonra ABAC tarafından güçlü bir şekilde filtrelenebilir. Bu, web uygulamasının ilk olarak bir kaynağa kimin erişimi olduğunu belirlemek için RBAC’ı kullanmasını ve daha sonra kullanıcının kaynakla neler yapabileceğini ve ne zaman erişebileceğini belirlemek için ABAC’ı kullanmasını gerektirir.
Sonuç olarak
ABAC’ın NodeJS’ye eklenmesi, onu gerçek zamanlı JavaScript tabanlı uygulamaları geleceğe taşıyan kararlı bir açık kaynak geliştirme platformu olarak kurdu. RBAC ve ABAC arasında, hiçbir zaman birinin veya diğerinin kullanılıp kullanılmayacağı değil, çoğu modern NodeJS uygulamasının her ikisini aynı anda kullanması durumu söz konusu değildir.