Search-AzQuery запрашивает авторизационные ресурсы и возвращает 0 записей

Я хочу запросить все встроенные определения ролей Azure, используя Search-AzQuery. У меня установлен модуль Az.ResourceGroup v1.0.0.

Этот запрос отлично работает в Azure Resource Graph Explorer на портале Azure и возвращает 5 записей:

authorizationresources | where type == "microsoft.authorization/roledefinitions" | where properties["type"] == "BuiltInRole" | limit 5

Если я запускаю тот же запрос локально, используя Search-AzQuery (или az graph query, если уж на то пошло), я получаю ноль записей.

Search-AzGraph -Query 'authorizationresources | where type == "microsoft.authorization/roledefinitions" | where properties["type"] == "BuiltInRole" | limit 5'

Однако если я удалю второй where, он вернет записи.

Search-AzGraph -Query 'authorizationresources | where type == "microsoft.authorization/roledefinitions" | limit 5'

Я также пробовал использовать оператор =~ (чтобы игнорировать регистр при сравнении), но это не имеет значения.

Что я делаю неправильно?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Когда вы запускаете локально, вы не должны работать так, как вы работаете, вы получите 0 записей, как показано ниже:

Чтобы получить правильные результаты, вы должны использовать команду, как показано ниже, и следовать Microsoft-Document:

az graph query -q "
authorizationresources 
| where type == 'microsoft.authorization/roledefinitions' 
| where properties['type'] == 'BuiltInRole' 
"

Также см. мой ответ в SO-теме.

Редактировать:

Используйте эту команду:

Search-AzGraph -Query " 
authorizationresources 
| where type =~ 'microsoft.authorization/roleassignments'
"

Редактировать2:

$rith = Search-AzGraph -Query "
authorizationresources
| where type =~ 'microsoft.authorization/roleassignments'
"
$rithwik = $rith | Where-Object { $_.properties.principalType -eq 'X' }
$rithwik

Я согласен с @wenbo, UseTenantScope, в конце концов, все будет работать.

Я попробовал ваш запрос с помощью Search-AzQuery, но он по-прежнему возвращает 0 записей.

David Gardiner 30.08.2024 07:26

Попробуйте с az graph query -q, у меня это сработало

RithwikBojja 30.08.2024 07:28

Для меня это тоже работает. Итак, единственная разница в том, что вы разделили его на несколько строк? Было бы неплохо заставить его работать и с Search-AzGraph

David Gardiner 30.08.2024 07:30

Да, в этом и есть разница, и это будет работать только так.

RithwikBojja 30.08.2024 07:31

Задокументировано ли где-нибудь требование использования нескольких строк? Я не вижу этого упоминания на странице, на которую вы ссылаетесь

David Gardiner 30.08.2024 07:33

Нет, это не так, но при таком задании он дает записи

RithwikBojja 30.08.2024 07:34

Давайте продолжим обсуждение в чате.

RithwikBojja 30.08.2024 07:44
Ответ принят как подходящий
Search-AzGraph -Query "authorizationresources | where type == 'microsoft.authorization/roledefinitions' | where properties['type'] == 'BuiltInRole' | limit 5" -UseTenantScope 

Стоит добавить UseTenantScope, я много пробовала и обнаружила, что этот метод работает.

Почему это работает:

roledefinitions имеет идентификатор ресурса, подобный этому /providers/Microsoft.Authorization/RoleDefinitions/aabbc5dd-1af0-458b-a942-81af88f9c138, который не связан с определенной подпиской. Это Basic tenant queryссылка

Имеет отличие от Basic query, необходимо передать массив subscribeIds.

Другие вопросы по теме