用于 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 可用性组卡在“同步/恢复中”
powershell 使用powershell创建用于测试SQL的Azure VM
如何在 SQL Server 数据库中将 Azure 存储用于 elmah 日志而不是 elmah 日志