【问题标题】:Memory Optimized Tables + Encryption and Identity Column内存优化表 + 加密和身份列
【发布时间】:2017-04-21 08:31:46
【问题描述】:

我想知道是否有可能始终加密Memory Optimized Table 并自动为其主键播种?例如,我想创建以下内容:

CREATE TABLE Foo
(
    [Id] [int] Identity(1,1) NOT NULL,
    [Bar] NVARCHAR(MAX) NOT NULL,
    CONSTRAINT [PK_Foo] PRIMARY KEY NONCLUSTERED ([Id] ASC)
)
WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY)
GO

相当简单的表,最初创建良好,但是,当我尝试加密列 Bar 时,出现以下异常。

2017 年 4 月 21 日 09:23:00 [错误] WorkitemExecution:消息:内部 异常:System.Data.SqlClient.SqlException 详细信息:无法插入 IDENTITY_INSERT 时表“Foo”中标识列的显式值 设置为关闭..

我还尝试在创建表语句之后设置SET IDENTITY_INSERT Foo ON,但仍然没有运气。

阅读文档似乎并不表明这是不可能的,但也许我错过了什么?如果这是不可能的,我有另一种我知道可行的方法。

我想我的问题总结起来是.. “内存优化表是否支持始终使用标识列加密”

【问题讨论】:

    标签: sql-server azure-sql-database always-encrypted


    【解决方案1】:

    您无法使用 Always Encrypted 对标识列进行加密,无论它们是存储在内存优化表还是常规表中。在正常的 Always Encrypted 查询处理流程中,插入加密列的值是在客户端创建和加密的。请注意,只有客户端拥有加密密钥并且可以加密/解密数据。 SQL Server 在设计上无法访问加密密钥,也无法执行加密操作。标识列值是在服务器端生成的,因此它们不适合上述工作流程。

    了解您尝试加密身份列的原因会很有用。 Always Encrypted 旨在用于保护敏感数据。自动生成的标识符通常不被视为敏感信息。

    谢谢,

    雅库布

    【讨论】:

    • 对不起,我的意思不是加密身份列,我的意思是加密另一个字段(要加密),但表中恰好有一个身份列。例如,字段 BAR 将仅加密。
    【解决方案2】:

    即使在通过向导加密失败后,您也应该为您创建 CMK 和 CEK。您可以通过在 SSMS 对象资源管理器中浏览到 YourDb -> Security -> Always Encrypted Keys -> Column Encryption Keys 来检查创建的 CEK 的名称。在我的例子中,CEK 的名称是 CEK_Auto1

    如果您发现上述位置没有列加密密钥,您可以按照配置列主密钥(新列主密钥)和配置列加密密钥(新列加密密钥)中概述的步骤创建新的在this article

    你应该可以按如下方式创建表

    CREATE TABLE Foo
    (
        [Id] [int] Identity(1,1) NOT NULL,
        [Bar] NVARCHAR(MAX) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK_Auto1], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL,
        CONSTRAINT [PK_Foo] PRIMARY KEY NONCLUSTERED ([Id] ASC)
    )
    WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY)
    GO
    

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多