Account e sicurezza

venerdì 06 ottobre 2006 - 09.24

Shadow Profilo | Junior Member

Buongiorno a tutti!

Vorrei fare in modo che il db Sql Server 2005 Exp che ho associato alla mia win app C#2005 non sia fruibile dall'esterno del mio software, anche quando questo è in esecuzione. Come posso fare? Come modificare il mio programma, considerato che ho già impostato nella connessione 'autenticazione di Windows' (ovvero quella predefinita)? Imposto una particolare password su quel particolare database? Potete indicarmi una procedura in tal senso corretta?

Grazie per l'attenzione!


Shadow

sanbiz Profilo | Senior Member

>Vorrei fare in modo che il db Sql Server 2005 Exp che ho associato
>alla mia win app C#2005 non sia fruibile dall'esterno del mio
>software, anche quando questo è in esecuzione. Come posso fare?
>Come modificare il mio programma, considerato che ho già impostato
>nella connessione 'autenticazione di Windows' (ovvero quella
>predefinita)?

Non ho ben afferrato. Il tuo programma accede al db SQL Server 2005 e tu non vuoi che altri possano accedere a tale db al di fuori della tua applicazione?

Diciamo che devi restringere i permessi su SQL e non dalla tua applicazione.
Ovviamente se l'autentificazione è Windows vul dire che l'utente che esegue il tuo applicativo potrà anche accedere al database anche al di fuori dello stesso, visto che è autenticato.

Prova ad abilitare l'autentificazione mista e definisci un utente sql per il tuo applicativo con tanto di password. In questo modo abiliterai l'accesso al db a solo qeull'utente SQL e così dovrebbe funzionare.

Perdonami se ho frainteso il tuo post.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

lbenaglia Profilo | Guru

>Vorrei fare in modo che il db Sql Server 2005 Exp che ho associato
>alla mia win app C#2005 non sia fruibile dall'esterno del mio
>software, anche quando questo è in esecuzione. Come posso fare?

Ciao Shadow,

per capire come funziona l'autenticazione e l'autorizzazione in SQL Server ti suggerisco di leggere il seguente articolo di Luca Bianchi:
http://www.microsoft.com/italy/technet/community/mvp/editoriali/permessi.mspx

>Grazie per l'attenzione!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Shadow Profilo | Junior Member

Grazie come sempre!

Ma c'è una piccola complicazione, il db si troverà su un server (o su un PC usato come tale). Se colloco lì il database e la mia applicazione accede da un altro PC come fare in modo che funzioni anche se il mio utente non si è autenticato sul sistema operativo del server? Grazie
Shadow

lbenaglia Profilo | Guru

>Ma c'è una piccola complicazione, il db si troverà su un server
>(o su un PC usato come tale). Se colloco lì il database e la
>mia applicazione accede da un altro PC come fare in modo che
>funzioni anche se il mio utente non si è autenticato sul sistema
>operativo del server?

Se la tua rete è in un dominio l'autenticazione la farai sul domain controller, pertanto puoi utilizzare la Windows Authentication, diversamente sei costretto ad utilizzare la SQL Server Authentication e quindi passare le credenziali di accesso nella stringa di connessione.

>Grazie
Prego

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Shadow Profilo | Junior Member

Ammazza, che velocità!!!

Dunque, mi stai dicendo che se i computer sono connessi in un gruppo di lavoro posso installare il database sul PC che viene usato come client, quindi il programma client su un PC ad esso collegato al quale l'utente ha avuto accesso con un qualsiasi utente Windows generico e così database e programma potranno vedersi? Impostando se ho ben capito 'Autenticazione di Windows'?

Ma in tal caso il PC dove si trova il DB deve essere attivo con un certo utene, ad esempio Administrator? O potrebbe ad esempio stare anche in Stand by?
Shadow

lbenaglia Profilo | Guru

>Dunque, mi stai dicendo che se i computer sono connessi in un
>gruppo di lavoro posso installare il database sul PC che viene
>usato come client, quindi il programma client su un PC ad esso
>collegato al quale l'utente ha avuto accesso con un qualsiasi
>utente Windows generico e così database e programma potranno
>vedersi? Impostando se ho ben capito 'Autenticazione di Windows'?
No, io ho parlato di dominio non di workgroup.

>Ma in tal caso il PC dove si trova il DB deve essere attivo con
>un certo utene, ad esempio Administrator? O potrebbe ad esempio
>stare anche in Stand by?
Ehm... mi sembra di capire che ti sfugge il concetto di dominio.
Prova a leggere questi articoli:

"Windows XP Professional su un dominio"
http://www.microsoft.com/italy/windowsxp/pro/evaluation/overviews/dominio.mspx

"Active Directory"
http://www.farpoint.it/Notizie/NewsInforAtt002.htm

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Shadow Profilo | Junior Member

Grazie per l'utile link che mi hai suggerito, adesso dopo averlo letto tutto so che la rete in questione è un gruppo di lavoro e non un dominio!!! Quindi, alla luce di questa informazione, come mi consigli di procedere per installare il mio programma considerato che su uno di tali PC (connessi in un dominio!!) andrà il database, mentre sugli altri l'applicativo che dovrà prenedere i dati dal database? Sempre se su un dominio è fattibile! (ora che ho capito bene il concetto di dominio, tremendi dubbi mi assalgono!)


Shadow

lbenaglia Profilo | Guru

>Grazie per l'utile link che mi hai suggerito, adesso dopo averlo
>letto tutto so che la rete in questione è un gruppo di lavoro
>e non un dominio!!!
Se sei in workgroup l'unica possibilità è quella di utilizzare la SQL Server Authentication.

Quindi, alla luce di questa informazione,
>come mi consigli di procedere per installare il mio programma
>considerato che su uno di tali PC (connessi in un dominio!!)
>andrà il database, mentre sugli altri l'applicativo che dovrà
>prenedere i dati dal database?
Hai appena detto che i pc sono in workgroup e ora mi vieni a dire che fanno parte di un dominio?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Shadow Profilo | Junior Member

ERRORE DI SCRITTURA SCUSAMI!!! Sono assolutamente in un workgroup: non hanno la struttura gerarchica tipica di un dominio né una macchina con Win Server installato. Sono tutti allo stesso livello quindi con gli stessi poteri. Scusami di nuovo per l'errore di scrittura, quindi mi consigli di usare la Sql Server Autentication?

Se ho ben capito perciò:

1) Sul mio software devo cambiare la stringa di connessione (potresti indicarmi un esempio, se ti dicessi ad esempio che il PC dove si trova il DB lo chiamiamo PCDB, e le credenziali di accesso Sql Server le chiamiamo 'User' e 'Password'?

2) Una volta installato Sql Server 2005 Express sulla macchina che ospiterà il DB dovrò creare un utente con le credenziali di cui al punto 1 giusto? E poi devo abilitare quell'utente sul database di mio interesse?

Sono sufficienti queste operazioni? Grazie ancora
Shadow

lbenaglia Profilo | Guru

>1) Sul mio software devo cambiare la stringa di connessione (potresti
>indicarmi un esempio, se ti dicessi ad esempio che il PC dove
>si trova il DB lo chiamiamo PCDB, e le credenziali di accesso
>Sql Server le chiamiamo 'User' e 'Password'?
Esempi di stringhe di connessione le trovi qui:
http://www.connectionstrings.com/

Se hai installato una named instance chiamata SQLExpress in base ai dati che hai postato la tua stringa dovrebbe essere:
"Data Source=PCDB\SQLExpress;Initial Catalog=NomeDelDatabase;User Id=User;Password=Password;"

>2) Una volta installato Sql Server 2005 Express sulla macchina
>che ospiterà il DB dovrò creare un utente con le credenziali
>di cui al punto 1 giusto? E poi devo abilitare quell'utente sul
>database di mio interesse?
Dovrai creare una Login, associarle uno User Account e definire le permission sugli oggetti del database seguendo i consigli riportati nell'articolo di Luca.

>Grazie ancora
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Shadow Profilo | Junior Member

... Non mi ripeto su questo forum e sulle persone che ne fanno parte, solo per non rischiare di essere prolisso e troppo lungo.

D'altro canto credo che il vostro aiuto, la vostra (fulminea) tempestività e le vostre risposte valgano più di mille parole.

Risolutivo, come sempre (non è la prima volta in cui riesci a sbrogliare un quesito per me molto intricato, sulla sezione database avrò inserito un sacco di domande in pochi mesi).
Shadow
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5