0% found this document useful (0 votes)
204 views

Protecting Data With Encryption and Auditing

This document provides an overview of four modules related to data security in SQL Server: auditing data access, implementing SQL Server audit, managing SQL Server audit, and protecting data with encryption. It describes options for auditing data access like triggers, temporal tables, and common criteria compliance. It also outlines how to define, implement, and manage SQL Server audits, including creating audit specifications and using dynamic management views. The document concludes with information on encrypting data with SQL Server through techniques like transparent data encryption, always encrypted, and dynamic data masking.

Uploaded by

Phil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
204 views

Protecting Data With Encryption and Auditing

This document provides an overview of four modules related to data security in SQL Server: auditing data access, implementing SQL Server audit, managing SQL Server audit, and protecting data with encryption. It describes options for auditing data access like triggers, temporal tables, and common criteria compliance. It also outlines how to define, implement, and manage SQL Server audits, including creating audit specifications and using dynamic management views. The document concludes with information on encrypting data with SQL Server through techniques like transparent data encryption, always encrypted, and dynamic data masking.

Uploaded by

Phil
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

Module 4

Protecting Data with Encryption


and Auditing
Module Overview

• Options for Auditing Data Access in SQL Server


• Implementing SQL Server Audit
• Managing SQL Server Audit
• Protecting Data with Encryption
Lesson 1: Options for Auditing Data Access in
SQL Server

• Enabling Common Criteria Compliance


• Auditing with Triggers
• Auditing with Temporal Tables
• Demonstration: Auditing with Temporal Tables
Enabling Common Criteria Compliance

• Common Criteria Compliance:


• Ratified as an international standard in 1999
• Supersedes C2 rating
• ISO standard 15408
• Azure SQL does not meet the above compliance

• Enable common criteria compliance


enabled configuration option by using
sp_configure:
• Residual Information Protection (RIP)
• Ability to view login statistics
• Column GRANT does not override DENY
Auditing with Triggers

• Triggers can provide part of an auditing solution:


• Data Manipulation Language triggers for data modification
• Logon triggers for tracking logins
• Data Definition Language triggers for schema modification

• Limitations:
• Performance impact (DML triggers)
• Sufficiently powerful users can disable triggers
• Lack of SELECT triggers
• Trigger firing order must be managed
Auditing with Temporal Tables

• The database engine automatically records the valid


from/to dates of records in the database as they are
changed
• Temporal tables limitations: Seems to be a
common deficiency
• Cannot audit SELECT statements
• INSERT, UPDATE, and DELETE statements all audited in the same way
• History table will be in the same database
• User tracking requires adding a column to the table to hold
SUSER_SNAME
• SUSER_SNAME returns the login identification name from a user’s SID
• SUSER_NAME returns the login identification name of the user

Often returns the same value,


SELECT SUSER_SNAME;
but note where the information
SELECT SUSER_NAME;
comes from
Lesson 2: Implementing SQL Server Audit

• Introduction to Extended Events


• Introduction to SQL Server Audit
• Defining a Server Audit
• Audit Actions and Action Groups
• Creating Server Audit Specifications
• Creating Database Audit Specifications
• Audit-Related Dynamic Management Views and
System Views
• Auditing in Azure SQL Database
• Demonstration: Using SQL Server Audit
• Custom Audit Events
• Demonstration: Using Custom Audit Events
Introduction to Extended Events

• Extended Events is a general-purpose, event-driven


monitoring framework
• SQL Server Audit is based on Extended Events
• Terminology:
• Event – Things to track during code execution
• Target – What you are logging, or “targeting”
• Action – Additional data to collect when event triggered
• Predicate – Filters used to restrict which events captured
• Type and map – Reference data, data type, lookup values
• Session – Links events and actions to one or more targets
Introduction to SQL Server Audit

• Server-level audit
• All editions of SQL Server
• Database-level audit
• Enterprise, Developer, and Evaluation editions
• Terminology:
• Server Audit – Where does the data go?
• Server Audit Specification – Server-level action groups raised by EE
• Database Audit Specification – DB-level actions raised by EE
• Actions – Raise events to be added to an audit
• Action Groups – Logical groups of actions
• Target – Stores the results of the audit
Defining a Server Audit
• Specify:
• Target
• Queue delay (time in ms that SQL buffers before sending to target)
• Action on failure
• Set STATE = ON to enable
CREATE SERVER AUDIT SecurityAudit
TO FILE (FILEPATH = '\\MIA-SQL\AuditFiles\’ ,
MAXSIZE = 0 MB ,
MAX_ROLLOVER_FILES = 2147483647 ,
RESERVE_DISK_SPACE = OFF)
WITH (QUEUE_DELAY = 1000 ,
ON_FAILURE = FAIL_OPERATION);
GO

ALTER SERVER AUDIT SecurityAudit


WITH (STATE = ON);
Audit Actions and Action Groups

• Action Groups
• Server level
• Database level
• Audit level

• Actions
• Database level

• Actions and action groups are linked to an audit


with an audit specification
Creating Server Audit Specifications

• Specify:
• Audit
• Action groups to be included
• State

CREATE SERVER AUDIT SPECIFICATION AuditLogins


FOR SERVER AUDIT SecurityAudit
ADD (FAILED_LOGIN_GROUP),
ADD (SUCCESSFUL_LOGIN_GROUP)
WITH (STATE = ON);
Creating Database Audit Specifications

• Specify:
• Audit
• Action Groups
• Actions on specific securable objects
• May be filtered by specific database principals
• State
CREATE DATABASE AUDIT SPECIFICATION DBSecurity
FOR SERVER AUDIT SecurityAudit
ADD (DATABASE_PRINCIPAL_CHANGE_GROUP),
ADD (SELECT ON SCHEMA::HumanResources BY db_datareader)
WITH (STATE = ON);
Audit-Related Dynamic Management Views and
System Views

• Dynamic Management Views


Note 1: More about Views
• sys.dm_audit_actions later in the course.
• sys.dm_audit_class_type_map
Note 2: If I ask, on
• sys.dm_server_audit_status the exam, “What is DMV”,
do NOT write Department
• System Views of Motor Vehicles.
• sys.server_audits
• sys.server_file_audits
• sys.server_audit_specifications
• sys.server_audit_specifications_details
• sys.database_audit_specifications
• sys.audit_database_specification_details
Demonstration: Using SQL Server Audit

In this demonstration, you will see how to


configure SQL Server Audit
Custom Audit Events

• Allows you to create custom audit entries:


• Add USER_DEFINED_AUDIT_GROUP to an audit specification
• Call sp_audit_write from Transact-SQL code

CREATE TRIGGER HR.BonusChecker ON HR.EmployeeBonus


AFTER INSERT, UPDATE
AS
IF EXISTS (SELECT * FROM inserted WHERE bonus > 1000)
BEGIN
EXEC sp_audit_write
@user_defined_event_id = 12,
@succeeded = 1,
@user_defined_information = N'An employee bonus is over $1000';
END
Custom Audit Events

• Allows you to create custom audit entries:


• Add USER_DEFINED_AUDIT_GROUP to an audit specification
• Call sp_audit_write from Transact-SQL code

CREATE TRIGGER HR.BonusChecker ON HR.EmployeeBonus


AFTER INSERT, UPDATE
AS
IF EXISTS (SELECT * FROM inserted WHERE bonus > 1000)
BEGIN
EXEC sp_audit_write
@user_defined_event_id = 12,
@succeeded = 1,
@user_defined_information = N'An employee bonus is over $1000';
END

Note! N’ defines the information as Unicode,


difference between nvarchar and varchar
Lesson 3: Managing SQL Server Audit

• Retrieving Audit Data


• Working with the Audit Record Structure
• Potential SQL Server Audit Issues
• Demonstration: Viewing the Output of SQL Server
Audit
Retrieving Audit Data

• Event log targets:


• Use Event Viewer to view Windows event logs

• Binary file targets:


• Retrieve file-based audits by using the
sys.fn_get_audit_file function
SELECT * FROM
sys.fn_get_audit_file('X:\AuditFiles\*',default,default);
(‘File_Pattern’ , Initial_File_Name , Audit_Record_Offset);
Where your stuff is located Number of files into the series
you want to start with

Name the file you want


to start looking at in a series
Working with the Audit Record Structure

• Work with the results of sys.fn_get_audit_file as


with any other result set
• Large audit records
• To comply with Windows event log rules, values for
character fields with greater than 4,000 characters are
split into multiple audit records
• sequence_number column indicates the sequence
needed to join split records together
Potential SQL Server Audit Issues

• Enable and disable auditing


• Change the STATE property to ON or OFF to enable or
disable server audits and audit specifications

• Considerations for SQL Server Audit:


• Audit GUID in restore scenarios
• Audit GUID in mirroring scenarios
• Performance impact of audit writes
• If audit configuration prevents the instance from
starting, use the -f switch
• If a database is restored to an instance that does not
support database audits, the audit is ignored
Lesson 4: Protecting Data with Encryption

• Transparent Data Encryption


• Moving Encrypted Databases
• Extensible Key Management
• Always Encrypted
• Dynamic Data Masking
• Encryption with Azure SQL Database
• Demonstration: Using Dynamic Data Masking
Transparent Data Encryption

• Keys:
• Service master key
• Created at installation of SQL Server
• Encrypts and protects the Database Master Key
• Database master key
• Used to generate a certificate in the master database
• Server certificate
• Generated in the master database
• Encrypts a key in each TDE-enabled database
• Database encryption key
• Used to encrypt the entire database
Transparent Data Encryption

• To enable TDE:
1. Create a Database Master Key
2. Create a server certificate
3. Create a Database Encryption Key
4. Encrypt the database
Moving Encrypted Databases

1. Detach the source database


2. Copy/move database files
3. Create new CMK in the master database of the
target server
4. Generate a new server certificate from a
backup of the server certificate on the source
server, and its associated private key
5. Attach the database
Extensible Key Management

• EKM enables encryption keys to be stored


securely in third-party hardware security
modules, or external EKM providers
• Azure Key Vault may be used as an EKM provider for
SQL Server

• Requires additional SQL Server configuration:


• The EKM provider enabled option must be on
• Credentials must be created to enable SQL Server to
access keys in the EKM provider
The Always Encrypted “Feature”

• Typical Always Encrypted use cases


• Protect sensitive data from access by DBAs

• Encryption Types
• Deterministic (like a hash from known text)
• Randomized (“hash” unpredictable)

• Always Encrypted Keys


• Column master key (used to protect CEK)
• Column encryption key

• Always Encrypted Driver


• Transparent to application
Dynamic Data Masking

• Mask formats:
• Default (Fully Masked)
• Email (first letter exposed, remainder marked xxxxx, end in .com)
• Custom String (String data only, such as address)
• Random (Numbers only, like a phone number)
• Viewing masked data:
• SELECT permission will see masked data
• UNMASK permission will see unmasked data
• Restrictions (you cannot mask the following):
• Always Encrypted
• Calculated columns
Encryption with Azure SQL Database

• Transparent Data Encryption


• Supported

• Extensible Key Management


• Not supported, use Azure Key Vault

• Always Encrypted
• Supported

• Dynamic Data Masking


• Supported
Demonstration: Using Dynamic Data Masking

In this demonstration, you will see how to work


with Dynamic Data Masking
Lab: Using Auditing and Encryption

• Exercise 1: Working with SQL Server Audit


• Exercise 2: Encrypt a Column with Always
Encrypted
• Exercise 3: Encrypt a Database Using TDE

Logon Information
Virtual machine: 20764C-MIA-SQL
User name: ADVENTUREWORKS\Student
Password: Pa55w.rd

Estimated Time: 90 minutes


Lab Scenario

Adventure Works Cycles is a global manufacturer,


wholesaler, and retailer of cycle products.
Following an internal security audit, the company
aims to put auditing in place to track access to the
database, encrypt a database at rest, and encrypt
some sensitive data with Always Encrypted. You
are a database administrator for Adventure Works,
tasked with implementing these changes.
Lab Review

• Which type of Always Encrypted encryption will


consistently encrypt the same plain text value to
the same cypher text (assuming the same
encryption key is used)?
Module Review and Takeaways

• Review Question(s)
• Best Practice

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy