尝试使用 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
(可能不止一个)、Properties
、Log On
和输入帐户详细信息:
【讨论】:
以上是关于尝试使用 powershell 从 Azure 还原数据库时,Octopus 部署找不到 SQL 凭据的主要内容,如果未能解决你的问题,请参考以下文章
使用 powershell 在 Azure 中不同订阅的存储容器之间复制 blob
powershell 使用SendGrid从PowerShell发送电子邮件(在Azure中)