#azure #powershell #subscription
#azure #powershell #подписка
Вопрос:
Я готовлю отчет, в котором содержатся все пользователи уровня доступа tenant wise из azure.
существует ли какая-либо одна команда или сценарий для получения уровня доступа всех пользователей от клиента Azure?
Комментарии:
1. «Я готовлю отчет» … можете ли вы показать нам, что вы уже пробовали? Объясните, что сработало, что не сработало, и добавьте любые сообщения об ошибках к вашему вопросу.
Ответ №1:
Это небольшая хитрость: библиотека PS для Azure отличается от библиотеки PS для AD. Необходимо сопоставить информацию.
- Вы должны получить всех пользователей из своего AD, используя приведенную выше команду, и сохранить как переменную
$ allUsers = Get-ADUsers -Filter *
- Теперь вы можете перейти ко всем подпискам в вашем клиенте, ко всем группам ресурсов и ресурсам и для каждой из них получить IAM (который пришел с идентификатором объекта пользователя) и пересечь с переменной $allUsers, чтобы идентифицировать всех.
Пример не самый лучший, но, возможно, может вам помочь:
Connect-AzAccount
$listIAM = New-Object System.Collections.ArrayList
$listSubscriptions = Get-AzSubscription
foreach($subscription in $listSubscriptions){
Set-AzContext -SubscriptionId $subscription.SubscriptionId
# Now you have all roleAssignements for this subscription
$subscriptionIAM = Get-AzRoleAssignment -Scope /subscriptions/$subscription.SubscriptionId
$listIAM.Add($subscriptionIAM) | Out-Null
# Navigate into resource groups
$listResourceGroups = Get-AzResourceGroup
foreach($resourceGroup in $listResourceGroups){
$rgIAM = Get-AzRoleAssignment -ResourceGroupName $resourceGroup.ResourceGroupName
$listIAM.Add($rgIAM) | Out-Null
# Navigate into resources
$listResources = Get-AzResource -ResourceGroupName $resourceGroup
foreach($resource in $listResources){
$rIAM = Get-AzRoleAssignment -Scope $resouce.ResourceId
$listIAM.Add($rIAM) | Out-Null
}
}
}
Ответ №2:
Вы можете сделать это либо в PowerShell, либо в Graph API. Оба метода находятся в предварительном просмотре (вызовы graph API находятся в бета-версии).
#Get the user
$userId = (Get-AzureADUser -Filter "userPrincipalName eq 'alice@contoso.com'").ObjectId
#Get direct role assignments to the user
$directRoles = (Get-AzureADMSRoleAssignment -Filter "principalId eq '$userId'").RoleDefinitionId
Предварительные требования
- Модуль AzureADPreview при использовании PowerShell
- Майкрософт.Модуль Graph при использовании PowerShell
- Согласие администратора при использовании Graph Explorer для Microsoft Graph API
https://docs.microsoft.com/en-us/azure/active-directory/roles/list-role-assignments-users