IIS 7 AppPool Kimliklerini SQL Server Oturum Açma Olarak Ekleme


233

Tümleşik Boru Hattı Modu AppPool'lu bir IIS 7 Web Sitesi çalıştırıyorum . AppPools NetworkService vb. Kimliği altında (amaç doğrultusunda) çalışmaz, ancak kendi AppPool Kimliği'ni (IIS AppPool \ MyAppPool) kullanır.

Bu bir hizmet hesabı veya sanal hesaptır. (tam hesap olmayan bir kullanıcı hesabı ...)

Bu hizmet hesabına (IIS AppPool \ MyAppPool) SQL Server 2008 Express'e (Karışık Kimlik Doğrulama Modunda çalışıyor) bağlanmak için izin vermek istiyorum.

SQL Server normal bir kullanıcı hesabı ekleyebilse de, IIS AppPool \ MyAppPool sanal hesabı geçerli oturum açma işlemlerine eklenemez (SQL Server, hesabın bulunamadığını söyler).

Herhangi bir hile var mı, sanal hesapların çalışması için etkinleştirmem gereken bir şey var mı? (w3wp.exe işlemi taskmgr'ye göre bu kimlik altında çalışır, ancak hesabı NTFS güvenliğinde de kullanamıyorum ...)

Yardımınız için teşekkürler!

Yanıtlar:


380

"IIS APPPOOL \ AppPoolName" çalışır, ancak daha önce de belirtildiği gibi, geçerli bir AD adı gibi görünmez, bu nedenle "Kullanıcı veya Grup Seç" iletişim kutusunda aradığınızda görünmez (aslında , bulacaktır, ama onun gerçek bir sistem hesabı olduğunu düşünecek ve bu gibi davranmaya çalışacaktır ... hangi işe yaramaz ve bulunamadı onun hakkında hata mesajı verecektir).

Nasıl işe aldım:

  1. SQL Server Management Studio'da Güvenlik klasörünü arayın (her bir veritabanındaki güvenlik klasörünü değil, Veritabanları, Sunucu Nesneleri vb. Klasörlerle aynı düzeydeki güvenlik klasörü).
  2. Girişleri sağ tıklayın ve "Yeni Giriş" i seçin
  3. Oturum Açma adı alanına IIS APPPOOL \ YourAppPoolName yazın - aramayı tıklatma
  4. İstediğiniz diğer değerleri doldurun (yani kimlik doğrulama türü, varsayılan veritabanı vb.)
  5. Tamam'ı tıklayın

AppPool adı gerçekten var olduğu sürece, giriş şimdi oluşturulmalıdır.


4
Eski bir gönderiyi dirilttiğim için üzgünüm, ancak bunu yapmanın canlı bir ortamda herhangi bir güvenlik etkisi olup olmadığını bilen var mı?
dooburt

34
inanılmaz yararlı, ama akıllara durgunluk veren (ve crappily) Microsoftian.
Evan Nagle

16
Vay. 3. adımda "aramayı tıklamayın" bir fark yaratıyor gibi görünüyor (?)
Jedidja

16
SQL sunucusu örneği başka bir sunucudaysa bu başarısız olmaz mı? Mesela - nasıl olur SQL1/ yerel sanal yaklaşık bilmesine IIS AppPool\MyAppPoolüzerinde WEB1?
one.beat.consumer

3
Web sunucunuz ve SQL Server farklı makinelerde varsa herhangi bir çözüm var mı? Girişi bulabilirim, ancak yeni SQL Login'i oluşturamıyorum. (Çek isimleri yapmazsam ... hala çalışmıyor)
Dan B

63
CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];

1
Güzel - kabul edilen cevap doğru olsa da, kendimi Management Studio'nun çalışmadığı bir duruma getirmeyi başardım, bu yüzden bu ham TSQL çözümü ihtiyacım olan şeydi.
Andrew Patterson

4
Benim gibi yeni notlara dikkat edin: Bu sorguyu IIS uygulama havuzuyla erişmek istediğiniz veritabanına karşı yürüttüğünüzden emin olun, ikinci ifade veritabanı düzeyindedir. Kullanıcıyı belirli veritabanı rollerinin üyesi yapmanız ve ona şema (lara) ilişkin izinler vermeniz gerekebilir dbo.
MarioDS

SSMS GUI aracılığıyla IIS APPPOOL oturum açma bilgilerini eklemenin mümkün olmadığını keşfettikten sonra, komut dosyanızı çalıştırdım. TEŞEKKÜRLER! SSMS 18'de mümkün değil KULLANILMASI! Bunun artık bir "özellik" olduğunu varsayalım
MC9000

6

Makineler arasında gidiyorsanız, AĞ HİZMETİ, YEREL SİSTEM, bir etki alanı hesabı veya bir SQL 2008 R2 (varsa) Yönetilen Hizmet Hesabı (bu tür bir altyapınız varsa tercihimdir) kullanmanız gerekir. . Active Directory etki alanında görünmeyen bir hesap kullanamazsınız.


6

Yan hesap olarak sanal hesapları (NT Service \ MyService ve IIS AppPool \ MyAppPool) kullanan işlemler, bu yayının önerdiği gibi http://www.adopenstatic.com/cs/blogs/ken/ "NETWORK SERVICE" hesabı altında çalışıyor arşivi / 2008/01/29 / 15759.aspx . Tek fark, bu işlemlerin "NT Service \ MyService" veya "IIS AppPool \ MyAppPool" gruplarının üyeleri olmasıdır (bunlar aslında kullanıcılar değil gruplardır ). Bu, aynı zamanda, süreçlerin ağda NETWORK SERVICE hesabıyla aynı şekilde kimlik doğrulamasının da nedenidir.

Güvenli erişimin yolu, bu hesapların NETWORK SERVICE ayrıcalıklarına sahip olmamasına değil, özellikle "NT Service \ MyService" veya "IIS AppPool \ MyAppPool" a daha fazla izin vermesine ve gerekirse "Kullanıcılar" izinlerini kaldırmaya bağlıdır.

Daha doğru veya çelişkili bir bilgi varsa lütfen gönderin.




0

Ben deneme yanılma yoluyla anladım ... zırh gerçek chink IIS Configuration Editorweb sitesinde biraz bilinen ayar oldu

Section: system.webServer/security/authentication/windowsAuthentication

From: ApplicationHost.config <locationpath='ServerName/SiteName' />

olarak adlandırılır useAppPoolCredentials( Falsevarsayılan olarak ayarlanmıştır . Bunu olarak ayarlayın Trueve hayat tekrar harika olur! Umarım bu bir sonraki adam için acı çeker ....

resim açıklamasını buraya girin


Aynı süreci izledim, ama sorun çözülmedi. Siz de başka bir şey yapmış olmalısınız, lütfen paylaşır mısınız?
RSB

@RSB - diğer tüm adımları izlediniz mi? appPools'u kurdunuz ve onlara web sitenizin bulunduğu dosyalara izin verdiniz mi? Sunucu adını, SQL Server'a izinleri olan bir oturum açma adı olarak eklediniz mi? AppPool'u SQL Server'ınıza izinlerle uyguladınız mı? IIS'yi WindowsAuthentication kullanacak şekilde değiştirdiniz mi? Hangi hataları alıyorsunuz? Üretim değil, çevrenizde çalışıyor mu?
Dan B

AppPool'u ayarladım, ancak web sitesinin bulunduğu dosyalara nasıl izin verilir? Sunucu adını, SQL sunucusuna izinleri olan bir oturum açma adı olarak nasıl ekleyebilirim? SQL Server'a izinlerle appPool ekledim. IIS ve WindowsAuthentocation kullanmak için IIS nasıl değiştirilir. IIS ve sql sunucusu aynı makinede olduğunda dev ortamımda çalışır, ancak hata-System.ComponentModel.Win32Exception: IIS ve Sql sunucusu farklı makinede olduğunda erişim engellendi hatası. Lütfen önerin.
RSB

Bana e-postanızı verirseniz, size hepsini nasıl yapacağımla ilgili yaptığım bir belgeyi göndereceğim .... buraya eklemek için fazla mucj var ...
Dan B

@RSB Size bir e-posta gönderdim. İyi şanslar.
Dan B

0

Benim durumumda, Visual Studio / Episerver uzantısını kullanarak sıfırdan bir MVC Alaşım örnek projesi oluşturmaya başladım ve yerel Visual studio iis express kullanılarak yürütüldüğünde iyi çalıştı. Ancak varsayılan olarak sql veritabanını LocalDB'ye yönlendirir ve siteyi yerel IIS'ye dağıttığımda, çözdüğüm ilk hatalardan bazılarında hatalar vermeye başladı: 1. C: / Windows / System32 / drivers / etc / hosts 2. Daha sonra application.config dosyasını düzenleyerek, Visual Studio kullanarak siteyi çalıştırırken ekranın sağ köşesinde IIS express'e sağ tıklayarak ve yerel iis url'si için bağlayıcı ekleyerek dosya konumunu buldu. 3. Son olarak "veritabanı hatalarına erişemiyorum"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.