テンポラル テーブル セキュリティ
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed Instance
テンポラル テーブルに適用されるセキュリティを理解するには、テンポラル テーブルに適用されるセキュリティ原則を理解することが重要です。 これらのセキュリティ原則について理解したら、 CREATE TABLE、 ALTER TABLE、 SELECT ステートメントのセキュリティの学習に入ることができます。
セキュリティ原則
次の表は、テンポラル テーブルに適用されるセキュリティ原則についてまとめたものです。
原則 | 説明 |
---|---|
システムによるバージョン管理の有効/無効を切り替えるには、影響を受けるオブジェクトに対する最高の権限が必要になる | 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 権限が必要になります。
参照
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示