300 likes | 471 Views
Security in SQL Server 2008. Vinod Kumar Technology Evangelist - Microsoft http://blogs.sqlxml.org/vinodkumar http://www.ExtremeExperts.com. Session Objectives And Takeaways. Session Objective(s): Describe what applications can do to help increase data security
E N D
Security in SQL Server 2008 Vinod Kumar Technology Evangelist - Microsoft http://blogs.sqlxml.org/vinodkumar http://www.ExtremeExperts.com
Session Objectives And Takeaways • Session Objective(s): • Describe what applications can do to help increase data security • Discuss encryption, authentication, permissions, and SQL injection • Understand that Security is an important consideration for application as well as the server • Know what is available in SQL Server and how it can help customers achieve security objectives
Why Do Applications Need to Care? • Data security is not complete without application involvement • SQL injection is now the single most common type of attack on the web • Applications control or influence: • Encryption • Authentication • Permissions / Role Separation • Vulnerability to SQL Injection
Data Encryption • Why consider encryption? • Additional layer of security • Required by some regulatory compliance laws • In SQL Server 2000, vendor support required • Since SQL Server 2005 • Built-in support for data encryption • Support for key management • Encryption additions in SQL Server 2008 • Transparent Data Encryption • Extensible Key Management
Data EncryptionSQL Server 2005 Support • Encryption and Decryption built-ins • DDL for creation of Symmetric Keys, Asymmetric Keys, and Certificates • Symmetric Keys and Private Keys are always stored encrypted • Securing the Keys themselves • Based on user passwords • Automatic, using SQL Server key management • Choice of algorithms • DES, TRIPLE_DES, RC2, RC4, RC4_128, DESX, AES (128, 192, or 256)
Data EncryptionBest Practices • Encrypt only necessary data • Use symmetric encryption • Plan carefully • Key management is very important • Understand changes to existing code needed • Consider key size and algorithm on CPU
Channel Encryption • Support for full SSL Encryption since SQL Server 2000 • Clients: MDAC 2.6 or later • Force encryption from client or server • Login packet encryption • Used regardless of encryption settings • Supported since 2000 • Self-generated certificates avail since 2005
Channel EncryptionBest Practices • Enable channel encryption whenever possible and tolerable • Provision a certificate on the server • Force encryption from the client
Authentication • Windows Auth is preferable to SQL Auth
AuthenticationEnhancement in 2008 • SQL Server 2005 • Kerberos possible with TCP/IP connections only • SPN must be registered with AD • SQL Server 2008 • Kerberos available with ALL protocols • SPN may be specified in connection string (OLEDB/ODBC) • Kerberos possible without SPN registered in AD
Permission Strategy • Follow principal of least privilege! • Avoid using sysadmin/sa and db_owner/dbo • Grant required perms to normal login • Never use the dbo schema • User-schema separation • Applications should have own schema • Consider multiple schemas • Leverage Flexible Database Roles • Facilitates role separation • Consider Auditing user activity
Ownership chaining • Be aware of ownership chaining
Module Signing • Need ALTER ANY LOGIN server permission to ALTER LOGIN • Need to GRANT ALTER ANY LOGIN TO Alice? – No! ALTER LOGIN Bob ENABLE Alice (non privileged login)
Module Signing (cont) SP_ENABLE_LOGIN • Alice has permission to call SP • SP run under Alice’s context but with elevated privilege • SP protected against tampering ALTER LOGIN Bob ENABLE ALTER ANY LOGIN Alice (non privileged login) Cert_login
Execution ContextLogin and User Token Token Primary Identity SQL or Windows user name Secondary Identity Roles and Windows group memberships, including public Secondary Identity Certificate Signed modules Authenticator Cross-DB impersonated context
Execution ContextBest Practices • Controlled escalation of privileges • DB scoped: EXECUTE AS and App Roles • Cross-DB scoped: Certificates • Avoid using dynamic SQL under an escalated context • Do not use use CDOC and SETUSER • Avoid allowing guest access on user DBs
SQL InjectionIntroduction • SQL Injection is an attack where malicious code is inserted into strings and later passed to SQL Server for parsing and execution. • SQL injection is one of the most common attacks. • It can affect T-SQL code as well as code generated outside SQL such as ASP, ASP .Net, managed code, native code, etc.
SQL Injection T-SQL example CREATE PROC sp_SqlInjectionDemo( @ColumnValuevarchar(100) ) AS DECLARE @cmdnvarchar(max) SET @cmd = N'SELECT * FROM [test].[Demo] WHERE data = ''' + @ColumnValue + '''' print @cmd -- For demonstration purposes EXEC( @cmd ) Go
SQL Injection ASP example ‘‘ Execute a SQL command strCmd = " N'SELECT * FROM [test].[Demo] WHERE data = '" & columnValue & "'" SetobjCommand.ActiveConnection = objConn objCommand.CommandText = strCmd objCommand.CommandType = adCmdText SetobjRS = objCommand.Execute()
SQL Injection Example - attacker's side • T-SQL: EXECsp_SqlInjectionDemo 'abc''; SELECT * FROM sys.objects where name like ''sys%' go • ASP:
SQL InjectionStrategies to protect against SQL injection • Validate Input against a white-list • Use parameterized SQL queries • Use Type-Safe SqlParameter in .Net • Use parameterized SPs • Least-privilege Principle • Least privileged principal for web services • Escape special characters • Escape quotes with quotename/replace • Escape wildcards in LIKE statements • Validate buffer length to avoid truncation
SQL InjectionTools • Microsoft Source Code Analyzer for SQL injection • Aid in SQL injection detection for ASP code • July CTP: http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA&displaylang=en • Requirements: • OS: XP SP2, Windows 2003 SP1, Windows Vista or Windows 2008 • .Net Framework 2.0
SQL InjectionAdditional resources • SQL Server Security Blog • SQL injection (BOL) • Preventing SQL injection in ASP • Giving SQL injection the respect it deserves • Raul Garcia’s blog
Summary - Protecting Your Data • Consider encryption for protecting sensitive data • Carefully think about permissions • Maximize role separation • Always be mindful of SQL Injections
Feedback / QnA • Your Feedback is Important! Please take a few moments to fill out our online feedback form at: << Feedback URL – Ask your organizer for this in advance>> For detailed feedback, use the form at http://www.connectwithlife.co.in/vtd/helpdesk.aspx Or email us at vtd@microsoft.com • Use the Question Manager on LiveMeeting to ask your questions now!