Segurança da tabela temporal

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Base de Dados SQL do Azure Azure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Para proteger tabelas temporais, deve compreender os princípios de segurança que lhes são aplicáveis. Depois de compreender estes princípios, pode aplicar medidas de segurança às instruções CREATE TABLE, ALTER TABLE e SELECT.

Princípios de segurança

A tabela a seguir descreve os princípios de segurança que se aplicam às tabelas temporais:

Principle Description
Ativar/desativar o controle de versão do sistema requer os privilégios mais altos em objetos afetados Habilitar e desabilitar SYSTEM_VERSIONING requer a permissão CONTROL na tabela atual e na tabela de histórico.
Os dados do histórico não podem ser modificados diretamente Quando SYSTEM_VERSIONING é ON, os utilizadores não podem alterar dados de histórico, independentemente das suas permissões na tabela atual ou de histórico. Essa limitação inclui modificações de dados e esquemas. 1
Consultar dados do histórico requer permissão SELECT na tabela de histórico Um utilizador com permissão SELECT na tabela atual não tem automaticamente permissão SELECT na tabela de histórico.
A auditoria revela operações que afetam a tabela de histórico de maneiras específicas As configurações de auditoria da tabela atual não são aplicadas automaticamente à tabela de histórico. Tens de ativar a auditoria explicitamente para a tabela de histórico. Depois de o ativar, a auditoria na tabela de histórico capta todas as tentativas diretas de aceder aos dados, independentemente de terem sido bem-sucedidas ou não.

SELECT Com extensão de consulta temporal, mostra que a operação afetou a tabela de histórico.

CREATE/ALTER tabela temporal expõe informações de que a verificação de permissão também acontece na tabela de histórico. O arquivo de auditoria contém registros adicionais para a tabela de histórico.

As operações de linguagem de manipulação de dados (DML) na tabela atual revelam que a operação afetou a tabela de histórico, mas additional_information fornece o contexto necessário (DML foi o resultado de SYSTEM_VERSIONING).

1 Se tiver ALTER permissão na tabela atual e na tabela de histórico, e eliminar uma coluna na tabela atual, a coluna associada na tabela de histórico também é eliminada, mesmo que SYSTEM_VERSIONING seja ON.

Executar operações de esquema

Quando SYSTEM_VERSIONING é definido como ON, as operações de modificação de esquema são limitadas.

Operações proibidas ALTER SCHEMA

Operation Tabela atual Tabela de histórico
DROP TABLE Disallowed Disallowed
ALTER TABLE...SWITCH PARTITION SWITCH IN apenas (consulte Partição com tabelas temporais) SWITCH OUT apenas (consulte Partição com tabelas temporais)
ALTER TABLE...DROP PERIOD Disallowed N/A
ALTER TABLE...ADD PERIOD N/A Disallowed

Operações permitidas ALTER TABLE

Operation Current History
ALTER TABLE...REBUILD Permitido (de forma independente) Permitido (de forma independente)
CREATE INDEX Permitido (de forma independente) Permitido (de forma independente)
CREATE STATISTICS Permitido (de forma independente) Permitido (de forma independente)

Segurança da instrução da tabela temporal CREATE

Feature Criar nova tabela de histórico Reutilizar tabela de histórico existente
Permissão necessária CREATE TABLE permissão no banco de dados

ALTER Permissão nos esquemas onde crias as tabelas atuais e de histórico
CREATE TABLE permissão no banco de dados

ALTER Permissão no esquema onde crias a tabela atual.

CONTROL permissão na tabela de histórico especificada como parte da instrução CREATE TABLE que cria a tabela temporal.
Audit A auditoria mostra que os usuários tentaram criar dois objetos. A operação pode falhar devido à falta de permissões para criar uma tabela na base de dados, ou à falta de permissões para alterar esquemas para qualquer uma das tabelas. A auditoria mostra que a tabela temporal foi criada. A operação pode falhar devido à falta de permissão para criar uma tabela no banco de dados, falta de permissões para alterar o esquema para a tabela temporal ou falta de permissões na tabela de histórico.

Segurança da instrução ALTER tabela SET temporal (SYSTEM_VERSIONING)

Feature Criar nova tabela de histórico Reutilizar tabela de histórico existente
Permissão necessária CONTROL permissão no banco de dados.

CREATE TABLE permissão no banco de dados.

ALTER Permissão nos esquemas onde crias a tabela de histórico.
CONTROL Permissão na tabela original que alteraste.

CONTROL permissão sobre a tabela de histórico especificada como parte da instrução ALTER TABLE.
Audit A auditoria mostra que a tabela temporal foi alterada e a tabela de histórico foi criada ao mesmo tempo. Esta operação pode falhar devido à falta de permissões para criar uma tabela na base de dados, à falta de permissões para alterar o esquema da tabela de histórico, ou à falta de permissão para modificar a tabela temporal. A auditoria mostra que a tabela temporal foi alterada, mas a operação exigiu acesso à tabela de histórico. A operação pode falhar devido à falta de permissões na tabela de histórico ou à falta de permissões na tabela atual.

Segurança da instrução SELECT

SELECT permissão permanece inalterada para SELECT instruções que não afetam a tabela de histórico. Para instruções SELECT que afetam a tabela de histórico, é necessária a permissão SELECT quer na tabela atual quer na tabela de histórico.