簡體   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