SQL Server 2005 Sicurezza Davide Mauri Factory Software [email protected] Agenda • • • • Security Model Permissions Schemas Data Encryption Security Model Overview Principi • Secure By Design • Secure By Default • Secure By Deployment Servizi di SQL Server • Least Privilege • Utilizzare – Local Service (BUILTIN) – Domain User • No! a: Local System, Network Service Security Model • Autenticazione: – Windows – SQL • Possibilità di richiedere una password “forte”(WIN2K3) • Scadenza password(WIN2K3) • Pacchetti sempre criptati durante la connessione – Certificati Security Model • Autorizzazione – Basata sulle permissions • Crittografia – Basata su algortimi simmetrici ed assimmetrici Security Model • SQL Server 2000 Security Model Basics – Logins • A livello di server – Users • A livello di database Security Model • Nuovi concetti: – Principals • Individui, gruppi o processi che richiedono l’accesso e l’utilizzo di risorse di SQL Server – Permissions • I permessi che i principals hanno sui securables – Securables • Risorse di SQL Server verso la quale l’accesso è controllato e regolato Endpoint • Ogni connessione verso SQL Server è un endpoint – Creati in automatico per i protocolli attivi – Gestibile con DCL {GRANT|DENY|REVOKE} CONNECT ON ENDPOINT:: <EndPointName> TO <login> – Permesso di collegarsi agli endpoint • Di default per i login autenticati • Può essere gestito anche a posteriori HTTP Endpoint • Permette l’accesso a SQL Server tramite HTTP (Web Services) • Richiedono WIN2K3 – Ma non IIS (Basati su http.sys) • Devono essere creati a mano – Nessun permesso di default Autenticazione • Gestione tramite DDL: CREATE LOGIN login_name { WITH < option_list1 > | FROM < sources > } < sources >::= WINDOWS [ WITH windows_options [,...] ] | CERTIFICATE certname | ASYMMETRIC KEY asym_key_name < option_list1 >::= PASSWORD = ' password ' [ HASHED ] [ MUST_CHANGE ] [ , option_list2 [ ,... ] ] < option_list2 >::= SID = sid | DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | CHECK_EXPIRATION = { ON | OFF} | CHECK_POLICY = { ON | OFF} [ CREDENTIAL = credential_name ] Permissions • Diversi livelli: – Server – Database – Schema Permissions • Logica di funzionamento a cascata – Es: Dato un permesso su uno schema questo viene applicato a tutti gli oggetti appartenenti allo schema • Metadati (system views) con row-security – SA vede tutto – DBO vede tutto ma limitato al db – Nuova permission: VIEW DEFINITION Securables • Server Securables – All Server Principals (login) – Server (instance) – Endpoint • Database Securables – – – – – – – All Database Principals Assemblies Message Type Service Contract Service Full-text Catalog DDL Events – Schema • Schema Securables – – – – – – – – – – Table View Function Procedure Queue Type Rule Default Synonym Aggregate Schemas Schemas • In SQL Server 2000: – Owner = Schema • In SQL Server 2005 – Owner != Schema • Schema come “namespace” di oggetti del database Schemas • Utile per – Rendere indipendente l’oggetto dall’owner – Raggruppare oggetti – Semplificare la gestione della sicurezza Schemas (SQL 2000) Table User 2 Function Owned By Database View Object User SP Name resolution SELECT * FROM Foo User.foo Dbo.foo Drop user may require application change!! Schemas (SQL 2005) Table Function Database Object View User 2 contained in Owned By Schema Owned by User Stored Proc Drop user does NOT require application change!! Schemas • CREATE SCHEMA – Crea lo schema – Assegna l’ownership dello schema – Permette la creazione di oggetti nello stesso statement • ALTER SCHEMA – Modifica l’apparteneza di oggetti allo schema • DROP SCHEMA – Rimuove lo schema • Catalog view: sys.schemas Data Encryption Data Encryption • Possibilità di criptare informazioni – Messaggi – Dati all’interno delle tabelle • Utilizzo di – Chiavi simmetriche – Chiavi asimmetriche – Certificati Data Encryption • encryptByKey • encryptByPassphrase • ecc… SQL Server 2005 Data Encryption • Chiavi e certificati assegnati ad un principal – Chiavi simmetriche utilizzate per criptare i dati – La chiave pubblica del certificato del principal viene usata per criptare la chiave simmetrica – La chiave simmetrica è disponibile solo la principal • Memorizzate nel database e criptate con la Master Key Data Encryption Domande? (Risposte su: www.ugiss.org) Riferimenti • SQL Server 2005 Product Info http://www.microsoft.com/sql/2005 • SQL Server Developer Center http://msdn.microsoft.com/sql • Technet http://technet.microsoft.com/sql • Public Newsgroups microsoft.public.it.sql © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY. Content created by 3 Leaf Solutions.