Azure CLI/PowerShell для получения всех моих подписок Azure и экспорта RoleAssignment

Вопрос или проблема

Добрый день,

Я пытаюсь получить все свои подписки Azure для моего тенанта и экспортировать список всех назначений ролей в панели управления доступом (IAM).

Конечная цель – проверить все типы ролей и узнать, есть ли у каких-либо пользователей доступ без нахождения в группе. После завершения с подписками я также хочу проверить все группы ресурсов.

Я вручную объединю все CSV в один, но если есть способ, чтобы все данные попали в один CSV, это было бы значительно проще.

Connect-AzAccount

$subscriptions = Get-AzSubscription

foreach ($subscription in $subscriptions) {
    Set-AzContext -SubscriptionId $subscription.Id
    $roleAssignments = Get-AzRoleAssignment
    $filePath = "C:\path\to\your\folder\RoleAssignments_$($subscription.Name).csv"
    $roleAssignments | Export-Csv -Path $filePath -NoTypeInformation
}

Сначала вы можете получить все CSV, а затем использовать import-csv и export-csv

   get-childitem -path "C:\path\to\your\folder\" -filter "*.csv"  |%{
 import-csv -path $_.FullName | export-csv -Path "c:\test\newfile.csv" -Append -Force
 }

Или вы можете использовать напрямую, как ниже, имя файла здесь постоянное

$roleAssignments | Export-Csv -Path "c:\test\somestaticfilename.csv" -append -NoTypeInformation

Ответ или решение

Конечно, я помогу вам с этой задачей! Ниже приведенное решение сбора всех подписок Azure и экспорта списка назначений ролей в CSV-файл.

Полное решение с использованием Azure PowerShell

  1. Подключитесь к вашей учетной записи Azure:
    Сначала вам нужно подключиться к вашей учетной записи Azure, используя команду Connect-AzAccount.

  2. Получите все подписки в вашем тенанте:
    Используем команду Get-AzSubscription для получения списка всех подписок.

  3. Создайте CSV-файл для хранения всех назначений ролей:
    Мы будем экспортировать назначения ролей в общий CSV-файл, чтобы упростить дальнейшую обработку данных.

  4. Соберите назначения ролей для каждой подписки:
    Для каждой подписки используйте команду Get-AzRoleAssignment для получения назначений ролей и добавления их в общий CSV-файл.

Вот полный код, который выполняет вышеописанные шаги:

# Подключение к учетной записи Azure
Connect-AzAccount

# Получение всех подписок
$subscriptions = Get-AzSubscription

# Удаление файла, если он существует, чтобы избежать дублирования
$outputFilePath = "C:\path\to\your\folder\AllRoleAssignments.csv"
if (Test-Path $outputFilePath) {
    Remove-Item $outputFilePath
}

# Создание заголовка CSV
"SubscriptionId,SubscriptionName,PrincipalId,PrincipalType,RoleDefinitionName,Scope" | Out-File -FilePath $outputFilePath -Encoding utf8

# Итерирование по каждой подписке
foreach ($subscription in $subscriptions) {
    Set-AzContext -SubscriptionId $subscription.Id
    $roleAssignments = Get-AzRoleAssignment
    foreach ($role in $roleAssignments) {
        # Составляем строки, добавляя информацию о назначениях
        $line = "$($subscription.Id),$($subscription.Name),$($role.PrincipalId),$($role.PrincipalType),$($role.RoleDefinitionName),$($role.Scope)"
        Add-Content -Path $outputFilePath -Value $line
    }
}

# Ваша информация о всех назначениях ролей теперь сохранена в AllRoleAssignments.csv

Объяснение:

  • Подключение: Connect-AzAccount инициализирует сессию PowerShell и позволяет вам взаимодействовать с вашими ресурсами в Azure.
  • Получение подписок и назначений: В цикле foreach мы переключаем контекст на каждую подписку и извлекаем назначения ролей.
  • Экспорт в CSV: Вместо экспорта для каждой подписки в отдельный CSV-файл мы формируем одну строку для каждой роли и добавляем ее в общий файл AllRoleAssignments.csv.

Следующие шаги:

После того, как вы получите CSV-файл, вы сможете легко импортировать его в Excel или любой другой инструмент для анализа данных, чтобы проверить, какие пользователи имеют доступ без групп. Вы также можете использовать фильтры и формулы в Excel, чтобы проверить роли и права доступа.

Надеюсь, это решение действительно поможет вам организовать ваши данные и облегчить анализ назначений доступа. Если у вас есть дополнительные вопросы или вам нужно больше помощи, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...