你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Microsoft Entra ID 在 Azure 中进行身份验证
Microsoft Entra ID 服务支持多种管理任务,例如用户管理、域管理和单一登录配置。 本文介绍如何使用 Azure 自动化中的 Microsoft Entra ID 作为向 Azure 进行身份验证的提供程序。
安装 Microsoft Entra 模块
可以通过以下 PowerShell 模块启用 Microsoft Entra ID:
用于 Graph 的 Azure Active Directory PowerShell(AzureRM 和 Az 模块)。 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 运行这些 cmdlet。 建议使用较新的用于 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)进行交互。 有关常见迁移问题,请参阅迁移常见问题解答。 注意:2024 年 6 月 30 日之后,MSOnline 版本 1.0.x 可能会遇到中断。
预安装
在计算机上安装 Microsoft Entra 模块之前,请执行以下操作:
卸载任何以前版本的 AzureRM/Az 模块和 MSOnline 模块。
卸载 Microsoft Online Services 登录助手以确保正确操作新的 PowerShell 模块。
安装 AzureRM 和 Az 模块
注意
若要使用这些模块,必须将 PowerShell 版本 5.1 或更高版本与 64 位版本 Windows 一起使用。
安装 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 和 Microsoft Entra ID 之间的连接相关联的凭据。 这些凭据的示例包括租户 ID、订阅 ID 等。 有关 Azure 与 Microsoft Entra ID 之间的连接的详细信息,请参阅将组织连接到 Microsoft Entra ID。
创建凭据资产
获取 Microsoft Entra 的 Azure 凭据后,可以创建一个用于安全存储 Microsoft Entra 凭据的 Azure 自动化凭据资产,以便 Runbook 和 Desired State Configuration (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 文档。