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

在为 Azure SQL Always Encrypted 数据库设置 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,则会显示错误

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

【问题讨论】:

    标签: azure azure-devops azure-sql-database azure-keyvault dacpac


    【解决方案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。

    另见

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

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2020-04-07
      • 2020-12-20
      • 2020-02-06
      • 2020-10-13
      • 2022-07-04
      相关资源
      最近更新 更多