Segurança da tabela temporal
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Para compreender como a segurança se aplica às tabelas temporais, é importante entender as entidades de segurança que se aplicam a elas. Quando entender esses princípios, você estará pronto para saber mais sobre a segurança das instruçõ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:
Princípio | DESCRIÇÃO |
---|---|
Habilitar/desabilitar a determinação 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 do histórico |
Os dados do histórico não podem ser modificados diretamente | Quando SYSTEM_VERSIONING está ATIVADO, os usuários não podem alterar os dados do histórico, independentemente de suas permissões reais na tabela atual ou na tabela do histórico. Isso inclui as modificações dos dados e do esquema. |
Consultar dados de histórico requer a permissão SELECT para a tabela do histórico | Ter apenas a permissão SELECT para a tabela atual não implica em ter a permissão SELECT para a tabela do histórico. |
Operações de auditoria de superfície que afetam a tabela do 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). A permissãoSELECT com a extensão de consulta temporal mostra que a tabela do histórico foi afetada com essa operação. A tabela temporalCREATE/ALTER que expõe informações verificadas por essa permissão também ocorre na tabela do histórico. O arquivo de auditoria inclui um registro adicional para a tabela do histórico. As operações de DML na superfície da tabela atual cuja tabela do histórico foi afetada, exceto additional_info, fornecem o contexto necessário (DML foi resultado de system_versioning). |
Executando operações de esquema
Quando SYSTEM_VERSIONING é definido como ATIVO, 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 (veja Particionamento de tabelas temporais) | Somente SWITCH OUT (veja Particionamento de tabelas temporais) |
ALTER TABLE...DROP PERIOD | Não permitido | - |
ALTER TABLE...ADD PERIOD | - | Não permitido |
Operações ALTER TABLE permitidas
Operação | Current | 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ãoCREATE TABLE no banco de dados PermissãoALTER para os esquemas nos quais a tabela atual e a tabela do histórico são criadas. |
PermissãoCREATE TABLE no banco de dados PermissãoALTER para o esquema no qual a tabela atual será criada. PermissãoCONTROL para a 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 os esquemas dessa tabela. | 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 ATIVADO/DESATIVADO)
Recurso | Criar nova tabela de histórico | Reutilizar tabela de histórico existente |
---|---|---|
Permissão necessária | PermissãoCONTROL no banco de dados PermissãoCREATE TABLE no banco de dados PermissãoALTER para os esquemas nos quais a tabela do histórico é criada |
PermissãoCONTROL para a tabela original que foi alterada PermissãoCONTROL para 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 do histórico foi criada ao mesmo tempo. A operação pode falhar devido à falta de permissões para criar uma tabela no banco de dados, devido à 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 para a tabela do histórico. A operação pode falhar devido à falta de permissões para a tabela do histórico ou para a tabela atual. |
Segurança da instrução SELECT
A permissãoSELECT é inalterada para as instruções SELECT que não afetam a tabela do histórico. Para as instruções SELECT que afetam a tabela do histórico, a permissão SELECT é necessária para a tabela atual e para a tabela do histórico.
Consulte Também
- Tabelas temporais
- Introdução a tabelas temporais com controle da versão do sistema
- Verificações de consistência do sistema de tabela temporal
- Particionamento com tabelas temporais
- Considerações e limitações da tabela temporal
- Gerenciar a retenção de dados históricos em tabelas temporais com controle de versão do sistema
- Tabelas temporais com controle da versão do sistema com tabelas com otimização de memória
- Funções e exibições de metadados de tabela temporal