Azure Powershell - 自动登录Azure-AzureRmAccount AD登录 - 用于Azure功能

时间:2017-04-27 20:07:39

标签: azure authentication azure-functions azure-powershell

我有this Azure Powershell script,它成功地将SQL Azure数据库备份到Azure Blob。

目前的形式,它要求我通过AD登录。

我现在需要实现此脚本以特定间隔通过Azure功能执行。

脚本的第一个片段:

$subscriptionId = "YOUR AZURE SUBSCRIPTION ID"

Login-AzureRmAccount
Set-AzureRmContext -SubscriptionId $subscriptionId

因此我不需要使用Login-AzureRmAccount,而是将其替换为不需要人工输入的方法。

我找到了这个链接:

https://cmatskas.com/automate-login-for-azure-powershell-scripts/

  • 简而言之,作者:
    1. 创建Azure AD应用程序(使用自己的密码)
    2. 创建服务主体
    3. 为服务主体分配权限

这是一次性手动创作 - 非常完美。

然后,作者登录到这个新创建的应用程序

$psCred = New-Object System.Management.Automation.PSCredential($azureAccountName, $azurePassword)


Add-AzureRmAccount -Credential $psCred -TenantId e801a3ad-3690-4aa0-a142-1d77cb360b07 -ServicePrincipal

我的问题:

  1. 这是我应该做些什么才能自动化我的应用程序并阻止人类登录?

  2. 在步骤1中创建的Azure AD应用 - 我可以将此应用作为我的Azure功能的起点吗?

3 个答案:

答案 0 :(得分:5)

  1. 是的,您可以使用该路由,或使用证书身份验证,或使用Azure AD用户,它可以使用用户\密码登录,但被认为不如服务主体安全。
  2. 是的,您可以将一个服务主体用于您想要的任意数量的Azure功能。

答案 1 :(得分:1)

要在Azure Functions中使用Azure PowerShell,您可以在另一个SO线程中引用以下响应。示例是HTTP-Trigger,但您可以修改它以使用Timer-Trigger作为用例。这是链接:

Azure Function role like permissions to Stop Azure Virtual Machines

答案 2 :(得分:0)

以管理员身份运行PowerShell,您需要在PowerShell中安装AzureRM,

  • 登录Azure

Login-AzureRmAccount

  • 输入您的Azure凭据
  • 获取订阅详情 输入

Get-AzureRmSubscription

  • 使用订阅ID选择订阅。

Select-AzureRmSubscription -SubscriptionId xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

  • 使用以下命令保存AzureProfile

Save-AzureRmProfile -Path "C:\AzureScripts\profile.json"

  • json文件可用于登录Azure

Select-AzureRmProfile -Path "C:\AzureScripts\profile.json"

将此行置于.ps1文件之上, 您不需要人工输入

参考:http://www.smartcoding.in/blog/auto-login-azure-power-shell