CEK密钥不可和迁移将不适用删除本地数据库中创建之前后,当我跑我的应用程序

问题描述 投票:0回答:1

我通过这个链接如下实施的始终是加密的概念与实体框架在我的应用程序。

https://blogs.msdn.microsoft.com/sqlsecurity/2015/08/27/using-always-encrypted-with-entity-framework-6/

这是我initialSchema.cs向上()迁移方法我当前应用程序的迁移文件夹下的文件。

public override void Up()
    {
        CreateTable(
            "dbo.PersonalInfoTables",
            c => new
                {
                    ID = c.Int(nullable: false, identity: true),
                    Firstname= c.String(),
                    LastName= c.String(),
                    Address= c.String(),
                    SSN = c.String(),
                })
            .PrimaryKey(t => t.ID);

    }

从那以后,我发表意见SSN申请,并添加下面的SQL语句用于加密SSN列。

 //manually add the encrypted columns
        Sql("ALTER TABLE [dbo].[PersonalInfoTables] ADD [SSN] [nvarchar](11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH(ENCRYPTION_TYPE = DETERMINISTIC, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256', COLUMN_ENCRYPTION_KEY = CEK_Auto1) NOT NULL");

然后运行程序包管理器控制台更新-database命令。

上面的代码将工作只有在CEK密钥已经可用于加密列。但是当过我跑我的应用程序再次删除现有的本地数据库之后,它给像CEK关键的例外是不可用,也没有申请移民。

如何解决上述问题,添加ALTER SQL语句之后并删除本地数据库?

解决上述问题的唯一,改变向上()迁移代码再一次,但我不希望这样的情况。

ef-code-first ef-migrations azure-sql-database local-database always-encrypted
1个回答
0
投票

请参阅的Code First - this article的迁移部分,您需要(例如,通过使用SQL Server Management Studio)来创建数据库列主密钥,列加密密钥,模式等实体框架之外。关于这方面更多的信息可以发现here

© www.soinside.com 2019 - 2024. All rights reserved.