Protezione stored procedure

lunedì 24 settembre 2012 - 10.02
Tag Elenco Tags  VB.NET  |  SQL Server 2008 R2

trinity Profilo | Guru

Buongiorno,
è possibile proteggere il codice scritto per realizzare una stored procedure dopo averla inserita nel database, ossia evitare che altri occhi indiscreti possano leggere e quindi copiare il codice sql?

ciao e grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Buongiorno,
Ciao

>è possibile proteggere il codice scritto per realizzare una stored
>procedure dopo averla inserita nel database, ossia evitare che
>altri occhi indiscreti possano leggere e quindi copiare il codice sql?
Direi che basta usare la security per bene senza dare le permission alle persone che non vuoi che leggano


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Ciao,
ossia intendi che si possono dare delle permission anche per leggere le stored?

Ti spiego questo database deve essere gestito da me e da un'altra persona, ma dato che non ho molta fiducia senza dare all'occhio volevo solamente proteggere le mie stored, in modo tale che lui sarà sempre legato al mio aiuto ;)
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>ossia intendi che si possono dare delle permission anche per leggere le stored?
Intendo che puoi togliere la VIEW DEFINITION (o darla) sulle sp.
Ma la mia domanda però sorge spontanea, com'è la tua security se tutti possono vedere la definizione di sp?

>Ti spiego questo database deve essere gestito da me e da un'altra
>persona, ma dato che non ho molta fiducia senza dare all'occhio
>volevo solamente proteggere le mie stored, in modo tale che lui
>sarà sempre legato al mio aiuto ;)
eh allora togligli la view definition, ma è sa?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

>>ossia intendi che si possono dare delle permission anche per leggere le stored?
>Intendo che puoi togliere la VIEW DEFINITION (o darla) sulle
>sp.
>Ma la mia domanda però sorge spontanea, com'è la tua security
>se tutti possono vedere la definizione di sp?
Allora il db non l'ho creato io io l'ho preso sotto gestione in un secondo momento e sto soltanto aggiungeno codice...ecco perchè stato che non mi fido volgio tutelarmi



>
>>Ti spiego questo database deve essere gestito da me e da un'altra
>>persona, ma dato che non ho molta fiducia senza dare all'occhio
>>volevo solamente proteggere le mie stored, in modo tale che lui
>>sarà sempre legato al mio aiuto ;)
>eh allora togligli la view definition, ma è sa?

si è "sa"
Come faccio a togliere la view definition? e se la tolgo io comunque dal mio sql management posso sempre vederle le stored per modificarle?
Ciao
>--
>Alessandro Alpi | SQL Server MVP
>MCP|MCITP|MCTS|MCT
>
>http://www.alessandroalpi.net
>http://blogs.dotnethell.it/suxstellino
>http://mvp.microsoft.com/profiles/Alessandro.Alpi

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>si è "sa"
e tu hai i permessi di cambiare le permission?
Perchè dovresti toglierlo dai sysadmin e fare un set di permessi solo per lui

>Come faccio a togliere la view definition?
ci sono degli statement che consentono di dare o togliere permission (GRANT, DENY, REVOKE) che fanno parte del DATA CONTROL LANGUAGE.
Oppure puoi usare i designer ai tab "permissions".
Però l'utente che vai a cambiare non deve essere sysadmin.

>e se la tolgo io comunque
>dal mio sql management posso sempre vederle le stored per modificarle?
Dipende a chi la togli.. se la togli dal tuo no
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

io ho tutti gli accessi.
Ora ti chiedo se puoi darmi un cosiglio, le stored le devo solamente modificare e leggere io ovviamente intendo il codice.
Come devo procedere? Qual'è la strada migliore?

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>io ho tutti gli accessi.
>Ora ti chiedo se puoi darmi un cosiglio, le stored le devo solamente
>modificare e leggere io ovviamente intendo il codice.
>Come devo procedere? Qual'è la strada migliore?
Come ti dicevo, togliere dai sysadmin l'altro utente e dargli i permessi che deve avere.. niente di più.
Però devi sapere tu cosa devi applicare..

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Attualmente suoi ruoli del server è settatosysadmin e pubblic...però bisogna calcoare che l'applicativo che utilizza questo database è connesso attraverso l'utente "sa". La mia domanda se tolgo all'utente "Sa" il sysadmin lasciando solo il pubblic, il programma per gli utenti continua a funzionare tranquillamente?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Attualmente suoi ruoli del server è settatosysadmin e pubblic...però
>bisogna calcoare che l'applicativo che utilizza questo database
>è connesso attraverso l'utente "sa". La mia domanda se tolgo
>all'utente "Sa" il sysadmin lasciando solo il pubblic, il programma
>per gli utenti continua a funzionare tranquillamente?
No, ma mi chiedo pure perchè debba essere un sysadmin a far girare un'applicazione. E purtroppo ce ne sono di queste cose, perdonami, castronate..
sysadmin è ben altra cosa e un'app non deve avere una sysadmin. La security va studiata, c'è da investire tempo accanto a questa "sconosciuta".
C'è troppa superficialità.
Fabio, l'unica cosa che posso dirti è di metterti lì, capire cosa quell'utente deve fare su database, e che permessi quindi gli dovrai dare.. poi fare un'infrastruttura di test e cambiare tutto, per vedere se l'applicazione continua a funzionare correttamente dopo gli opportuni cambiamenti.
Di certo, se ora togli la sysadmin e lasci solo public, non andrà più nulla, perchè non puoi scrivere o leggere dati.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Guarda sono della tua stessa opinione hanno creato un database da mettere le mani nei capelli...comunque gli utenti devono leggere,scrivere,aggiornare ed eliminare....
Quindi farò così in un db prova tolgo il sysadmin, creo un utente ad hoc e gli metto i permessi che servono e poi vedo se tutto funge

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Guarda sono della tua stessa opinione hanno creato un database
>da mettere le mani nei capelli...comunque gli utenti devono leggere,scrivere,aggiornare
>ed eliminare....
>Quindi farò così in un db prova tolgo il sysadmin, creo un utente
>ad hoc e gli metto i permessi che servono e poi vedo se tutto
>funge
alla fine se lavorano solo di dati (e non creano strutture o fanno cose particolari) potrebbero bastare i ruoli fixed del db dbdatareader e writer.
Facci sapere che chiudiamo il thread
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Si lavorano solo i dati...ma una domanda sul server dove risiede il db purtroppo come ti ho detto non avendo l'unico accesso io ma anche un'altra persona c'è installato Sql management e purtroppo deve rimanere..adesso se io tolgo sysadmin all'utente "SA" comunque anche l'altro si connette con l'utente "SA" quindi le stored ed il loro codice le vedrebbe ugualmente oppure se non fosse risetta l'opzione sysadmin e torna tutto normale..una volta se non erro lessi che si poteva utilizzare anche il criptaggio delle stored solo che una volta usato non si potevano neanche più aprire con il management, è vero?


Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Si lavorano solo i dati...ma una domanda sul server dove risiede
>il db purtroppo come ti ho detto non avendo l'unico accesso io
>ma anche un'altra persona c'è installato Sql management e purtroppo
>deve rimanere..adesso se io tolgo sysadmin all'utente "SA" comunque
>anche l'altro si connette con l'utente "SA" quindi le stored
>ed il loro codice le vedrebbe ugualmente oppure se non fosse
>risetta l'opzione sysadmin e torna tutto normale..una volta se
>non erro lessi che si poteva utilizzare anche il criptaggio delle
>stored solo che una volta usato non si potevano neanche più aprire
>con il management, è vero?
no no.. aspetta.. NON DOVETE ACCEDERE COME SA.
Dovete fare il vostro utente!
Poi sa, una volta che c'è almeno un sysadmin (puoi dare la sysadmin anche ad un utente che non sia il cosiddetto "sa") lo disabiliti o gli dai una pwd che conosci solo tu.
Ogni utente deve avere le sue permission. Certo, se usate entrambi sa, non puoi nemmeno toglierlo da sysadmin.


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

trinity Profilo | Guru

Allora ricapitolando...

io creo un utente mio che fa tutto con il sysadmin e la mia password personale...poi un altro utente che può solo leggere, scrivere ecc senza il sysadmin e questo utente lo do sia ai clienti che a colui che entra nel database come me..poi infine disabilito il "SA"...Giusto ho capito bene?

Se si ultima domanda da "ignorante" il "SA" come lo disabilito da Management?

Ciao e grazie mille
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>io creo un utente mio che fa tutto con il sysadmin e la mia password
>personale...poi un altro utente che può solo leggere, scrivere
>ecc senza il sysadmin e questo utente lo do sia ai clienti che
>a colui che entra nel database come me..poi infine disabilito
>il "SA"...Giusto ho capito bene?
a prescindere che è una scelta di design TUA, il tuo utente, se il responsabile (che immagino sia tu) ritiene di poter fare tutto, sarà il sysadmin.
L'altro utente, il tuo collaboratore, avrà i permessi per fare quello che deve fare (dipende da cosa deve poter fare e dipende solo dalle scelte del responsabile del sistema).
L'utente dell'applicazione è tutta un'altra cosa. Vedi tu se usare ruoli a database fissi o tuoi, se usare application roles o altro.
Ad esempio, nella mia realtà, solo stored procedure, e quindi il ruolo l'ho fatto io e assegno i permessi al ruolo. Poi c'è un utente di applicazione che appartiene a quel ruolo.
Nulla più..

>Se si ultima domanda da "ignorante" il "SA" come lo disabilito da Management?
tasto destro sulla login, proprietà, tab status --> disable.
Fai attenzione, assicurati di avere un tuo sysadmin col quale disabiliti sa.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

TomClancy Profilo | Junior Member

... parallelamente a tutto questo è possible anche criptare la stored.
Michele Levada

alx_81 Profilo | Guru

>... parallelamente a tutto questo è possible anche criptare la stored.
Grazie Michele, ma ritengo che prima di aumentare l'overhead crittografando le stored procedure e andando a legarsi a chiavi che poi vanno storate da qualche parte, è meglio avere una security come si deve, perchè l'accesso sa è proprio una pratica da non seguire. In fondo Fabio vuole solo "tenere alla larga" un altro utente.
Che dici?


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

TomClancy Profilo | Junior Member

>>... parallelamente a tutto questo è possible anche criptare la stored.
>Grazie Michele, ma ritengo che prima di aumentare l'overhead
>crittografando le stored procedure e andando a legarsi a chiavi
>che poi vanno storate da qualche parte, è meglio avere una security
>come si deve, perchè l'accesso sa è proprio una pratica da non
>seguire. In fondo Fabio vuole solo "tenere alla larga" un altro
>utente.
>Che dici?

Certo che si Alessandro, ho usato il termine 'parallelamente' ma in realtà era meglio dire 'a complemento'

Michele Levada

trinity Profilo | Guru

Grazie ragazzi per il vostro aiuto per terminare il criptaggio delle stored come avviene? E poi se non ricordo male una volta criptato non si possono più aprire da SSMS vero?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5