Segurança da tabela temporal

Aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Para entender como a segurança se aplica às tabelas temporais, é necessário entender os princípios de segurança que se aplicam a elas. Após entender esses princípios, você estará pronto para saber mais sobre a segurança das 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:

Princípio Descrição
Habilitar/desabilitar o controle de versão do sistema requer privilégios mais altos sobre os objetos afetados Habilitar e desabilitar SYSTEM_VERSIONING requer a permissão CONTROL na tabela atual e na tabela de histórico.
Os dados de histórico não podem ser modificados diretamente Quando SYSTEM_VERSIONING é ON, os usuários não podem alterar os dados de histórico, independentemente de suas permissões reais na tabela atual ou na tabela de histórico. Essa limitação inclui modificações nos dados e no esquema. 1
Consultar dados de histórico requer a permissão SELECT na tabela de histórico Um usuário com permissão SELECT na tabela atual não tem automaticamente a permissão SELECT na tabela de histórico.
Uma auditoria revela operações que afetam a tabela de histórico de formas específicas As configurações de auditoria da tabela atual não são automaticamente aplicadas à tabela de histórico. A auditoria precisa ser habilitada explicitamente para a tabela de histórico. Depois de habilitada, a auditoria na tabela de histórico captura regularmente todas as tentativas diretas de acessar os dados (independentemente de serem bem-sucedidas ou não).

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

A tabela temporal CREATE/ALTER expõe informações de que essa verificação de permissão também ocorre 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 mostram que a tabela de histórico foi afetada, mas additional_information fornece o contexto necessário (DML foi resultado de SYSTEM_VERSIONING).

1 Se você tiver a permissão ALTER na tabela atual e na tabela de histórico e descartar uma coluna na tabela atual, a coluna associada na tabela de histórico também será descartada, mesmo que SYSTEM_VERSIONING seja ON.

Executar operações de esquema

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

Operações de esquema ALTER não permitidas

Operação Tabela atual Tabela de histórico
DROP TABLE Não permitido Não permitido
ALTER TABLE...SWITCH PARTITION Somente SWITCH IN (consulte Partição com tabelas temporais) Somente SWITCH OUT (consulte Partição com tabelas temporais)
ALTER TABLE...DROP PERIOD Não permitido N/D
ALTER TABLE...ADD PERIOD N/D Não permitido

Operações ALTER TABLE permitidas

Operação Atual Histórico
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 CREATE temporal table

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

Permissão ALTER nos esquemas nos quais as tabelas atual e de histórico são criadas
Permissão CREATE TABLE no banco de dados

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

Permissão CONTROL na tabela de histórico especificada como parte da instrução CREATE TABLE que cria a tabela temporal.
Auditoria 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 os esquemas dessa 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, devido à falta de permissões para alterar o esquema da tabela temporal ou à falta de permissões na tabela do histórico.

Segurança da instrução ALTER temporal table SET (SYSTEM_VERSIONING ON/OFF)

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

Permissão CREATE TABLE no banco de dados.

Permissão ALTER nos esquemas nos quais a tabela de histórico está sendo criada.
Permissão CONTROL na tabela original que foi alterada.

Permissão CONTROL na tabela de histórico especificada como parte da instrução ALTER TABLE.
Auditoria A auditoria mostra que a tabela temporal foi alterada e a tabela do histórico foi criada ao mesmo tempo. Esta 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 requer acesso à tabela de histórico. A operação pode falhar devido à falta de permissões para a tabela de histórico ou para a tabela atual.

Segurança da instrução SELECT

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