Azure Security Assessments
Methodology
To begin an assessment list all resources that are in all subscriptions that are in scope to get a sense of the environment.
List All Resources
$subs = Get-AzSubscription foreach ($sub in $subs) { Set-AzContext -Subscription $sub.id $resources += Get-AzResource } $resources | convert-to-json | out-file " . \resources.json" -encoding utf8
List All Resource Types
Output a unique list of resource types
jq 'map(.ResourceType) | unique' resources.json
jq '. | unique_by(.ResourceType) | .[] | .ResourceType' .\resources.json
List Directory Roles
$DirectoryRoles = Get-AzureADDirectoryRole ObjectId DisplayName Description -------- ----------- ----------- 02bb6e8b-bb42-4f30-a527-0cfe44d1a902 Reports Reader Can read sign-in and audit reports. ...
Get Privileged Roles
$PrivilegedRoles = $DirectoryRoles | Where-Object { $_.DisplayName -like "*Administrator*" -or $_.DisplayName -eq "Global Reader" }
List Privilege User Accounts
$PrivilegedUsers = $PrivilegedRoles | ForEach-Object { Get-MgDirectoryRoleMember -DirectoryRoleId $_.ObjectId } | Select-Object Id -Unique
List Global Admins
List Azure Role Assignments
Get-AzRoleAssignment
az role assignment list --role "User Access Administrator" --scope "/providers/Microsoft.Management/managementGroups/<id guid>"
Tools
- https://github.com/microsoft/ARI, inventory tool