繁体   English   中英

Azure DevOps CI/CD 管道 Azure SQL 始终加密的数据库问题

[英]Azure DevOps CI/CD Pipelines for the Azure SQL Always Encrypted database Issues

在为 Azure SQL 始终加密数据库设置 Azure DevOps CI/CD 管道期间,

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

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

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

  • 通常列主密钥的证书存储在客户端机器上,而不是 SQL 服务器机器上。 如果是这种情况,您将无法将数据插入到具有始终加密列的表中,请执行主密钥配置。

(希望您已经知道,但可以通过这种方式解决 ssms 中的信息不匹配错误)

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

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

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

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

  • Always Encrypted 使用两种类型的加密密钥:列加密密钥 (CEK) 和列主密钥 (CMK)。 请参阅使用始终加密的开发数据库

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

    例子:

    声明@OPERATION_ID int = 4

    声明 @PARAMETER_NAME varchar(100) = 'xyz'

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

另见

  1. azure-encryption-server-side-client-side-azure-key-vault
  2. 创建和存储列主密钥始终加密
  3. ci-with-a-sql-always-encrypted-column

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM