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 dadosPermissão ALTER nos esquemas nos quais as tabelas atual e de histórico são criadas |
Permissão CREATE TABLE no banco de dadosPermissã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.
Conteúdo relacionado
- Tabelas temporais
- Introdução a tabelas temporais com controle de versão do sistema
- Verificações de consistência do sistema de tabela temporal
- Partição com tabelas temporais
- Considerações e limitações da tabela temporal
- Gerenciar a retenção de dados históricos em tabelas temporárias com versão do sistema
- Tabelas temporais com controle de versão do sistema e tabelas com otimização de memória
- Exibições e funções de metadados de tabela temporal