Безопасность темпоральной таблицы

Относится к: SQL Server 2016 (13.x) и более поздние версии База данных SQL AzureУправляемый экземпляр SQL AzureSQL Database в Microsoft Fabric

Чтобы обеспечить безопасность временных таблиц, необходимо понимать принципы безопасности, которые к ним применяются. После того как вы поймёте эти принципы, вы сможете применить меры безопасности к операторам CREATE TABLE, ALTER TABLE и SELECT.

Принципы безопасности

В следующей таблице описаны принципы безопасности, применимые к темпоральным таблицам.

Принцип Description
Включение и отключение системного управления версиями требует наивысших привилегий для затронутых объектов Для включения и отключения SYSTEM_VERSIONING требуется разрешение CONTROL как для текущей таблицы, так и для таблицы журнала.
Исторические данные нельзя изменять напрямую Когда для SYSTEM_VERSIONING задано значение ON, пользователи не могут изменять данные журнала, независимо от имеющихся у них разрешений для текущей или исторической таблицы. Это ограничение включает как изменения данных, так и схемы. 1
Для запроса исторических данных требуется разрешение SELECT для таблицы журнала Пользователь, имеющий разрешение SELECT для текущей таблицы, не получает автоматически разрешение SELECT для таблицы истории.
Журнал аудита показывает, каким образом операции влияют на таблицу истории Параметры аудита из текущей таблицы не применяются автоматически к таблице журнала. Вы должны явно включить аудит для таблицы истории. После включения аудит в таблице истории фиксирует все прямые попытки получить доступ к данным, независимо от того, успешны они или нет.

SELECT С расширением временного запроса показано, что операция повлияла на таблицу истории.

CREATE/ALTER Темпоральная таблица предоставляет сведения о том, что проверка разрешений также выполняется в таблице журнала. Файл аудита содержит дополнительные записи в таблице истории.

Операции с языком обработки данных (DML) в текущей таблице показывают, что операция повлияла на таблицу истории, но additional_information предоставляет необходимый контекст (DML был результатом SYSTEM_VERSIONING).

1 Если у вас есть ALTER разрешение на текущую таблицу и таблицу журнала, и вы удаляете столбец из текущей таблицы, соответствующий столбец в таблице журнала также удаляется, даже если SYSTEM_VERSIONING имеет значение ON.

Выполнить операции со схемой

Если SYSTEM_VERSIONING задано значение ON, операции изменения схемы ограничены.

Запрещенные ALTER SCHEMA операции

Операция Текущая таблица Историческая таблица
DROP TABLE Запрещено Запрещено
ALTER TABLE...SWITCH PARTITION SWITCH IN только (см . раздел с темпоральными таблицами) SWITCH OUT только (см . раздел с темпоральными таблицами)
ALTER TABLE...DROP PERIOD Запрещено N/A
ALTER TABLE...ADD PERIOD N/A Запрещено

Разрешённые операции ALTER TABLE

Операция Current History
ALTER TABLE...REBUILD Разрешено (автономно) Разрешено (автономно)
CREATE INDEX Разрешено (автономно) Разрешено (автономно)
CREATE STATISTICS Разрешено (автономно) Разрешено (автономно)

Безопасность инструкции темпоральной таблицы CREATE

Feature Создать новую таблицу истории Повторно использовать существующую таблицу истории
Требования к разрешениям CREATE TABLE разрешение в базе данных

ALTER Разрешение на схемы, где вы создаёте текущие и исторические таблицы
CREATE TABLE разрешение в базе данных

ALTER Разрешение на схему, где вы создаёте текущую таблицу.

CONTROL разрешение для таблицы журнала, указанное как часть инструкции CREATE TABLE, создающей темпоральную таблицу.
Audit Аудит показывает, что пользователи пытались создать два объекта. Операция могла провалиться из-за отсутствия разрешений на создание таблицы в базе данных или из-за отсутствия разрешений на изменение схем для любой из таблиц. Аудит показывает, что была создана темпоральная таблица. Операция может завершиться ошибкой из-за отсутствия разрешения на создание таблицы в базе данных, отсутствие разрешений на изменение схемы для темпоральной таблицы или отсутствие разрешений на таблицу журнала.

Безопасность инструкции ALTER для временной таблицы SET (SYSTEM_VERSIONING)

Feature Создать новую таблицу истории Повторно использовать существующую таблицу истории
Требования к разрешениям CONTROL разрешение в базе данных.

CREATE TABLE разрешение в базе данных.

ALTER Права на схемы, в которых вы создаёте таблицу истории.
CONTROL разрешение на исходную таблицу, которую вы изменяете.

CONTROL разрешение на таблицу журнала, указанную в рамках инструкции ALTER TABLE .
Audit Аудит показывает, что темпоральная таблица была изменена и в то же время была создана прежняя таблица. Эта операция может провалиться из-за отсутствия разрешений на создание таблицы в базе данных, отсутствия разрешений на изменение схемы для таблицы истории или разрешения на изменение временной таблицы. Аудит показывает, что темпоральная таблица была изменена, но операция требовала доступа к таблице журнала. Операция может завершиться ошибкой из-за отсутствия разрешений на таблицу журнала или отсутствия разрешений на текущую таблицу.

Безопасность инструкции SELECT

SELECT разрешение остаётся неизменным для инструкций SELECT, которые не влияют на таблицу истории. Для операторов SELECT, влияющих на таблицу журнала, требуется разрешение SELECT как для текущей таблицы, так и для таблицы журнала.