Sql-Server
使用 NETWORK SERVICE 使用者通過 sqlpackage.exe 部署 dacpac
我在 Azure DevOps Server 中有一個數據庫發布管道,它通過執行 sqlpackage.exe 命令來發布數據庫的 Powershell 命令部署我們的 dacpac 文件。我正在使用 NETWORK SERVICE 使用者將數據庫發佈到我們的 DEV 和 QA 環境,因為我想避免將使用者名和密碼放在發布管道上。我們將很快將這些 dacpac 文件部署到生產環境,並且生產伺服器位於我們的網路之外。使用網路服務使用者在生產環境中部署 dacpac 文件是否存在安全問題?除了將使用者名和密碼放在秘密變數中之外,還有哪些選擇?
在您描述的情況下,除了將使用者名/密碼添加為管道中的秘密變數(如您所述)之外,我想不出任何辦法。
我用來避免使用使用者名和密碼的一種方法是讓 Azure DevOps 代理服務作為最低權限的 Windows 服務帳戶(而不是 NEWTWORK SERVICE)執行。您只需將該 Windows 帳戶添加為 SQL Server 實例上的登錄名,並授予它適當的權限以使用 SSDT 創建和部署數據庫。
這使您可以使用 Windows 身份驗證連接並部署到遠端伺服器 - 但前提是該伺服器也“知道”Windows 使用者(可能不是這種情況,正如您提到的產品伺服器在您的網路之外 - 我認為這意味著它不在同一個 Active Directory 域中)。