用于 Azure SQL Always Encrypted 数据库问题的 Azure DevOps CI/CD 管道

Posted

技术标签:

【中文标题】用于 Azure SQL Always Encrypted 数据库问题的 Azure DevOps CI/CD 管道【英文标题】:Azure DevOps CI/CD Pipelines for the Azure SQL Always Encrypted database Issues 【发布时间】:2022-01-06 06:05:30 【问题描述】:

在为 Azure SQL Always Encrypted 数据库设置 Azure DevOps CI/CD 管道期间,

    示例:- Table1 由 5 列组成,5 列中的 Column1 和 Column2 被加密 连接字符串中的始终启用设置 Dacpac 文件成功创建,没有任何问题,并且能够查看 Table1 在使用事务数据将数据插入 Table1 时观察到问题 错误消息:列/变量的加密方案不匹配 如果在 SSMS 工作室中手动执行这个 dacpac 文件,同样的代码可以正常工作 如果使用通过 SSDT 或 CI/CD 管道执行 dapac,则会显示错误

请让我知道您对此问题的看法?

【问题讨论】:

【参考方案1】:

通常与 Dacpac 一起工作的 CI/CD 管道在启用始终加密的情况下很复杂。请检查以下几点是否可以缩小问题范围。

通常,列主密钥的证书存储在 客户端计算机,而不是 SQL 服务器计算机上。如果是这样的话, 您无法使用 Always 将数据插入表中 加密列,做主密钥配置。

(希望您已经知道,但是可以解决您在 ssms 中的信息不匹配错误this way)

根据permissions-for-publishing-a-dac-package-if-always-encrypted

如果在 DACPAC 中设置了 Always Encrypted,则发布 DAC 包 或/和在目标数据库中,您可能需要以下部分或全部 权限,取决于架构中的差异 DACPAC 和目标数据库架构。

更改任何列主密钥,更改任何列加密密钥,查看任何 列主密钥定义,查看任何列加密密钥 定义

另请注意,Azure SQL 是一种 PaaS 服务,这意味着它接收 以新的兼容性透明且相对频繁地更新 等级。尝试更新 SSDT 版本。始终加密支持 SQL Server 数据库 V12 的所有版本。

Always Encrypted 使用两种类型的加密密钥:列 加密密钥 (CEK) 和列主密钥 (CMK)。见developing databases using always encrypted

请执行变量声明和赋值 同一行。

例子:

声明@OPERATION_ID int = 4

DECLARE @PARAMETER_NAME varchar(100) = 'xyz'

尝试将要插入的值存储在变量或结果中并存储在应用程序中,然后将结果集中的数据插入 SQL Server。

另见

    azure-encryption-server-side-client-side-azure-key-vault create-and-store-column-master-keys-always-encrypted ci-with-a-sql-always-encrypted-column

【讨论】:

以上是关于用于 Azure SQL Always Encrypted 数据库问题的 Azure DevOps CI/CD 管道的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server Always On 可用性组卡在“同步/恢复中”

用于合并到 SQL 的 Azure 突触合并语法错误

powershell 使用powershell创建用于测试SQL的Azure VM

如何在 SQL Server 数据库中将 Azure 存储用于 elmah 日志而不是 elmah 日志

用于使用 Azure SQL Server 数据的 C# Web API

Azure SQL 池它到底是啥以及它可以用于 Postgres 数据库