临时表安全性
适用于: SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例
要了解适用于临时表的安全性,理解适用于临时表的安全主体尤为重要。 在了解这些安全原则后,你就可以准备深入研究关于 CREATE TABLE、 ALTER TABLE和 SELECT 语句的安全性了。
安全原则
下表描述适用于临时表的安全原则:
原则 | 说明 |
---|---|
启用/禁用系统版本控制需要有对受影响对象的最高权限 | 启用和禁用 SYSTEM_VERSIONING 需要有对当前和历史记录表的 CONTROL 权限 |
不能直接修改历史记录数据 | 当 SYSTEM_VERSIONING 为 ON 时,用户不能更改历史记录数据,不管他们对当前和历史记录表的实际权限是什么。 这包括数据和架构修改。 |
查询历史记录数据需要有对历史记录表的 SELECT 权限。 | 仅仅因为用户具有对当前表的 SELECT 权限并不意味着他们有对历史记录表的 SELECT 权限。 |
审核曲面操作会以特定方式影响历史记录表: | 当前表中的审核设置不会自动应用于历史记录表。 需要为历史记录表显式启用审核。 启用后,对历史记录表的审核会定期捕获对访问数据的所有直接尝试(不管它们是否成功)。 具有临时查询扩展的SELECT 显示历史记录表受到了此操作的影响。 CREATE/ALTER 临时表也会公开历史记录表上的权限检查信息。 审核文件将包含历史记录表的其他记录。 对当前表曲面进行 DML 操作,历史记录表受到了影响,但 additional_info 提供必要的上下文(DML 是 system_versioning 的结果)。 |
执行架构操作
当 SYSTEM_VERSIONING 设置为 ON 时,架构修改操作将受限制。
禁止的 ALTER 架构操作
Operation | 当前表 | 历史记录表 |
---|---|---|
DROP TABLE | 已禁止 | 已禁止 |
ALTER TABLE...SWITCH PARTITION | 仅 SWITCH IN(请参阅 临时表分区) | 仅 SWITCH OUT(请参阅 临时表分区) |
ALTER TABLE…DROP PERIOD | 已禁止 | - |
ALTER TABLE…ADD PERIOD | - | 已禁止 |
允许的 ALTER TABLE 操作
Operation | 当前 | 历史记录 |
---|---|---|
ALTER TABLE...REBUILD | 已允许(独立) | 已允许(独立) |
CREATE INDEX | 已允许(独立) | 已允许(独立) |
CREATE STATISTICS | 已允许(独立) | 已允许(独立) |
CREATE Temporal TABLE 语句的安全性
Feature | 创建新的历史记录表 | 重用现有的历史记录表 |
---|---|---|
所需的权限 | 数据库中的CREATE TABLE 权限 在其中创建当前和历史记录表的架构上的ALTER 权限 |
数据库中的CREATE TABLE 权限 将在其中创建当前表的架构上的ALTER 权限 指定其作为创建临时表的CONTROL 语句的一部分的历史记录表上的 CONTROL 权限 |
审核 | 审核显示用户尝试创建两个对象。 操作可能由于缺少在数据库中创建表的权限或缺少改变任一表的架构的权限而失败。 | 审核显示临时表已创建。 操作可能由于缺少在数据库中创建表的权限、缺少改变临时表的架构的权限或缺少对历史记录表的权限而失败。 |
ALTER Temporal TABLE SET (SYSTEM_VERSIONING ON/OFF) 语句的安全性
Feature | 创建新的历史记录表 | 重用现有的历史记录表 |
---|---|---|
所需的权限 | 数据库中的CONTROL 权限 数据库中的CREATE TABLE 权限 在其中创建历史记录表的架构上的ALTER 权限 |
被更改的原始表上的CONTROL 权限 指定其作为CONTROL 语句的一部分的历史记录表上的 CONTROL 权限 |
审核 | 审核显示临时表已更改,同时创建了历史记录表。 操作可能由于缺少在数据库中创建表的权限、缺少改变历史记录表的架构的权限或缺少修改临时表的权限而失败。 | 审核显示临时表已更改,但操作需要对历史记录表的访问权限。 操作可能由于缺少对历史记录表或当前表的权限而失败。 |
SELECT 语句的安全性
SELECT 权限对不影响历史记录表的 SELECT 语句不变。 对于影响历史记录表的 SELECT 语句,在当前表和历史记录表上都需要 SELECT 权限。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈