Подключитесь к Azure AD с помощью субъекта-службы, чтобы получить список пользователей и информацию

Я пытаюсь подключиться к Azure AD и получить список учетных записей, соответствующих конкретной компании, и получить файл с информацией об учетной записи. Скрипт работает, если я использую интерактивный вход в систему, но мне нужно автоматизировать это с помощью входа в систему субъекта-службы. В этом скрипте появляется ошибка get-azureaduser. Что я делаю не так?

# Connect to Azure AD
$tenantId = "xxxxxxx"
$clientId = "xxxxxxx"
$clientSecret = "xxxxxxxxx"

import-module az

$secureClientSecret = ConvertTo-SecureString $clientSecret -AsPlainText -Force

$credential = New-Object System.Management.Automation.PSCredential($clientId,    $secureClientSecret)
 
Connect-Azaccount -ServicePrincipal -TenantId $tenantId -Credential $credential

# Define the company name to filter by
$companyName = "some company"

# Get users from Azure AD, filter by company name and job title, and select required properties
$users = Get-AzureADUser -All $true | Where-Object {
    $_.CompanyName -eq $companyName -and $_.JobTitle -ne $null
    } | Select-Object DisplayName, JobTitle, Mail, Department

# Export the filtered users to a CSV file
$users | Export-Csv -Path "c:\temp\Users.csv" -NoTypeInformation

Я попробовал добавить

$currentAzureContext = Get-AzContext
$tenantId = $currentAzureContext.Tenant.Id
$accountId = $currentAzureContext.Account.Id
Connect-AzureAD -TenantId $tenantId -AccountId $accountId

но это также вызывает приглашение для входа в систему

Как установить 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
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание: модуль Azure AD PowerShell поддерживает проверку подлинности субъекта-службы или не выдает подсказку только при передаче CertificateThumbprint и ApplicationId. Обратитесь сюда MsDoc

Поэтому используйте Connect-AzureAD и измените скрипт, как показано ниже:

# Define your tenant ID, application ID, and certificate thumbprint
$tenantId = "TenantID"
$applicationId = "APPID"
$certThumbprint = "CertTumbPrint"

# Connect to Azure AD using the certificate
Connect-AzureAD -CertificateThumbprint $certThumbprint -ApplicationId $applicationId -TenantId $tenantId

# Define the company name to filter by
$companyName = "ruk"

$users = Get-AzureADUser -All $true | Where-Object {
    $_.CompanyName -eq $companyName -and $_.JobTitle -ne $null
    } | Select-Object DisplayName, JobTitle, Mail, Department

# Export the filtered users to a CSV file
$users | Export-Csv -Path "C:\Users\v-rukmini\Downloads\rukcsvaad.csv" -NoTypeInformation

Обязательно загрузите сертификат в приложение Microsoft Entra ID:

  • Сертификат .cer необходимо загрузить в приложение Microsoft Entra ID.
  • Сертификат .pfx должен присутствовать на локальном компьютере, на котором вы выполняете код.
  • В противном случае используйте Connect-Azaccount -ServicePrincipal и Get-AzADUser.

использование certthumbprint сработало! Спасибо. дополнительный вопрос, какие именно разрешения необходимы субъекту-службе. Мне назначено следующее, но я получаю ошибку разрешения. если я назначу приложению роль администратора, оно будет работать. но мне неудобно добавлять эту роль в приложение.Directory.Read.All Чтение данных каталога Group.Read.All Чтение всех групп Да профиль Просмотр основного профиля пользователя User.Read Войдите в систему и прочтите профиль пользователя User.Read.All Читать все полные профили пользователей

Asthika Welikala 01.08.2024 16:41

Пожалуйста, задайте новый вопрос со всеми подробностями и поделитесь ссылкой здесь.

Rukmini 01.08.2024 16:51

@AsthikaWelikala Хорошо принять решение, если оно решило проблему. Это во благо сообщества SO, смотрите SO Ссылка

Naveen Sharma 01.08.2024 17:33

@Rukmini stackoverflow.com/questions/78822469/…

Asthika Welikala 01.08.2024 20:11

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