[Powerpoint] - NewSecurityFeaturesx
Download
Report
Transcript [Powerpoint] - NewSecurityFeaturesx
SQL Server 2016 New Security
Features
Gianluca Sartori
@spaghettidba
#SQLSAT454
Sponsors
#SQLSAT454
Gianluca Sartori
Independent SQL Server consultant
SQL Server MVP, MCTS, MCITP, MCT
Works with SQL Server since version 7
DBA @ Scuderia Ferrari
Blog:
Twitter:
#SQLSAT454
spaghettidba.com
@spaghettidba
Agenda
Security Boundaries
Always Encrypted
Row Level Security
Dynamic Data Masking
#SQLSAT454
Why New Security Features?
SQL Server has plenty security features
TDE
Protects database files and backups at rest
Cell-Level Encryption
Encrypts single values in database tables
SSL
Protects data on the network
#SQLSAT454
Security Boundaries – Open
Apps
Database
Manager
User
SSMS
Developer
DBA
Software Vendor
#SQLSAT454
Unauthorized
Users
Security Boundaries – Non Sensitive
Apps
Software Vendor
Database
Manager
User
Copy
SSMS
DBA
Copy
Developer
#SQLSAT454
Unauthorized
Users
Security Boundaries – Sensitive
Apps
Software Vendor
Database
Manager
User
Copy
SSMS
DBA
Copy
Developer
#SQLSAT454
Unauthorized
Users
ALWAYS ENCRYPTED
#SQLSAT454
Always Encrypted – Key Features
Prevents Data
Disclosure
Queries on
Encrypted Data
Application
Transparency
End-to-end
encryption of
individual columns
in a table with keys
that are never given
to the database
system.
Support for equality
comparison, incl.
join, group by and
distinct operators.
Minimal application
changes via server
and client library
enhancements.
#SQLSAT454
Always Encrypted
Sensitive data is encrypted at column level
Data is protected from high-privileged users
DBAs
System Admins
Hackers
Cloud providers
Third-parties
Data is stored securely outside security
boundaries
The database never sees unencrypted data
#SQLSAT454
Always Encrypted – How it works
App
SELECT Name FROM
Patients WHERE SSN=@SSN
Column
Master
Key
Query
SELECT Name FROM
Patients WHERE SSN=@SSN
@SSN=0x7ff654ae6d
SQL Server
Enhanced
Native
Client
ADO.NET
.NET
4.6
Library
@SSN='198-33-0987'
dbo.Patients
Result Set
Name
Jim Gray
Application - Trusted
#SQLSAT454
Column
Encryption
Key
Name
SSN
Country
Jane Doe
Jim Gray
1x7fg655se2 USA
e
0x7ff654ae6d USA
John Smith
0y8fj754ea2c USA
SQL Server - Untrusted
Encryption Types
Deterministic Encryption
Same plaintext value Same encrypted value
Supports indexing, equality comparison, JOINs,
DISTINCT
Randomized Encryption
Same plaintext value Different encrypted value
Supports retrieval of encrypted data
No SQL operations supported
#SQLSAT454
Working with Always Encrypted
DEMO
#SQLSAT454
TDE vs Always Encrypted
Always Encrypted
TDE
Column level
Client encryption
Server doesn’t know
encryption keys
Database level
Server encryption
Server knows encryption
keys
Data in memory is encrypted Data in memory is in
plaintext
Data travels the network
Data travels the network in
encrypted
plaintext
#SQLSAT454
Custom encryption vs Always Encrypted
Always Encrypted
Custom Encryption
Slight application changes
Needs obtrusive changes
Disallows saving plaintext
data
Plaintext data can be saved
by accident
Allows indexing of
cyphertext *
Allows indexing of
cyphertext *
* depending on encryption algorithm
#SQLSAT454
Always Encrypted - Limitations
Deterministic encryption needs _BIN2 collation
Not all datatypes supported
Partial support for triggers
Unsupported features:
Full-text search
Replication
Change Data Capture
In-Memory OLTP
Stretch Database
#SQLSAT454
What changes for Applications?
ConnectionString must include new key:
Column Encryption Setting=enabled;
Ad-hoc queries not supported
SELECT SomeColumn
FROM SomeTable
WHERE EncrypedColumn = 'SomeValue';
Needs correctly parameterized queries
SELECT SomeColumn
FROM SomeTable
WHERE EncrypedColumn = @param;
#SQLSAT454
Always Encrypted for Existing Data
Existing columns must be encrypted client side
Easiest way: Import / Export wizard
Ad-hoc wizard
In SSMS 2016?
#SQLSAT454
Performance Impact
#SQLSAT454
Space Usage Impact
#SQLSAT454
Q&A
Questions?
#SQLSAT454
DYNAMIC DATA MASKING
#SQLSAT454
Dynamic Data Masking – Key Features
Limits Sensitive
Data Exposure
Useful for
Compliance
Application
Transparency
Sensitive data is
masked.
Administrators
designate how much
of the sensitive data
to reveal.
Helps adhering to
privacy standards
imposed by
regulation
authorities.
No application
changes. Existing
queries keep
working.
#SQLSAT454
Dynamic Data Masking
Unmasked Data
SSN
DATA
062-56-4651
Database
Privileged User
Masked Data
SSN
XXX-XX-XXXX
Non-Privileged
User
#SQLSAT454
dbo.Employees
Name
SSN
Salary
Jane Doe
062-56-4651 2.500
Jim Gray
915-12-9845 2.350
John Smith
354-21-9184 1.500
Dynamic Data Masking
Obfuscates data using 3 masking functions
Default: depends on data type
Email: aXXX.XXXX.com
Partial: prefixXXXXXXsuffix
Data is stored unmasked
Masking happens on resultset formation
GRANT UNMASK to disclose data
Works in Azure SQL Database (preview)
#SQLSAT454
Dynamic Data Masking - Limitations
Not all datatypes supported
Not intended as a complete protection feature for
sensitive data
Ad-Hoc queries disclose data. Ex: WHERE Salary > 2000
INSERT…SELECT does not preserve masking
Some quirks
Not suitable for handing out copies of the database
to software vendors or third-parties
#SQLSAT454
Working with Dynamic Data Masking
DEMO
#SQLSAT454
Q&A
Questions?
#SQLSAT454
ROW-LEVEL SECURITY
#SQLSAT454
Row Level Security – Key Features
Fine-grained
access control
Centralized
Security Logic
Application
Transparency
In multi-tenant
databases, limits
access by other
users who share the
same tables.
Predicate-based
access control logic
resides inside the
database and is
schema-bound to
the tables it protects.
No application
changes. Existing
queries keep
working.
#SQLSAT454
Row-Level Security
EMEA
Salesperson
Manager
LATAM
Salesperson
APAC
Salesperson
#SQLSAT454
dbo.Customer
Name
Area
Budget
Evil Inc.
EMEA
2.500
Wealthy Corp.
LATAM
2.350
Greedy Corp.
APAC
1.500
Row-Level Security - Concepts
Predicate function
User-defined inline iTVF implementing access control logic.
Can be arbitrarily complicated
Security predicate
Applies a predicate function to a particular table (APPLY)
Two types: filter predicates and blocking predicates
Security policy
Collection of security predicates
Manages security across multiple tables
#SQLSAT454
Row-Level Security – How it works
dbo.Customer
Name
Area
Budget
Evil Inc.
EMEA
2.500
Wealthy Corp.
LATAM
2.350
Greedy Corp.
APAC
1.500
Security Policy
SELECT *
FROM Customer
EMEA
Salesperson
#SQLSAT454
SELECT *
FROM Customer
APPLY itvf_securityPredicate()
DBA
Working with Row-Level Security
DEMO
#SQLSAT454
Row-Level Security - Limitations
SCHEMABINDING: all tables in the predicate
function must reside in the database
Performance impact: queries are rewritten
When authenticating the application,
CONTEXT_INFO() can be used to filter on real user
Not really secure if users can run ad-hoc queries
Don’t lock out the DBA!
#SQLSAT454
Q&A
Questions?
#SQLSAT454
Resources
Always Encrypted on MSDN
Getting Started With Always Encrypted
Performance impact of Always Encrypted
Dynamic Data Masking on MSDN
Using Dynamic Data Masking
Row-Level Security on MSDN
Introduction to Row-Level Security
Row-Level Security Limitations
#SQLSAT454
Evaluations
Don’t forget to compile evaluations form here
http://speakerscore.com/sqlsat454
#SQLSAT454
#sqlsat454
THANKS!
#SQLSAT454