在PowerShell任务中执行az登录

时间:2019-04-17 18:43:51

标签: azure-devops azure-functions

我们有一个Powershell脚本,该脚本循环了许多JSON配置项,并使用Stop-AzureRmWebApp cmdlet停止了我们的Azure函数应用程序。

我们现在要做的是从已经使用z functionapp部署cli构建的zip文件中部署功能。但是,我们收到一条错误消息,要求首先登录,例如az登录。

如何在不使用纯文本用户名或密码的情况下调用z登录?当PowerShell运行时,我们的服务主体已经隐式登录,因此有什么方法可以访问PowerShell中的令牌或类似令牌来实现此目的?

2 个答案:

答案 0 :(得分:2)

使用用户名和密码或使用SP的身份和机密时,有两种选择可以解决。

首先将使用@Shayki的建议,将变量用作“秘密”。 Setting a secret Variable in the Pipeline 使用它就像一个哈希,一旦将其锁定,您将只能替换它而无法取回值。因此,这是非常安全的。

第二个选项是使用KeyVault,这将是最好的选择,因为这是使用Azure AD保护的,并且还可以轻松地更新和/或检索(使用正确的凭据)。这是简单的步骤。

  1. 在Azure中创建KeyVault,并将服务主体的访问密钥/秘密存储为“秘密”-MS Documentation是一个很好的开始。
  2. 在Azure Devops管道上创建一个名为“ Azure Key Vault”的新步骤 Azure Key Vault Step
  3. 填写详细信息,例如Azure订阅和密钥保管箱名称(这是步骤1中的密钥保管箱的名称)。
  4. 请注意机密过滤器,如果您在密钥库中使用“ *”存储了多个机密,则会带出所有机密。因此,我建议您使用所需的那些。您还可以提供逗号分隔的机密列表。 Key vault Steps
  5. 下载机密后,您就可以像管道中的其他任何变量一样使用它们,即$ secretname

希望这些步骤足以解释您的选择,如果您有任何疑问,请告诉我。

答案 1 :(得分:0)

您可以将用户名和密码存储为变量并将其保密(在变量附近选择锁图标),现在变量将被加密而不是计划文本。

PS -您只能在设计器中进行操作,而不能在.yaml管道中进行操作。