Aggiungi identità AppPool di IIS 7 come accessi SQL Server


233

Sto gestendo un sito Web IIS 7 con un AppPool di modalità pipeline integrata . Gli AppPool NON funzionano con NetworkService, ecc. Identità (per scopo), ma utilizzano la propria Identità AppPool (IIS AppPool \ MyAppPool).

Questo è un cosiddetto account di servizio o account virtuale. (un account utente, che non è un account completo ...)

Vorrei concedere a questo account di servizio (IIS AppPool \ MyAppPool) le autorizzazioni per connettermi al mio SQL Server 2008 Express (in esecuzione in modalità di autenticazione mista).

Mentre SQL Server può aggiungere qualsiasi account utente normale, l'account virtuale IIS AppPool \ MyAppPool non può essere aggiunto agli accessi validi (SQL Server dice che l'account non è stato trovato).

C'è qualche trucco, qualcosa che devo abilitare per far funzionare gli account virtuali? (il processo w3wp.exe viene eseguito con questa identità in base a taskmgr, ma non riesco nemmeno a utilizzare l'account nella sicurezza NTFS ...)

Grazie per l'aiuto!

Risposte:


382

"IIS APPPOOL \ AppPoolName" funzionerà, ma come accennato in precedenza, non sembra essere un nome AD valido quindi quando lo cerchi nella finestra di dialogo "Seleziona utente o gruppo", non verrà visualizzato (in realtà , lo troverà, ma penserà che sia un vero account di sistema e proverà a trattarlo come tale ... che non funzionerà e ti darà il messaggio di errore che non viene trovato).

Come l'ho fatto funzionare è:

  1. In SQL Server Management Studio, cerca la cartella Sicurezza (la cartella di sicurezza allo stesso livello delle cartelle Database, Oggetti server, ecc. ... non la cartella di sicurezza all'interno di ogni singolo database)
  2. Fare clic con il tasto destro del mouse e selezionare "Nuovo accesso"
  3. Nel campo Nome di accesso, digitare IIS APPPOOL \ YourAppPoolName - non fare clic su Cerca
  4. Inserisci tutti gli altri valori che ti piacciono (ad es. Tipo di autenticazione, database predefinito, ecc.)
  5. Clicca OK

Finché esiste il nome AppPool, ora è necessario creare il login.


4
Mi dispiace resuscitare un vecchio post, ma qualcuno sa se farlo ha delle implicazioni di sicurezza in un ambiente live?
dooburt,

34
incredibilmente utile, ma strabiliante (e schifosamente) Microsoftian.
Evan Nagle,

16
Wow. "non fare clic su ricerca" nel passaggio 3 sembra fare la differenza (?)
Jedidja,

16
Non fallirà se l'istanza del server SQL si trova su un altro server? Per esempio - come fa la SQL1conoscenza circa la local / virtual IIS AppPool\MyAppPoolsu WEB1?
one.beat.consumer

3
C'è qualche soluzione se il tuo server Web e SQL Server sono su macchine diverse !! ?? Posso trovare il login, ma non riesco a creare il nuovo login SQL. (Se non controllo i nomi di un assegno ... non funziona ancora)
Dan B,

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

1
Bello - mentre la risposta accettata è corretta - sono riuscito a trovarmi in una situazione in cui Management Studio non funzionava, quindi questa soluzione TSQL grezza era ciò di cui avevo bisogno.
Andrew Patterson,

4
Nota ai noob come me: assicurati di eseguire questa query sul database a cui desideri accedere con il pool di app IIS, la seconda istruzione è a livello di database. Potrebbe essere necessario rendere l'utente membro di determinati ruoli del database e concedergli autorizzazioni per gli schemi come dbo.
MarioDS,

Una volta scoperto che non è possibile aggiungere accessi a IIS APPPOOL tramite la GUI di SSMS, ho eseguito il tuo script. GRAZIE! È stato usato per essere possibile - non in SSMS 18! Suppongo che ora sia una "caratteristica"
MC9000,

6

Se stai attraversando macchine, devi utilizzare il SERVIZIO DI RETE, il SISTEMA LOCALE, un account di dominio o un account del servizio gestito di SQL 2008 R2 (se ce l'hai) (che è la mia preferenza se disponessi di tale infrastruttura) . Non è possibile utilizzare un account non visibile al dominio di Active Directory.


6

Come nota a margine i processi che utilizzano account virtuali (Servizio NT \ MyService e IIS AppPool \ MyAppPool) sono ancora in esecuzione con l'account "SERVIZIO DI RETE" poiché questo post suggerisce http://www.adopenstatic.com/cs/blogs/ken/ archivio / 2008/01/29 / 15759.aspx . L'unica differenza è che questi processi sono membri dei gruppi "NT Service \ MyService" o "IIS AppPool \ MyAppPool" (poiché si tratta in realtà di gruppi e non utenti). Questo è anche il motivo per cui i processi si autenticano sulla rete come la macchina allo stesso modo dell'account NETWORK SERVICE.

Il modo per proteggere l'accesso non dipende dal fatto che questi account non dispongano dei privilegi di SERVIZIO DI RETE, ma di concedere più autorizzazioni specificatamente a "Servizio NT \ MyService" o "IIS AppPool \ MyAppPool" e, se necessario, rimuovere le autorizzazioni per "Utenti".

Se qualcuno ha informazioni più precise o contraddittorie, si prega di pubblicare.




0

L'ho capito attraverso tentativi ed errori ... la vera crepa nell'armatura era un ambiente poco conosciuto in IIS Configuration Editorper il sito Web in

Section: system.webServer/security/authentication/windowsAuthentication

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

chiamato useAppPoolCredentials(che è impostato di Falsedefault. Impostalo su Truee la vita diventa di nuovo fantastica !!! Spero che questo salvi il dolore per il prossimo ...

inserisci qui la descrizione dell'immagine


Ho seguito lo stesso processo, ma il problema non è stato risolto. Devi aver fatto anche qualcos'altro, puoi per favore condividere?
RSB,

@RSB - hai seguito tutti gli altri passaggi? hai configurato appPools e hai concesso loro le autorizzazioni per i file in cui si trova il tuo sito Web? Hai aggiunto il nome del server come login con autorizzazioni a SQL Server? Hai appappool sul tuo SQL Server con le autorizzazioni? Hai modificato IIS per utilizzare l'autenticazione di Windows? Quali errori stai riscontrando? Funziona nel tuo ambiente di sviluppo e non nella produzione?
Dan B,

Ho impostato appPool, ma come concedere loro l'autorizzazione per i file in cui si trova il sito Web? Come aggiungere il nome del server come login con autorizzazioni al server SQL? Ho anche aggiunto appPool a SQL Server con autorizzazioni. Come modificare IIS per utilizzare WindowsAuthentocation. Funziona nel mio ambiente di sviluppo quando IIS e il server sql si trovano sullo stesso computer, ma dà errore-System.ComponentModel.Win32Exception: Accesso negato errore quando IIS e Sql server si trovano su un altro computer. Per favore, suggerisci
RSB,

se mi dai la tua e-mail, ti invierò un documento che ho fatto su come fare tutto .... c'è troppo mucj per aggiungerlo qui ...
Dan B

@RSB Ti ho inviato un'e-mail. In bocca al lupo.
Dan B,

0

Nel mio caso il problema era che ho iniziato a creare un progetto di esempio MVC Alloy da zero usando l'estensione Visual Studio / Episerver e ha funzionato bene quando eseguito usando Visual Studio iis express locale. Tuttavia, per impostazione predefinita punta il database sql su LocalDB e quando ho distribuito il sito su IIS locale ha iniziato a dare errori alcuni degli errori iniziali che ho risolto: 1.aggiungendo l'URL del sito locale associato a C: / Windows / System32 / drivers / etc / hosts 2. Quindi, modificando application.config, è stato trovato il percorso del file facendo clic con il tasto destro del mouse su IIS express nell'angolo in basso a destra dello schermo durante l'esecuzione del sito utilizzando Visual Studio e aggiunto un collegamento lì per l'URL di IIS locale. 3. Finalmente sono rimasto bloccato con "impossibile accedere agli errori del database"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.