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

適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed Instance

テンポラル テーブルに適用されるセキュリティを理解するには、テンポラル テーブルに適用されるセキュリティ原則を理解することが重要です。 これらのセキュリティ原則について理解したら、 CREATE TABLEALTER TABLESELECT ステートメントのセキュリティの学習に入ることができます。

セキュリティ原則

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

原則 説明
システムによるバージョン管理の有効/無効を切り替えるには、影響を受けるオブジェクトに対する最高の権限が必要になる SYSTEM_VERSIONING の有効/無効を切り替えるには、現行テーブルと履歴テーブルの両方の CONTROL 権限が必要になります。
履歴データを直接変更できない SYSTEM_VERSIONING がオンのときは、現行テーブルまたは履歴テーブルの実際の権限に関係なく、履歴データを変更することはできません。 データとスキーマのいずれも変更できません。
履歴データにクエリを実行するには、履歴テーブルの SELECT 権限が必要になる 現行テーブルに SELECT 権限が与えられているから、履歴テーブルに SELECT 権限が与えられているとは限りません。
監査は特定の方法で履歴テーブルに影響を与える操作を発見する 現在のテーブルからの監査設定は、履歴テーブルに自動的には適用されません。 監査は、履歴テーブルに対して明示的に有効にする必要があります。

有効にすると、履歴テーブルの監査では、データにアクセスするための直接的な試みがすべて記録されます (成功/失敗に関係なく)。

SELECT と一時的なクエリ拡張で、その操作で履歴テーブルが影響を受けたことが示されます。

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

現行テーブルの DML 操作で、履歴テーブルが影響を受けたが、additional_info で必要なコンテキストが提供されることが判明します (DML は system_versioning の結果でした)。

スキーマ操作を実行する

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

許可されていない ALTER スキーマ操作

操作 現行テーブル 履歴テーブル
DROP TABLE 禁止 禁止
ALTER TABLE...SWITCH PARTITION SWITCH IN のみ (「 テンポラル テーブルでのパーティション分割」参照) SWITCH OUT のみ (「 テンポラル テーブルでのパーティション分割」参照)
ALTER TABLE...DROP PERIOD 禁止 -
ALTER TABLE...ADD PERIOD - 禁止

許可される ALTER TABLE 操作

操作 Current 履歴
ALTER TABLE...REBUILD 許可 (非依存) 許可 (非依存)
CREATE INDEX 許可 (非依存) 許可 (非依存)
CREATE STATISTICS 許可 (非依存) 許可 (非依存)

CREATE Temporal TABLE ステートメントのセキュリティ

特徴量 新しい履歴テーブルを作成する 既存の履歴テーブルを再利用する
必要な権限 データベースのCREATE TABLE 権限

現行テーブルと履歴テーブルが作成されるスキーマのALTER 権限
データベースのCREATE TABLE 権限

現行テーブルが作成されるスキーマのALTER 権限

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

ALTER Temporal TABLE SET (SYSTEM_VERSIONING オン/オフ) ステートメントのセキュリティ

特徴量 新しい履歴テーブルを作成する 既存の履歴テーブルを再利用する
必要な権限 データベースのCONTROL 権限

データベースのCREATE TABLE 権限

履歴テーブルが作成されるスキーマのALTER 権限
変更される元のテーブルのCONTROL 権限

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

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

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

参照