テンポラル テーブル セキュリティ
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL Database Azure SQL Managed Instance
テンポラル テーブルに適用されるセキュリティを理解するには、テンポラル テーブルに適用されるセキュリティ原則を理解する必要があります。 これらのセキュリティ原則について理解したら、CREATE TABLE
、ALTER TABLE
、SELECT
ステートメントのセキュリティの学習に入ることができます。
セキュリティ原則
次の表は、テンポラル テーブルに適用されるセキュリティ原則についてまとめたものです。
原則 | 説明 |
---|---|
有効/無効なシステムによるバージョン管理を切り替えるには、影響を受けるオブジェクトに対する最高の権限が必要になる | 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 スキーマ操作
操作 | 現行テーブル | 履歴テーブル |
---|---|---|
DROP TABLE |
不許可 | 不許可 |
ALTER TABLE...SWITCH PARTITION |
SWITCH IN のみ (「テンポラル テーブルでのパーティション分割」参照) |
SWITCH OUT のみ (「テンポラル テーブルでのパーティション分割」参照) |
ALTER TABLE...DROP PERIOD |
不許可 | 該当なし |
ALTER TABLE...ADD PERIOD |
該当なし | 不許可 |
許可される ALTER TABLE 操作
操作 | 現行 | [履歴] |
---|---|---|
ALTER TABLE...REBUILD |
許可 (非依存) | 許可 (非依存) |
CREATE INDEX |
許可 (非依存) | 許可 (非依存) |
CREATE STATISTICS |
許可 (非依存) | 許可 (非依存) |
CREATE テンポラル テーブル ステートメントのセキュリティ
機能 | 新しい履歴テーブルを作成する | 既存の履歴テーブルを再利用する |
---|---|---|
必要なアクセス許可 | データベースの CREATE TABLE 権限現行テーブルと履歴テーブルが作成されるスキーマの ALTER 権限 |
データベースの CREATE TABLE 権限現行テーブルが作成されるスキーマの ALTER 権限。テンポラル テーブルを作成する CONTROL ステートメントの一部として指定される履歴テーブルの CREATE TABLE 権限。 |
監査 | 監査により、ユーザーが 2 つのオブジェクトを作成しようとしたことが示されます。 データベースにテーブルを作成する権限がないため、あるいはどちらかのテーブルのスキーマを変更する権限がないため、操作が失敗することがあります。 | 監査により、テンポラル テーブルが作成されたことが示されます。 データベースにテーブルを作成する権限がない、テンポラル テーブルのスキーマを変更する権限がない、または履歴テーブルに対する権限がないため、操作が失敗することがあります。 |
ALTER Temporal TABLE SET (SYSTEM_VERSIONING オン/オフ) ステートメントのセキュリティ
機能 | 新しい履歴テーブルを作成する | 既存の履歴テーブルを再利用する |
---|---|---|
必要なアクセス許可 | データベースの CONTROL 権限。データベースの CREATE TABLE 権限。履歴テーブルが作成されるスキーマの ALTER 権限。 |
変更される元のテーブルの CONTROL 権限。CONTROL ステートメントの一部として指定される履歴テーブルの ALTER TABLE 権限。 |
監査 | 監査により、テンポラル テーブルが変更され、同時に履歴テーブルが作成されたことが示されます。 データベースにテーブルを作成する権限がないため、履歴テーブルのスキーマを変更する権限がないため、あるいはテンポラル テーブルを変更する権限がないため、この操作が失敗することがあります。 | 監査により、テンポラル テーブルが変更されたが、操作には履歴テーブルへのアクセス許可が必要であったことが示されます。 履歴テーブルに対する権限がないため、あるいは現行テーブルに対する権限がないため、操作が失敗することがあります。 |
SELECT ステートメントのセキュリティ
履歴テーブルに影響を与えない SELECT
ステートメントの SELECT
権限は変更されません。 履歴テーブルに影響を与える SELECT
ステートメントについては、現行テーブルと履歴テーブルの両方で SELECT
権限が必要になります。