Este documento resume as principais inovações do SQL Server 2016, incluindo:
(1) Novos recursos de análise operacional e suporte a JSON nativo;
(2) Melhorias no In-Memory OLTP e suporte a bancos de dados temporais;
(3) Novos recursos de segurança como Always Encrypted, row-level security e dynamic data masking.
3. Há uma
oportunidade de
tomar melhores
decisões com uma
infinidade de
dados.
A explosão de fontes de dados...
…leva a uma explosão de dados…
…e que leva faz com que os negócios
aprendam mais desses dados
2013-2020 CAGR = 41%
25B
4.0B1.3B
2010 2013 2020
Source: Forecast: Internet of Things, Endpoints and Associated Services, Worldwide, 2014. Gartner. Oct 20 2014
Source: IDC “Digital Universe”, Dec. 2012
5. Performance Segurança Availability Scalability
Operational analytics
Insights on operational data;
works with in-memory OLTP and
disk-based OLTP
In-memory OLTP
enhancements
Greater T-SQL surface area,
terabytes of memory supported,
and greater number of parallel
CPUs
Query data store
Monitor and optimize query plans
Native JSON
Expanded support for JSON data
Temporal database
support
Query data as points in time
Always encrypted
Dados sensíveis sempre
criptografados e ainda assim
permitindo queries
Row-level security
Controle de acesso apurado aos
dados armazenados
Dynamic data masking
Ofuscamento de dados para
prevenção de acesso não
autorizado
Other enhancements
Operações de auditoria
Suporte a TDE para tabelas In-
Memory OLTP
Habilidade de auditoria com
rastreamento de alterações de
dados (Temporal Tables)
Enhanced AlwaysOn
Three synchronous replicas for
automatic failover across domains
Round-robin load balancing of
replicas
Automatic failover based on
database health
DTC for transactional integrity
across database instances with
AlwaysOn
Support for SSIS with AlwaysOn
Enhanced database
caching
Cache data with automatic,
multiple TempDB files per instance
in multicore environments
Performance de Missão Crítica
7. Impede a
divulgação de
dados
Criptografia Client-side de
dados sensíveis usando
chaves que NUNCA são
compatilhadas com o DB
Queries em dados
criptografados
Suporte a comparação de
igualdade, incluindo joins,
group by e distinct.
Transparente para
Aplicação
Mudanças mínimas na
aplicação através de
melhorias apenas na
biblioteca de acesso a dados
Permite aos clientes armazenarem dados sensíveis em ambiente fora do seu controle.
Dados mantidos protegidos, mesmo para usuários com privilégio avançado (sysadmins) mas
que não devem ver esses dados
Always Encrypted
Security
8. Randomized
Encrypt('123-45-6789') = 0x17cfd50a
Repeat: Encrypt('123-45-6789') = 0x9b1fcf32
- Permite visibilidade transparente para
aplicação mas NÃO PERMITE busca
- Segurança avançada
Deterministic
Encrypt('123-45-6789') = 0x85a55d3f
Repeat: Encrypt('123-45-6789') = 0x85a55d3f
- Permite visibilidade transparente para
aplicação E busca
Exemplo: Em cláusulas WHERE e joins,
distinct, group by
Dois tipos de
criptografia
Criptografia randomizada usa métodos
que criptografam dados de forma
randomizada, onde o mesmo dado de
entrada possui valores criptografados
diferentes
Criptografia Deterministica usa métodos
que sempre geram o mesmo valor
criptografado para o mesmo dado de
entrada
Tipos de criptografia - Always Encrypted
Security
9. Como Funciona
Protege dados armazenados e em movimento, tanto em ambiente on-
premises quanto na nuvem
SQL Server ou SQL Database
ADO .NET
4.6
Nome
João da Silva
Nome
0x19ca706fbd9a
Result SetResult Set
Client
Nome CPF Pais
0x19ca706fbd9a 0x7ff654ae6d Brasil
dbo.Clientes
criptografado
"SELECT Name FROM Customers WHERE SSN = @SSN",
0x7ff654ae6d
Criptografado
"SELECT Nome FROM Clientes WHERE CPF = @CPF",
“12345678900"
Dados criptografados nunca são expostos em
texto plano no SQL Server
Limite de Confiança
Security
12. Acesso controlado apenas as linhas definidas na tabela
Previne o acesso não autorizado aos dados quando
multiplos usuários compartilham as mesmas tabelas ou em
aplicações multitenant (Multiplos clientes)
Administrador via SSMS ou SSDT
Lógica é garantida dentro da base de dados
Protegendo a privacidade dos dados garantindo o
acesso correto somente aos registros permitidos
SQL Database
Usuário 1
Usuário 2
Usuário 3
A necessidade da segurança em nível de linha
Security
13. CREATE SECURITY POLICY mySecurityPolicy
ADD FILTER PREDICATE dbo.fn_securitypredicate(wing, startTime, endTime)
ON dbo.patients
Predicate function
Função definida pelo usuário (inline table-valued function iTVF) implementa a lógica de segurança
Pode conter lógica complexa e joins com outras tabelas
Security predicate
Interliga a predicate function à uma tabela, aplicando a lógica de segurança em todas as queries
Dois tipos: Predicados de filtro e predicados de bloqueio
Security policy
Coleção de predicados de segurança para gerenciamento
RLS conceitos
Security
14. Two
App user (e.g., nurse) selects from Patients table
Three
Security Policy transparently rewrites query to apply filter predicate
Database Policy Manager
CREATE FUNCTION dbo.fn_securitypredicate(@wing int)
RETURNS TABLE WITH SCHEMABINDING AS
return SELECT 1 as [fn_securitypredicate_result] FROM
StaffDuties d INNER JOIN Employees e
ON (d.EmpId = e.EmpId)
WHERE e.UserSID = SUSER_SID() AND @wing = d.Wing;
CREATE SECURITY POLICY dbo.SecPol
ADD FILTER PREDICATE dbo.fn_securitypredicate(Wing) ON Patients
WITH (STATE = ON)
Filter
Predicate:
INNER
JOIN…
Security
Policy
Application
Patients
Nurse
SELECT * FROM Patients
SELECT * FROM Patients
SEMIJOIN APPLY dbo.fn_securitypredicate(patients.Wing);
SELECT Patients.* FROM Patients,
StaffDuties d INNER JOIN Employees e ON (d.EmpId = e.EmpId)
WHERE e.UserSID = SUSER_SID() AND Patients.wing = d.Wing;
RLS em três etapas
Security
15. Usos recomendados de RLS
RLS padrão
Lógica de negócio customizada para determiner quais linhas cada usuário pode consultar baseado
em uma regra, departamento ou nível de segurança
Bases Multitenant (Multiplos Inquilinos)
Garantir que os clientes (inquilinos) podem acessar apenas os seus registros em uma base
compartilhada, tendo a lógica de acesso determinada pelo database e não pela aplicação
For example: Aplicações multiempresa
Reporting, analytics e data warehousing
Diferentes usuários podem acessar o mesmo database através de várias ferramentas, e visualizer
apenas os registros permitidos baseado em uma lógica de segurança aplicada ao usuário/regra
Security
18. Configuração simplificada no portal Azure
Política criada em nível de coluna para
determinados usuários
Data masking aplicado nos dados em tempo real
baseado na política de mascaramento
Multiplas funções de mascaramento disponíveis
(mascaramento total ou parcial do dado) para
várias categorias de dados sensíveis (CC, CPF,
Email, Salário, etc.)
SQL Database
SQL Server 2016
Tabela.CartaoCredito
4465-6571-7868-5796
4468-7746-3848-1978
4484-5434-6858-6550
Real-time data masking;
partial masking
Dynamic data masking
Previne o abuso de dados sensíveis
ocultando os dados reais dos usuários
Security
19. Conformidade
regulatória
Proteção de
dados sensíveis
Agilidade e
transparência
Dados são mascarados em real-
time. Os dados no database
continuam intactos.
Transparente para a aplicação e
respeitando o direito definido
para o usuário
Limita o acesso a dados sensíveis através de políticas de mascaramento de dados, sem afetar
a integridade do database.
Benefícios do uso de data masking
Security
20. Como funciona?
ALTER TABLE [Employee] ALTER COLUMN [SocialSecurityNumber]
ADD MASKED WITH (FUNCTION = ‘SSN()’)
ALTER TABLE [Employee] ALTER COLUMN [Email]
ADD MASKED WITH (FUNCTION = ‘EMAIL()’)
ALTER TABLE [Employee] ALTER COLUMN [Salary]
ADD MASKED WITH (FUNCTION = ‘RANDOM(1,20000)’)
GRANT UNMASK to admin1
1) Área de segurança define a política de mascaramento para as tabelas e colunas desejadas2) Um usuário da Aplicação consulta a tabela3) A política de data masking é aplicada dependendo do usuário que está consultando os dados
SELECT [Name],
[SocialSecurityNumber],
[Email],
[Salary]
FROM [Employee]
Security