Sahadan Notlar

Aynı IIS üzerinde iki bağımsız ASP sitesi ve SQL veritabanı

Durum: İki bağımsız IIS sitesi ve veritabanı erişimi kuruldu ve çalışır durumda doğrulandı. Gizlilik: Müşteri, cihaz ve adresler anonimleştirilmiştir; komutlar örnek ortam için uyarlanmalıdır.

Aynı Windows/IIS sunucusunda iki kişinin ayrı takip uygulamasını çalıştırmak, yalnızca klasör kopyalamak değildir: Application Pool, veritabanı, oturum ve izin ayrımı gerekir.

İki siteye ayrılma ihtiyacı

Bir spor ve beslenme takip uygulaması ikinci kullanıcı için çoğaltıldı. Veri birbirine karışmasın diye her siteye ayrı SQL Server veritabanı ve ayrı IIS Application Pool tanımlandı.

Kaynak kod Classic ASP, veri tabanı SQL Server; bağlantı Windows güvenliğiyle `MSOLEDBSQL` sağlayıcısını kullandı. Gerçek site alan adlarını gizli tutuyoruz.

Mimari

  • Site-A ve Site-B farklı IIS site kayıtları ve fiziksel klasörlerde çalışır.
  • Her site ayrı Application Pool ve kendi sanal kimliğine sahiptir.
  • SQL tarafında AppDB_A ve AppDB_B ayrı veritabanlarıdır.
  • Application Pool hesabına yalnızca kendi veritabanı için gerekli roller verilir.
  • Tüm site bağlantıları, oturum, veritabanı sayımları ve uygulama menüleri ayrı ayrı test edilir.

SQL Server izin örneği

Örnekteki hesaplar temsili. Veritabanı kopyasında kimlikler, otomatik artan sayaçlar, varsayılan kayıtlar ve iş kuralları da kontrol edilmelidir.

-- Aynı sunucuda IIS ve SQL kullanıldığı varsayımıyla:
USE master;
CREATE LOGIN [IIS APPPOOL\SiteBPool] FROM WINDOWS;
GO
USE [AppDB_B];
CREATE USER [IIS APPPOOL\SiteBPool] FOR LOGIN [IIS APPPOOL\SiteBPool];
ALTER ROLE db_datareader ADD MEMBER [IIS APPPOOL\SiteBPool];
ALTER ROLE db_datawriter ADD MEMBER [IIS APPPOOL\SiteBPool];
GO
SELECT t.name, SUM(p.rows) AS RowTotal
FROM sys.tables t JOIN sys.partitions p ON p.object_id=t.object_id
WHERE p.index_id IN (0,1)
GROUP BY t.name;

IIS ve bağlantı zinciri

Anonymous Authentication için Application pool identity kullanılması ve havuz kimliğinin SQL’e gereken ölçüde erişmesi sağlandı. Ayrı App Pool çalışsa bile aynı fiziksel dosyalara yazma yetkisi verilmesi iki sitenin birbirini etkilemesine neden olabilir.

SQL login’in yalnızca yetkilendirilmiş veritabanlarında kullanıcı karşılığı olmalı; daha geniş hak verildiğinde ayrıştırmanın faydası azalır.

Sonuç ve test

İkinci site bağımsız havuz ve veritabanıyla erişilebilir duruma geldi; veritabanı okuma-yazma ve arayüz temel işlevleri kontrol edildi. Bu vaka, küçük web uygulamalarında bile kimlik ve veri ayrımının önemini gösterdi.