テンポラル テーブル セキュリティ

対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン Azure SQL DatabaseAzure SQL Managed InstanceSQL Database in Microsoft Fabric

テンポラルテーブルを保護するには、それに適用されるセキュリティ原則を理解しなければなりません。 これらの原則を理解すれば、 CREATE TABLEALTER TABLESELECT の声明にセキュリティを適用できます。

セキュリティの原則

次の表は、テンポラル テーブルに適用されるセキュリティ原則についてまとめたものです。

原理 説明
有効/無効なシステムによるバージョン管理を切り替えるには、影響を受けるオブジェクトに対する最高の権限が必要になる SYSTEM_VERSIONING の有効/無効を切り替えるには、現行テーブルと履歴テーブルの両方の CONTROL 権限が必要になります。
履歴データを直接変更できない SYSTEM_VERSIONINGONされると、ユーザーは現在または履歴テーブルの権限に関わらず履歴データを変更できません。 この制限には、データとスキーマの変更が含まれます。 1
履歴データにクエリを実行するには、履歴テーブルの SELECT 権限が必要になる 現在のテーブルの SELECT アクセス許可を持つユーザーは、履歴テーブルに対する SELECT 権限を自動的に持ちません。
監査により特定の方法で履歴テーブルに影響を与える操作が明らかになる 現在のテーブルからの監査設定は、履歴テーブルに自動的には適用されません。 履歴テーブルに対して監査を明示的に有効にする必要があります。 有効化後は、履歴テーブルの監査が成功したかどうかに関わらず、データへの直接的なアクセスをすべて記録します。

SELECT 時間クエリ拡張を用いて、この操作が履歴テーブルに影響を与えたことを示します。

CREATE/ALTER テンポラル テーブルでは、履歴テーブルでも権限チェックが行われる情報が公開されます。 監査ファイルには、履歴テーブルの追加レコードが含まれます。

現在のテーブルに対するデータ操作言語(DML)の操作は、その操作が履歴テーブルに影響を与えたことを示していますが、必要な文脈 additional_information 提供します(DMLは SYSTEM_VERSIONINGの結果です)。

1 現在のテーブルと履歴テーブルにALTER権限を持ち、現在のテーブルの列を削除すると、SYSTEM_VERSIONINGONであっても、関連する履歴テーブルの列も削除されます。

スキーマ操作を実行する

SYSTEM_VERSIONINGON に設定されているとき、スキーマ変更操作は限定されます。

許可されていないALTER SCHEMA操作

Operation 現在のテーブル 履歴テーブル
DROP TABLE 許可されていない 禁止
ALTER TABLE...SWITCH PARTITION SWITCH IN のみ (「テンポラル テーブルでのパーティション分割」参照) SWITCH OUT のみ (「テンポラル テーブルでのパーティション分割」参照)
ALTER TABLE...DROP PERIOD 禁止 N/A
ALTER TABLE...ADD PERIOD N/A 禁止

許可された ALTER TABLE 操作

Operation Current History
ALTER TABLE...REBUILD 許可 (個別で) 許可 (個別で)
CREATE INDEX 許可 (個別で) 許可 (個別で)
CREATE STATISTICS 許可 (個別で) 許可 (個別で)

CREATE テンポラル テーブル ステートメントのセキュリティ

Feature 新しい履歴テーブルを作成する 既存の履歴テーブルを再利用する
許可が必要です データベースの CREATE TABLE 権限

ALTER 現在テーブルと履歴テーブルを作成するスキーマの権限
データベースの CREATE TABLE 権限

ALTER 現在のテーブルを作成するスキーマの権限。

テンポラル テーブルを作成するCONTROL ステートメントの一部として指定される履歴テーブルの CREATE TABLE 権限。
Audit 監査により、ユーザーが 2 つのオブジェクトを作成しようとしたことが示されます。 この操作は、データベース内のテーブルを作成する権限がなかったり、どちらのテーブルのスキーマを変更する権限がなかったりしても失敗することがあります。 監査により、テンポラル テーブルが作成されたことが示されます。 データベースにテーブルを作成する権限がない、テンポラル テーブルのスキーマを変更する権限がない、または履歴テーブルに対する権限がないため、操作が失敗することがあります。

ALTER時時テーブルのセキュリティ SET (SYSTEM_VERSIONING)文

Feature 新しい履歴テーブルを作成する 既存の履歴テーブルを再利用する
許可が必要です データベースの CONTROL 権限。

データベースの CREATE TABLE 権限。

ALTER 履歴テーブルを作成するスキーマの権限。
CONTROL 変更する元のテーブルに対する権限。

CONTROL ステートメントの一部として指定された履歴テーブルに対する ALTER TABLE 権限。
Audit 監査により、テンポラル テーブルが変更され、同時に履歴テーブルが作成されたことが示されます。 この操作は、データベース内でテーブルを作成する権限の欠如、履歴テーブルのスキーマを変更する権限の欠如、または時間テーブルを変更する権限の欠如により失敗することがあります。 監査により、テンポラル テーブルが変更されたが、操作には履歴テーブルへのアクセス許可が必要であったことが示されます。 履歴テーブルに対する権限がないため、あるいは現行テーブルに対する権限がないため、操作が失敗することがあります。

SELECT ステートメントのセキュリティ

履歴テーブルに影響を与えない SELECT ステートメントの SELECT 権限は変更されません。 履歴テーブルに影響を与える SELECT 文については、現在のテーブルと履歴テーブルの両方に SELECT 権限が必要です。