尝试使用 powershell 从 Azure 还原数据库时,Octopus 部署找不到 SQL 凭据

Posted

技术标签:

【中文标题】尝试使用 powershell 从 Azure 还原数据库时,Octopus 部署找不到 SQL 凭据【英文标题】:Octopus deploy can't find SQL Credential when trying to restore a database from Azure using powershell 【发布时间】:2018-07-17 10:44:44 【问题描述】:

我已经为 restore from url 一个来自 Azure 的数据库编写了一个 powershell 脚本。在我的机器上本地测试这工作正常。当我登录到服务器并运行脚本时,它工作正常。

但是,如果我设置 octopus deploy 来运行脚本,则无法找到 SQL 凭据。此代码返回false

If (Get-SqlCredential -Name $credentialName -Path $instanceName -ErrorAction SilentlyContinue )

所以我认为章鱼触手尝试使用 LocalSystem 运行脚本,但它没有获取 SQL 凭据的权限。为什么 LocalSystem 无法获取凭据?

我的怀疑正确吗?我注意到您可以在特定用户帐户下运行触手,但这是最好的方法吗?此外,它对于每个部署都将拥有这些提升的特权,这并不是很好,因为其他部署都不需要任何额外的特权。

我不愿意在现有用户帐户下运行它,我真的不想为这个部署过程创建一个新帐户。

除了使用其他用户帐户之外,还有其他方法吗?还是上述不正确,还有其他原因?

【问题讨论】:

【参考方案1】:

我不使用 Octopus 进行部署,但使用任何与 SQL Server 相关的此类性质的 3rd 方工具...创建部署帐户始终是最佳实践,以确保您的权限最少。

在 Octopus 的文档中快速搜索,他们似乎暗示了与 deployment account specific to an environment 相同的信息:

最后,为每个环境设置不同的部署帐户是一种很好的安全做法。该部署帐户仅有权在其环境中进行架构更改。用于更改测试环境的帐户不应更改生产环境。

【讨论】:

好建议。我会遵循这个【参考方案2】:

我已经使用我的 Octopus Tentacle 帐户进行了测试,它可以正常工作。所以确实是LocalSystem的权限问题。这一点,以及 Shawn Melton 链接到 here 的文档表明这是首选的做事方法。

遇到同样问题的朋友,可以打开Services更改触手使用的用户账号,右键点击相应的OctopusDeploy Tentacle(可能不止一个)、PropertiesLog On和输入帐户详细信息:

【讨论】:

以上是关于尝试使用 powershell 从 Azure 还原数据库时,Octopus 部署找不到 SQL 凭据的主要内容,如果未能解决你的问题,请参考以下文章

31.PowerShell连接Azure(国内&国际)

使用 powershell 在 Azure 中不同订阅的存储容器之间复制 blob

powershell 使用SendGrid从PowerShell发送电子邮件(在Azure中)

Azure Service Fabric 从 Visual Studio 发布升级 - PowerShell 脚本错误

从 Azure 自动化获取自定义模块详细信息

Azure Devops 使用 Powershell 从特定组织中删除特定用户