Partilhar via


Segurança da tabela temporal

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

Para entender a segurança como ela se aplica às tabelas temporais, você deve entender os princípios de segurança que se aplicam às tabelas temporais. Depois de entender esses princípios de segurança, você estará pronto para mergulhar na segurança em torno das declarações CREATE TABLE, ALTER TABLEe 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 usuários não podem alterar os dados do histórico, independentemente de suas permissões reais 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. A auditoria precisa ser habilitada explicitamente para a tabela de histórico. Uma vez habilitada, a auditoria na tabela de histórico captura regularmente todas as tentativas diretas de acessar os dados (independentemente de terem sido bem-sucedidas ou não).

SELECT com extensão de consulta temporal mostra que a tabela de histórico foi afetada com essa operação.

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 DML na tabela atual revelam que a tabela de histórico foi afetada, mas additional_information fornece o contexto necessário (DML foi resultado de SYSTEM_VERSIONING).

1 Se tiver permissão ALTER na tabela atual e na tabela de histórico e remover uma coluna na tabela atual, a coluna associada na tabela de histórico também será removida, 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 de esquema ALTER não permitidas

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 ALTER TABLE permitidas

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 nos quais as tabelas atual e de histórico estão sendo criadas
CREATE TABLE permissão no banco de dados

ALTER permissão no esquema no qual a tabela atual será criada.

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 no banco de dados ou devido à falta de permissões para alterar esquemas para qualquer tabela. 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 temporal SET (SYSTEM_VERSIONING ON/OFF)

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 sobre os esquemas nos quais a tabela de histórico é criada.
CONTROL permissão na tabela original que foi alterada.

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. Essa operação pode falhar devido à falta de permissões para criar uma tabela no banco 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 as SELECT declarações que afetam a tabela de histórico, é necessária SELECT permissão tanto na tabela atual quanto na tabela de histórico.