sicurezza dei sistemi e dei dati con microsoft sql server 2005 gianluca hotz sql server mvp
TRANSCRIPT
Sicurezzadei sistemi e dei dati conMicrosoft SQL Server 2005
Gianluca HotzSQL Server MVP
Configurazione HW
2 server Integrity 26202 IA64 1,6 GHz, 12 GB RAM
1 Storageworks 4000 Enterprise Virtual Array (EVA 4000)
2 server Proliant DL5804 Xeon EM64T, 3 GHz, 8 GB RAM
Agenda
Modello per la sicurezza
Autenticazione
Permessi
Utenti e schema
Contesto di esecuzione
Crittografia
Agenda
Modello per la sicurezza
Autenticazione
Permessi
Utenti e schema
Contesto di esecuzione
Crittografia
Modello per la sicurezzaPrincipi
Secure By DesignCodice sicuro e robustoNuove metodologie per testing e threat analysis
Secure By DefaultConfigurazione predefinita è un sistema sicuroScoraggiare configurazioni non sicure Minimizzare la superficie di attacco
Installare solo i componenti necessari
Secure In DeploymentPrincipio del minimo privilegio
Concedere il minimo privilegio necessario al funzionamentoUtenti associati ai servizi con bassi privilegi
Automazione ed assistenza manutenzione del softwareStrumenti di amministrazione e valutazione sicurezza
Surface Area ConfigurationPer i servizi e le connessioniServizi
Database Engine
Analysis Services
Reporting Services
SQL Server Agent
Full-Text Search
Integration Services
SQL Server Browser
ProtocolliDatabase Engine
Analysis Servicesaccesso locale
TCP/IP
Named Pipes
Surface Area ConfigurationPer le funzionalitàDatabase Engine
Ad Hoc remote query
Integrazione CLR
DAC
Database Mail (SMTP)
XML Web Service nativi
Automazione OLE
Service Broker
SQL Mail
Web Assistant
xp_cmdshell
Analysis ServicesAd Hoc remote DM query
Connessioni anonime
Linked objects
User Defined Functions
Reporting ServicesScheduled events and report delivery
Web Service and HTTP access
Windows Integrated Security
Surface Area Configuration
Modello per la sicurezzaMeccanismi
AutenticazioneNome utente e passwordCertificati
AutorizzazionePermessi
CrittografiaChiavi simmetricheChiavi asimmetriche
Modello per la sicurezzaNuovo modello
PrincipalsIncludono individui, gruppi e processi che possono richiedere accesso a risorse di SQL Server
PermissionsDefiniscono l’accesso che i principals hanno per i securables
SecurablesRisorse per le quali SQL Server prevede un sistema di autorizzazione che ne regola l’accesso
Agenda
Modello per la sicurezza
Autenticazione
Permessi
Utenti e schema
Contesto di esecuzione
Crittografia
AutenticazioneConcetti
Cosa significa? Verificare che qualcuno sia effettivamente chi ha dichiarato di essere.
Tipologie Integrata con Windows (NTLM, Kerberos)SQL Logins
Conseguenza SQL Server stabilisce una sessione con un profilo di sicurezza
AutenticazioneBasata su endpoint
SQL Server 2005 Endpoints“Punto di entrata” per un’istanza di SQL Server
Astrazione di protocollo e permessi
In SQL Server 2000Dicevamo: Andrea è autorizzato a connettersi all’istanza
In SQL Server 2005Diciamo: Andrea è autorizzato a connettersi all’istanza tramite l’endpoint E
Transport Protocol Named pipes Shared Memory
TCP HTTP VIA
PayloadsTDS SOAP
SSB Database Mirroring
AutenticazioneConfigurazione endpoint
Creati automaticamente per tutti i protocolli che supportano TDS
di default possono connettersi login autenticatipossono essere bloccaticonnessione dedicata per i sysadmin
Tramite SAC o Configuration ManagerTramite T-SQL
CREATE/ALTER/DROP ENDPOINTGRANT/DENY/REVOKE CONNECT ON ENDPOINT
Endpoint HTTP devono essere abilitati!
AutenticazioneLogin e politica delle password
Autenticazione integrata Utenti WindowsPolitiche Windows rispettate
Autenticazione SQL Server Utenti SQL ServerConfigurazione politiche da fare rispettare
complessità, scadenza, modifica forzata prossimo accesso
Politiche locali o di dominioRichiede Windows 2003
AutenticazioneProtezione delle credenziali
Pacchetti di login sempre cifratiutilizza SSL
1. certificato configurato per l’istanza2. certificato configurato per la macchina3. certificato generato autonomamente (self-
signed)
anche se l’intera comunicazione non è cifratausare certificato self-signed solo per autenticazione!
Login e autenticazione
AutenticazioneSQLCLR
SQL Server Host PolicySAFEEXTERNAL_ACCESSUNSAFE
AutenticazioneSQL Server Agent
Default: utenti non accedono a SQL AgentNuovi ruoli fissi (msdb):
SQLAgentUserRoleSQLAgentReaderRoleSQLAgentOperatorRole
Utenti di proxypiù di uno per ogni tipologia di stepmappatura con credenziali specifichenecessaria autorizzazione per poterli usare
Agenda
Modello per la sicurezza
Autenticazione
Permessi
Utenti e schema
Contesto di esecuzione
Crittografia
PermessiIntroduzione
SecurablesGerarchia di entità protette da permessi
PrincipalsSoggetti che interagiscono con i securable in base ai permessi
PermessiAzioni che possono essere compiute con un securable
Principio del minimo privilegio
PermessiScopo
ServerPermessi specifici per ogni securable
Ruoli fissi
DatabaseRuoli personalizzabili
SchemaUtilizzato per raggruppare oggetti nel database
Ereditarietà dei permessi
PermessiAssegnazione
GRANTAssegna un permesso
DENYVieta in maniera esplicita un permesso
REVOKERevoca un permesso o un divieto
GrantGrant
Revoke [deny]Revoke [deny]
DenyDeny
DENYDENY
RevokeRevoke
GrantGrant
- +
PermessiSchema generale
CONTROLTutti i permessi definiti per un securableImplica CONTROL per i subordinati nella gerarchia
ALTERModifica proprietà del securableImplica CREATE/DROP/ALTER per i subordinati nella gerarchiaEsempio: per uno schema, permette di alterarne il nome ma anche di alterare tutti gli oggetti che appartengono allo schema
ALTER ANY ‘X’Modifica proprietà di tutti i securable di quel tipo
TAKE OWNERSHIPPermette di diventare proprietario di un oggetto
PermessiSicurezza del catalogo
Tabelle di sistema implementate tramite viste di catalogoI metadati sono protetti
Permessi minimi per publicNon sono visibili se non si ha qualche permesso
Nuovo permesso specifico per vedere i metadati
VIEW DEFINITIONApplicabile a livello di oggetto, schema, database o server.
PermessiEsempi di nuovi permessi (1)
Problema:vorrei delegare il permesso di effettuare attività di audit senza dare accesso completo al server
Soluzione:ALTER TRACE
Nuovo permesso per istanzaNon necessita dei privilegi di un sysadmin
PermessiEsempi di nuovi permessi (2)
Problema:esistono dei ruoli fissi per poter leggere e scrivere in tutte le tabelle, vorrei una cosa simile per poter eseguire tutte le procedure in un database
Soluzione:EXECUTE
permette di eseguire procedure e funzionia livello di database o schemaanche SELECT, INSERT, UPDATE, DELETE a livello di database o schema
PermessiEsempi di nuovi permessi (3)
Problema:vorrei delegare la possibilità di assumere l’identità di un altro utente senza dover avere privilegi elevati
Soluzione:IMPERSONATE
per login e usernon necessita dei privilegi di un sysadmin o di un dbo (come per SETUSER)
Permessi
PermessiAuditing
ProfilerEventi: Add Database User, Addlogin, Change Password, GRANT/DENY/REVOKE, Server Principal ImpersonationDato: SessionLoginName/LoginName
DDL TriggersMOM (security events)
Agenda
Modello per la sicurezza
Autenticazione
Permessi
Utenti e schema
Contesto di esecuzione
Crittografia
Utenti e schemaIntroduzione
Estensione dalle precedenti versioniNelle precedenti versioni il concetto di schema e di utente proprietario (owner) coincidevanoIn SQL Server 2005 sono concetti separati
Uno schema definisce un raggruppamento logico di oggettiIl proprietario è un concetto legato alla sicurezza
Raggruppamento di oggetti del databaseIndipendente dal proprietario degli oggettiPermessi assegnati sia a livello di schema che a livello di singolo oggettoPermessi assegnati a livello di schema hanno ripercussioni sui permessi a livello di oggetto
Utenti e schemaProblema con utenti che sono schemi
User1User1OggettoOggettodatabasedatabase
posseduto da
TabellaTabella
VistaVista
Stored P.Stored P.
FunzioneFunzioneUser2User2
Risoluzione dei nomiSELECT * FROM Foo
User1.foo Dbo.foo
Eliminare un utente può richiedere la modifica dell’applicazione!
Utenti e schemaModifica applicazioni
App1App1
App2App2
SELECT IDCliente FROM User1.Ordini
App1App1ModificataModificata
App2App2ModificataModificata
Ordini
InserisciOrdine
SELECT IDCliente FROM User2.Ordini
EXEC User1.InserisciOrdine(@IDOrdine)
EXEC User2.InserisciOrdine(@IDOrdine)
Proprietario = User1 SCHEMA = User1Proprietario = User2 SCHEMA = User2
Utenti e schemaSoluzione: separazione utente/schema
User1User1OggettoOggettodatabasedatabase
SchemaSchemacontenuto in posseduto daposseduto da
TabellaTabella
VistaVista
Stored P.Stored P.
FunzioneFunzione
User2User2
posseduto da
L’eliminazione di un utente non richiede la modifica dell’applicazione!
Utenti e schemaNessuna modifica alle applicazioni
App1App1
App2App2
SELECT IDCliente FROM User1.Ordini
Ordini
InserisceOrdine
EXEC User1.InserisciOrdine(@IDOrdine)
Proprietario = User1 SCHEMA = User1Proprietario = User2 SCHEMA = User1
Utenti e schemaSchema predefinito
SchemaSchemacontenuto in
TabellaTabella
VistaVista
Stored Stored P.P.
FunzioneFunzione
User2User2
posseduto da
Schema predefinito
User1User1
SSchemachema11User2User2
User3User3
Risoluzione dei nomiSELECT * FROM Foo
Schema1.foodbo.foo
Utenti e schema
Agenda
Modello per la sicurezza
Autenticazione
Permessi
Utenti e schema
Contesto di esecuzione
Crittografia
Contesto di esecuzioneScopo
Fornire un contesto di sicurezza perSessioneModulo
stored procedure, funzioni, triggerchiamante non necessita di permessi specifici
efficace per le broken ownership chain
SQL dinamicoassenza ownership chaining
Contesto di esecuzioneSessione
EXECUTE AS login/userCambia il contesto in quello dell’utente specificatoChiamante deve avere il permesso IMPERSONATE per l’utente specificatoNon necessità di elevati privilegi come SETUSER (sysadmin o db_owner)
REVERT
Contesto di esecuzioneOwnership chain e moduli
User3User3
Permesso SELECTcontrollato per User3
Permesso EXECUTEcontrollato per User3
User1.Proc1User1.Proc1 User1.T1User1.T1
Permesso EXECUTE controllato per User3
Nessun permessocontrollato per User3
User3User3 User2.Proc1User2.Proc1 User1.T1User1.T1
‘Execute AS ‘X’ ’
Permesso EXECUTE controllato per User3
Permesso SELECT controllato per ‘X’ non per User3
SQL 2005
SQL 2000
User2.Proc1User2.Proc1 User1.T1User1.T1
Contesto di esecuzioneDifferenze nei moduli
EXECUTE AS CALLERComportamento di default, come in SQL 2000
EXECUTE AS ‘NomeUtente’Esecuzione nel contesto dell’utente specificatoIMPERSONATE necessario nei confronti dell’utente specificato
EXECUTE AS SELFEsecuzione nel contesto dell’utente che sta creando il modulo
EXECUTE AS OWNEREsecuzione nel contesto dell’utente proprietario del moduloIMPERSONATE necessario nei confronti del proprietario al momento della creazione del moduloSe cambia il proprietario, il contesto diventa automaticamente quello del nuovo proprietario
Contesto di esecuzione
Agenda
Modello per la sicurezza
Autenticazione
Permessi
Contesto di esecuzione
Utenti e schema
Crittografia
CrittografiaIntroduzione
Infrastruttura completa per la gestione diChiavi simmetricheChiavi asimmetricheCertificati digitali
Chiavi archiviate nei databaseProtezione delle chiavi a più livelliAssociazione chiavi e certificati ad utenti
CrittografiaChiavi simmetriche
Stessa chiave per cifrare/decifrareVengono utilizzate per cifrare i datiBasso impatto computazionaleLa chiave deve essere nota
CrittografiaChiavi asimmetriche
Coppia di chiavi pubbliche/private per cifrare/decifrarePossono essere utilizzate per cifrare i datiAlto impatto computazionaleSi presta bene per l’autenticazioneE’ sufficiente conoscere le chiavi pubbliche
CrittografiaCertificati
Aderiscono allo standard X509v1 (no v3),il loro uso si limitata a
proteggere delle chiavi simmetricheè possibile usare anche delle password
firmare il codicecifrare il traffico di autenticazione SSL
non sono utilizzati per l’autenticazione perché self-signed
CrittografiaGerarchia protezione delle chiavi
Crittografia
© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.