SQL Server 2016
New innovations
Roberto Fonseca
rffonseca@outlook.com
http://rffonseca.wordpress.com
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
Faça Mais. Conquiste mais.
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
Always Encrypted
SQL Server 2016
SQL Database
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
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
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
DEMO
Row-level security
SQL Server 2016
SQL Database
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
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
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
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
DEMO
Dynamic data masking
SQL Server 2016
SQL Database
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
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
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
DEMO

Sql server 2016 discovery day

  • 1.
  • 2.
  • 3.
    Há uma oportunidade de tomarmelhores 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
  • 4.
  • 5.
    Performance Segurança AvailabilityScalability 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
  • 6.
    Always Encrypted SQL Server2016 SQL Database
  • 7.
    Impede a divulgação de dados CriptografiaClient-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 dadosarmazenados 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
  • 10.
  • 11.
  • 12.
    Acesso controlado apenasas 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 POLICYmySecurityPolicy 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 deRLS 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
  • 16.
  • 17.
    Dynamic data masking SQLServer 2016 SQL Database
  • 18.
    Configuração simplificada noportal 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 Agilidadee 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
  • 21.