Подключитесь к Microsoft Graph PowerShell с помощью сертификатов с помощью автоматизации Azure.


Проверка подлинности на основе сертификатов для Microsoft Graph PowerShell позволяет выполнять проверку подлинности в Microsoft Graph и запускать сценарии PowerShell в контексте приложения без необходимости хранить или получать секретный ключ клиента.

Это может быть полезно в сценариях, когда вам нужно запустить сценарий с привилегированного устройства, но вы не хотите хранить секрет клиента в коде. Сценарии могут включать запуск сценария с привилегированных устройств или использование службы автоматизации Azure.

В этом уроке я покажу вам, как использовать аутентификацию на основе сертификатов с Microsoft Graph PowerShell.

Сценарий

В этом сценарии я использую Runbook автоматизации Azure в своем основном клиенте (тенант 2). Мне нужно пройти аутентификацию в Microsoft Graph в другом клиенте (тенанте 1) с помощью PowerShell для управления ресурсами.

В этом случае я буду использовать проверку подлинности на основе сертификатов с помощью Microsoft Graph PowerShell.

Создайте новый самозаверяющий сертификат

Сначала вам необходимо создать новый самозаверяющий сертификат на локальной рабочей станции. При этом закрытый ключ также сохраняется на вашем локальном устройстве. Это можно будет удалить, как только вы закончите.

Приведенная ниже команда создаст новый сертификат с именем AzureAutomation, срок действия которого истекает через 12 месяцев.

$certname = "AzureAutomation"
$cert = New-SelfSignedCertificate -Subject "CN=$certname" `
-CertStoreLocation "Cert:\CurrentUser\My" `
-KeyExportPolicy Exportable `
-KeySpec Signature `
-KeyLength 2048 `
-KeyAlgorithm RSA -HashAlgorithm SHA256 `
-NotAfter (Get-Date).AddMonths(12)

Чтобы экспортировать сертификат без закрытого ключа (для загрузки в ваше приложение в Microsoft Entra), используйте приведенную ниже команду и измените путь по желанию.

Export-Certificate -Cert $cert -FilePath "C:\cert\$certname.cer"

Чтобы экспортировать сертификат с закрытым ключом (для загрузки в вашу учетную запись автоматизации), используйте команду ниже и измените путь по желанию. Обязательно измените пароль, указанный ниже!

$mypwd = ConvertTo-SecureString -String "Password123" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "C:\cert\$certname.pfx" -Password $mypwd

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

$cer = Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName
Remove-Item -Path Cert:\CurrentUser\My\$($cer.Thumbprint) -DeleteKey

Создать новую регистрацию приложения

Вам нужно будет создать новую регистрацию приложения в Microsoft Entra; это облегчит доступ к ресурсам Microsoft Graph в целевом клиенте (или клиенте 1).

Выполните следующие шаги, чтобы создать новую регистрацию приложения и назначить необходимые разрешения.

1. В Microsoft Entra выберите Приложения > Регистрация приложений > Новая регистрация.

2. Введите имя и нажмите Зарегистрироваться.

Назначение разрешений Graph API

Теперь вы можете назначить приложению необходимые разрешения. Я назначу разрешение groups.readwrite.all.

1. В разделе Управление выберите Разрешения API.

2. Нажмите Добавить разрешение.

3. Выберите Microsoft Graph > Разрешения приложения.

4. Найдите необходимое разрешение и нажмите Добавить.

Загрузите общедоступный сертификат

Теперь вам нужно будет загрузить в приложение общедоступный сертификат, который вы экспортировали в формате .cer.

1. В разделе Управление выберите Сертификаты и секреты.

2. Нажмите Сертификаты > Загрузить сертификат, затем загрузите сертификат. Мой назывался AzureAutomation.cer.

Загрузите закрытый ключ в свою учетную запись автоматизации Azure.

На этом этапе приложение в первом клиенте подготовлено, и теперь вам необходимо загрузить сертификат с закрытым ключом в учетную запись автоматизации Azure в арендаторе 2.

1. Войдите на портал.azure.com.

2. Найдите свою учетную запись автоматизации и откройте ее.

3. В разделе Общие ресурсы выберите Сертификаты.

4. Нажмите Добавить сертификат, затем определите имя сертификата и загрузите ранее экспортированный файл .pfx. Вам будет предложено ввести пароль, который вы указали при создании сертификата.

Подключитесь к Microsoft Graph с проверкой подлинности на основе сертификатов.

Теперь оба ресурса подготовлены, и теперь вы можете использовать необходимые команды подключения для аутентификации в Microsoft Graph PowerShell в своих модулях Runbook.

Прежде чем идти дальше! Вам необходимо импортировать модули Microsoft Graph PowerShell в свою учетную запись автоматизации. Посмотрите шаги, которые я написал здесь.

Скопируйте приведенный ниже код и добавьте ClientID и TenantID из приложения в первый клиент. Get-MgContext используется для визуального подтверждения успешной аутентификации.

$cert = Get-AutomationCertificate -Name 'AzureAutomation'
$ClientID = ""
$TenantID = ""
Connect-MgGraph -ClientID $ClientID `
-TenantId $TenantID `
-CertificateThumbprint $cert.Thumbprint

Get-MgContext

Теперь вставьте свой код в Runbook и нажмите Панель тестирования.

Нажмите «Пуск», затем, когда Runbook завершится, вы увидите на экране вывод, подтверждающий успешное соединение.

Когда срок действия сертификата истечет, просто создайте новый сертификат и выполните тот же процесс, чтобы заменить его.