Мне нужно перечислить на панели мониторинга PowerBI все регистрации приложений, которые содержат слово «test» в имени и их владельца, с помощью запроса KQL и Azure Resource Graph. Он пробовал разные варианты из документации и выглядел примерно так, но безуспешно:
aadApplications
| project ApplicationId = appId, DisplayName, CreatedTime = createdDateTime
| join kind=leftouter (
AadApplicationOwners
| project ApplicationId = appId, Owner = userPrincipalName
) on ApplicationId
| summarize Owners = make_set(Owner), AppRoles = make_set(appRoleDisplayNames) by ApplicationId, DisplayName, CreatedTime
| project ApplicationID, Owners = tostring(Owners), DisplayName, AppRoles = tostring(AppRoles), CreatedTime
Приложения AAD являются объектами в службе Azure Active Directory, а не в ресурсах Azure, поэтому вы не можете запрашивать их с помощью Resource Graph.
Вы согласны запросить его через PowerShell, CLI или REST API?
@Rukmini да, ты прав. Я не смог найти решения для прямого подключения из Power BI. Поэтому я извлек данные с помощью сценария Powershell, с помощью планировщика в учетную запись хранения, затем выполнил некоторую очистку данных и поместил отчет Power BI сверху. Спасибо!
Обратите внимание: приложения AAD — это объекты в службе Azure Active Directory, а не ресурсы Azure. Обратитесь к этому блогу от AdamMarczakIO.
Следовательно, в качестве альтернативы вы можете использовать PowerShell, CLI или Rest API для запроса приложений Azure Active Directory.
Чтобы просмотреть список приложений, содержащих «тест» и владельцев приложений с подробной информацией, используйте приведенный ниже скрипт PowerShell:
Connect-MgGraph
# Fetch applications containing "test" in their name
$applications = Get-MgApplication | Where-Object { $_.DisplayName -like "*test*" }
$tableData = @()
foreach ($app in $applications) {
$owners = Get-MgApplicationOwner -ApplicationId $app.Id -ErrorAction SilentlyContinue
$ownerId = if ($owners) { $owners.Id } else { "" }
$ownerName = if ($owners) { $owners.DisplayName } else { "" }
$tableData += [PSCustomObject]@{
"Application ID" = $app.Id
"Application Name" = $app.DisplayName
"Owner ID" = $ownerId
"AppRoles" = $app.AppRoles
"Created Time" = $app.CreatedDateTime
}
}
$tableData | Format-Table -AutoSize "Application ID", "Application Name", "Owner ID", "AppRoles", "Created Time"
Выход:
Application ID Application Name Owner ID AppRoles Created Time
XXX Test XXX XXX XXXX
См. это reddit.com/r/AZURE/comments/qcv4h6/…