使用 Microsoft Entra ID 向 Azure 進行驗證
Microsoft Entra ID 服務可啟用許多系統管理工作,例如使用者管理、網域管理和單一登入設定。 此文章描述如何在 Azure 自動化中,使用 Microsoft Entra ID 做為提供者向 Azure 進行驗證。
安裝 Microsoft Entra 模組
您可以透過下列 PowerShell 模組啟用 Microsoft Entra ID:
適用於 Graph (AzureRM 和 Az 模組) 的 Azure Active Directory PowerShell。 Azure 自動化隨附 AzureRM 模組及其最近的升級 (Az 模組)。 功能包括使用 Microsoft Entra 使用者 (OrgId) 認證型驗證,對 Azure 進行非互動式驗證。 請參閱 Microsoft Entra ID 2.0.2.76。
適用於 Windows PowerShell 的 Microsoft Entra ID (MSOnline 模組)。 此模組可與 Microsoft Online 互動 (包括 Microsoft 365)。
注意
PowerShell Core 不支援 MSOnline 模組。 若要使用模組 Cmdlet,您必須從 Windows PowerShell 加以執行。 建議您使用較新的適用於 Graph 的 Azure Active Directory PowerShell 模組,而不是使用 MSOnline 模組。
注意
自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模組已被淘汰。 若要深入了解,請閱讀淘汰更新。 在此日期之後,對這些模組的支援僅限於對 Microsoft Graph PowerShell SDK 的移轉協助和安全性修正。 淘汰的模組將繼續運作至 2025 年 3 月 30 日。
我們建議移轉至 Microsoft Graph PowerShell 以與 Microsoft Entra ID (以前稱為 Azure AD) 互動。 如需了解常見的移轉問題,請參閱移轉常見問題。 注意:MSOnline 1.0.x 版可能會在 2024 年 6 月 30 日之後發生中斷。
預先安裝
在您的電腦上安裝 Microsoft Entra 模組之前:
將任何先前版本的 AzureRM/Az 模組和 MSOnline 模組解除安裝。
將 Microsoft Online Services 登入小幫手解除安裝,以確保新 PowerShell 模組的運作正常。
安裝 AzureRM 和 Az 模組
注意
若要使用這些模組,您必須搭配 64 位元版本的 Windows 使用 PowerShell 5.1 版或更新版本。
安裝 Windows Management Framework (WMF) 5.1。 請參閱安裝與設定 WMF 5.1。
使用使用 PowerShellGet 在 Windows 上安裝 Azure PowerShell 中的指示,安裝 AzureRM 和/或 Az。
安裝 MSOnline 模組
注意
若要安裝 MSOnline 模組,您必須是管理員角色的成員。 請參閱關於管理員角色。
確定已在您的電腦上啟用 Microsoft .NET Framework 3.5.x 功能。 您的電腦可能已安裝較新的版本,但可以啟用或停用與舊版 .NET Framework 的回溯相容性。
安裝 64 位元版本的 Microsoft Online Services 登入小幫手。
以系統管理員身分執行 Windows PowerShell,以建立提升權限的 Windows PowerShell 命令提示字元。
從 MSOnline 1.0 部署 Microsoft Entra ID。
如果系統提示您安裝 NuGet 提供者,請輸入 Y,然後按 ENTER。
如果系統提示您從 PSGallery \(英文\) 安裝模組,請輸入 Y,然後按 ENTER。
安裝 PSCredential 的支援
Azure 自動化使用 PSCredential 類別來代表認證資產。 您的指令碼會使用 Get-AutomationPSCredential
Cmdlet 來擷取 PSCredential
物件。 如需詳細資訊,請參閱 Azure 自動化中的認證資產。
指派訂用帳戶系統管理員
您必須指派 Azure 訂用帳戶的系統管理員。 此人員有訂用帳戶範圍的擁有者角色。 請參閱 Azure 自動化中的角色型存取控制。
變更 Microsoft Entra 使用者的密碼
若要變更 Microsoft Entra 使用者的密碼:
登出 Azure。
讓系統管理員使用完整的使用者名稱 (包括網域) 和暫時密碼,以剛建立的 Microsoft Entra 使用者身分登入 Azure。
要求系統管理員在出現提示時變更密碼。
設定 Azure 自動化來管理 Azure 訂用帳戶
若要讓 Azure 自動化與 Microsoft Entra ID 通訊,您必須將與 Azure 連線相關聯的認證擷取至 Azure AD。 這些認證的範例包括租用戶識別碼、訂用帳戶識別碼等等。 如需 Azure 與 Microsoft Entra ID 之間的連線詳細資訊,請參閱將組織連線到 Microsoft Entra ID。
建立認證資產
若可以使用適用於 Microsoft Entra 的 Azure 認證,就可以建立 Azure 自動化認證資產,以安全地儲存 Azure AD 認證,讓 Runbook 和期望狀態設定 (DSC) 指令碼可以加以存取。 您可以使用 Azure 入口網站或 PowerShell Cmdlet 來執行此動作。
在 Azure 入口網站中建立認證資產
您可以使用 Azure 入口網站來建立認證資產。 執行此作業的方式是從您的自動化帳戶,於 [共用資源] 下,使用 [認證]。 請參閱 Azure 自動化中的認證資產。
使用 Windows PowerShell 建立認證資產
若要在 Windows PowerShell 中準備新的認證資產,您的指令碼會先使用指派的使用者名稱和密碼來建立 PSCredential
物件。 接著,指令碼會使用這個物件,透過呼叫 New-AzureAutomationCredential \(英文\) Cmdlet 來建立資產。 或者,指令碼可以呼叫 Get-Credential Cmdlet 來提示使用者輸入名稱和密碼。 請參閱 Azure 自動化中的認證資產。
從 Azure 自動化 Runbook 管理 Azure 資源
您可以從使用認證資產的 Azure 自動化 Runbook 來管理 Azure 資源。 以下是 PowerShell Runbook 範例,其會收集用來停止和啟動 Azure 訂用帳戶中虛擬機器的認證資產。 此 Runbook 會先使用 Get-AutomationPSCredential
來擷取要用來向 Azure 進行驗證的認證。 然後,其會呼叫 Connect-AzAccount Cmdlet,以使用認證連線到 Azure。
Workflow Workflow
{
Param
(
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()]
[String]
$AzureSubscriptionId,
[Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()]
[String]
$AzureVMList="All",
[Parameter(Mandatory=$true)][ValidateSet("Start","Stop")]
[String]
$Action
)
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
# get credential
$credential = Get-AutomationPSCredential -Name "AzureCredential"
# Connect to Azure with credential
$AzureContext = (Connect-AzAccount -Credential $credential -TenantId $AzureContext.Subscription.TenantId).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription `
-TenantId $AzureContext.Subscription.TenantId `
-DefaultProfile $AzureContext
if($AzureVMList -ne "All")
{
$AzureVMs = $AzureVMList.Split(",")
[System.Collections.ArrayList]$AzureVMsToHandle = $AzureVMs
}
else
{
$AzureVMs = (Get-AzVM -DefaultProfile $AzureContext).Name
[System.Collections.ArrayList]$AzureVMsToHandle = $AzureVMs
}
foreach($AzureVM in $AzureVMsToHandle)
{
if(!(Get-AzVM -DefaultProfile $AzureContext | ? {$_.Name -eq $AzureVM}))
{
throw " AzureVM : [$AzureVM] - Does not exist! - Check your inputs "
}
}
if($Action -eq "Stop")
{
Write-Output "Stopping VMs";
foreach -parallel ($AzureVM in $AzureVMsToHandle)
{
Get-AzVM -DefaultProfile $AzureContext | ? {$_.Name -eq $AzureVM} | Stop-AzVM -DefaultProfile $AzureContext -Force
}
}
else
{
Write-Output "Starting VMs";
foreach -parallel ($AzureVM in $AzureVMsToHandle)
{
Get-AzVM -DefaultProfile $AzureContext | ? {$_.Name -eq $AzureVM} | Start-AzVM -DefaultProfile $AzureContext
}
}
}
下一步
- 如需認證使用的詳細資訊,請參閱管理 Azure 自動化中的認證。
- 如需模組的詳細資訊,請參閱在 Azure 自動化中管理模組。
- 如果您需要啟動 Runbook,請參閱在 Azure 自動化中啟動 Runbook。
- 如需 PowerShell 的詳細資料,請參閱 PowerShell 文件。