如何使用Azure PowerShell SDK将所需权限添加到Azure Active Directory(AAD)应用程序?

时间:2017-06-17 03:29:13

标签: azure asp.net-web-api permissions azure-active-directory daemon

在我的场景中,我试图自动创建我的一个AAD应用程序,以便它使用为守护程序进程设置的指令调用另一个另一个WebAPI服务(不同的AAD应用程序):

https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-daemon/

我已经能够通过PowerShell自动创建AAD应用程序和所需的访问密钥。

以下是我添加密钥创建应用程序的方法:

# Generate all the keys (secrets) for the AAD application.
$passwordCredentials = @()

foreach ($key in $activeDirectoryApplication.Keys.Key)
{
    $keyKeyVaultName = $key.KeyVaultName
    $keyName = $key.KeyVaultKeyName
    $expiration = $key.Expiration

    LogInfo "Generating key with key name '$keyName' into key vault '$keyKeyVaultName' with key expiry of '$expiration'."
    $passwordCredential = GenerateActiveDirectoryApplicationKeyPasswordCredential $key
    $passwordCredentials += $passwordCredential

    PublishActiveDirectoryApplicationKeyToKeyVault $key $passwordCredential
}

$existingApplication = New-AzureRmADApplication -DisplayName $applicationName -HomePage $applicationHomePage -IdentifierUris @($applicationIdentifier) -PasswordCredentials $passwordCredentials

我无法弄清楚如何在上面的链接中自动执行步骤8,它授予访问WebAPI应用程序的权限:

  
      
  1. 为应用程序配置权限 - 在“设置”菜单中,选择“必需权限”部分,单击“添加”,然后选择“API”,并在文本框中键入“TodoListService”。然后,单击Select Permissions并选择'Access TodoListService'。
  2.   

有没有人知道Azure PowerShell SDK是否可以实现这一点,还是我需要以其他方式(可能是AAD Graph API)进行此操作?

谢谢!

1 个答案:

答案 0 :(得分:0)

要分配权限,您需要使用New-AzureRmRoleAssignment。这将允许您在特定范围内为对象(user \ group \ application)分配权限。如果你需要内置角色,你很高兴。如果您需要创建角色,请使用New-AzureRmRoleDefinition

$role = Get-AzureRmRoleDefinition "Virtual Machine Contributor"
$role.Id = $null
$role.Name = "Classic storage reader"
$role.Actions.Clear()
$role.Actions.Add("Microsoft.ClassicStorage/storageAccounts/read")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/xxxx")
New-AzureRmRoleDefinition -Role $role

读:
https://docs.microsoft.com/en-us/azure/active-directory/role-based-access-control-manage-access-powershell
https://docs.microsoft.com/en-us/powershell/module/azurerm.resources/new-azurermroleassignment?view=azurermps-4.1.0
https://docs.microsoft.com/en-us/powershell/module/azurerm.resources/new-azurermroledefinition?view=azurermps-4.1.0