【问题标题】:Azure Credentials for build server用于构建服务器的 Azure 凭据
【发布时间】:2017-03-20 18:23:25
【问题描述】:

我在使用 Azure 时遇到了身份验证问题。我有一个运行 powershell 脚本的连续构建服务器,我收到如下消息:

您的 Azure 凭据尚未设置或已过期,请运行 Login-AzureRMAccount 以设置您的 Azure 凭据。

我不喜欢在构建服务器上使用我的帐户登录。我想我可以创建另一个仅用于构建的帐户,但这也会过期。有没有更好的处理方法?

【问题讨论】:

  • 据我所知,这是不可能的。也许您可以使用用户来构建服务器并授予受限权限。更多信息请参考此link

标签: powershell azure


【解决方案1】:

您不应在构建/部署脚本中使用 Login-AzureRmAccount,因为这是一个交互式登录,而应使用 Add-AzureRmAccount

Add-AzureRmAccount 要求您在 Azure AD 中使用 create a service principal(应用程序)并使用其客户端 ID 和密钥/密钥进行身份验证。

这是一个可以使用的代码sn-p:

$clientID = "<the client id of your AD Application>"
$key = "<the key of your AD Application>"
$SecurePassword = $key | ConvertTo-SecureString -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential `
 -argumentlist $clientID, $SecurePassword

Add-AzureRmAccount -Credential $cred -Tenant "xxxx-xxxx-xxxx-xxxx" -ServicePrincipal

查找您的租户 ID(单次订阅)

$tenant = (Get-AzureRmSubscription).TenantId

查找租户 ID(多个订阅)

$tenant = (Get-AzureRmSubscription -SubscriptionName "My Subscription").TenantId

【讨论】:

  • 据我所知,login-Azurermaccount 也可以进行非交互登录。请参考这个link
  • 嗯,也许它支持一种非交互式登录的场景,但另一个命令实际上是为此目的而设计的。所以在这种情况下它代表了一个更好的选择
  • 如果OP只想用非交互登录方式登录,那是正确的答案。但是,微软账号(如*@hotmail)不支持非交互登录。
  • 这是否意味着我需要先创建一个“Azure ActiveDirectory”? (顺便说一句,当我在这里添加 cmets 时,你如何收到通知?或者你呢?)
  • 对于观看此内容的任何人,您需要转到“应用注册”并添加 Web/API。在这种情况下,URL 没有任何作用,但您必须添加一些内容。您需要使用应用程序 ID 并为应用程序创建一个密钥,用作您的密码。上面的代码可以很好地处理这些值。我会尝试添加一个答案以显示我稍后所做的事情
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 2016-09-24
  • 2016-11-23
  • 2021-09-06
  • 2016-11-18
相关资源
最近更新 更多