在 Azure 自动化中管理凭据

自动化凭据资产包含一个对象,该对象包含用户名和密码等安全凭据。 Runbook 和 DSC 配置使用接受 PSCredential 对象的 cmdlet 进行身份验证。 或者,他们可以提取 PSCredential 对象的用户名和密码,以便提供给某些需要进行身份验证的应用程序或服务。

注意

Azure 自动化中的安全资产包括凭据、证书、连接和加密的变量。 这些资产已使用针对每个自动化帐户生成的唯一密钥进行加密并存储在 Azure 自动化中。 Azure 自动化将密钥存储在系统管理的 Key Vault 中。 在存储安全资产之前,自动化会从 Key Vault 加载密钥,然后使用该密钥加密资产。

注意

有关查看或删除个人数据的信息,请参阅 GDPR 的 Azure 数据使用者请求。 有关 GDPR 的详细信息,请参阅 Microsoft 信任中心的 GDPR 部分服务信任门户的 GDPR 部分

用于访问凭据的 PowerShell cmdlet

下表中的 cmdlet 使用 PowerShell 创建和管理自动化凭据。 它们作为 Az 模块的一部分提供。

Cmdlet 说明
Get-AzAutomationCredential 检索包含有关凭据的元数据的 CredentialInfo 对象。 该 cmdlet 不检索 PSCredential 对象本身。
New-AzAutomationCredential 创建新的自动化凭据。
Remove-AzAutomationCredential 删除自动化凭据。
Set-AzAutomationCredential 设置现有自动化凭据的属性。

用于访问凭据的其他 cmdlet

下表中的 cmdlet 用于在 Runbook 和 DSC 配置中访问凭据。

Cmdlet 说明
Get-AutomationPSCredential 获取要在 Runbook 或 DSC 配置中使用的 PSCredential 对象。 大多数情况下,应使用此 内部 cmdlet 而不是 Get-AzAutomationCredential cmdlet,因为后者仅检索凭据信息。 此信息通常对传递到另一个 cmdlet 没有帮助。
Get-Credential 通过提示输入用户名和密码来获取凭据。 此 cmdlet 是默认 Microsoft.PowerShell.Security 模块的一部分。 请参阅默认模块
New-AzureAutomationCredential 创建凭据资产。 此 cmdlet 是默认 Azure 模块的一部分。 请参阅默认模块

若要在代码中检索 PSCredential 对象,必须导入 Orchestrator.AssetManagement.Cmdlets 模块。 有关详细信息,请参阅在 Azure 自动化中管理模块

Import-Module Orchestrator.AssetManagement.Cmdlets -ErrorAction SilentlyContinue

注意

应避免在 Get-AutomationPSCredentialName 参数中使用变量。 使用变量在设计时可能会导致难以厘清 Runbook 或 DSC 配置与凭据资产之间的依赖关系。

用于访问凭据的 Python 函数

下表中的函数用于在 Python 2 Runbook 和 Python 3 Runbook 中访问凭据。 Python 3 Runbook 目前处于预览阶段。

函数 说明
automationassets.get_automation_credential 检索有关凭据资产的信息。

注意

在 Python Runbook 顶部导入 automationassets 模块以访问资产函数。

创建新的凭据资产

可以使用 Azure 门户或使用 Windows PowerShell 来创建新的凭据资产。

使用 Azure 门户创建新的凭据资产

  1. 在自动化帐户的左侧窗格中,选择“共享资源”下的“凭据” 。

  2. 在“凭据”页上,选择“添加凭据” 。

  3. 在“新建凭据”窗格中,根据你的命名标准输入合适的凭据名称。

  4. 在“用户名”字段中键入你的访问 ID。

  5. 对于两个密码字段,请输入机密访问密钥。

    Create new credential

  6. 如果选中了“多重身份验证”框,请将其取消选中。

  7. 单击“创建”以保存新的凭据资产。

注意

Azure 自动化不支持使用多重身份验证的用户帐户。

使用 Windows PowerShell 创建新的凭据资产

以下示例演示了如何创建新的自动化凭据资产。 首先创建了一个具有名称和密码的 PSCredential 对象,然后使用该对象创建凭据资产。 可以改为使用 Get-Credential cmdlet 来提示用户键入名称和密码。

$user = "MyDomain\MyUser"
$pw = ConvertTo-SecureString "PassWord!" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $pw
New-AzureAutomationCredential -AutomationAccountName "MyAutomationAccount" -Name "MyCredential" -Value $cred

获取凭据资产

Runbook 或 DSC 配置使用内部 Get-AutomationPSCredential cmdlet 检索凭据资产。 此 cmdlet 会获取一个 PSCredential 对象,它可用于需要凭据的 cmdlet。 还可以检索要单独使用的凭据对象的属性。 该对象包含用于用户名和安全密码的属性。

注意

Get-AzAutomationCredential cmdlet 不检索可用于身份验证的 PSCredential 对象。 它仅提供有关凭据的信息。 如果需要在 Runbook 中使用凭据,则必须使用 Get-AutomationPSCredential 将它作为 PSCredential 对象进行检索。

或者,可以使用 GetNetworkCredential 方法检索表示不安全的密码版本的 NetworkCredential 对象。

文本 Runbook 示例

下面的示例演示如何在 Runbook 中使用 PowerShell 凭据。 它检索凭据并将其用户名和密码分配给变量。

$myCredential = Get-AutomationPSCredential -Name 'MyCredential'
$userName = $myCredential.UserName
$securePassword = $myCredential.Password
$password = $myCredential.GetNetworkCredential().Password

在第一次连接托管标识之后,还可以使用凭据通过 Connect-AzAccount 向 Azure 进行身份验证。 本例使用系统分配的托管标识

# 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 -Environment AzureChinaCloud).context

# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext

# Get credential
$myCred = Get-AutomationPSCredential -Name "MyCredential"
$userName = $myCred.UserName
$securePassword = $myCred.Password
$password = $myCred.GetNetworkCredential().Password

$myPsCred = New-Object System.Management.Automation.PSCredential ($userName,$securePassword)

# Connect to Azure with credential
$AzureContext = (Connect-AzAccount -Credential $myPsCred -TenantId $AzureContext.Subscription.TenantId -Environment AzureChinaCloud).context

# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription `
    -TenantId $AzureContext.Subscription.TenantId `
    -DefaultProfile $AzureContext

图形 Runbook 示例

可以通过在图形编辑器的“库”窗格中右键单击凭据并选择“添加到画布”,将内部 Get-AutomationPSCredential cmdlet 的活动添加到图形 Runbook。

Add credential cmdlet to canvas

下图显示了在图形 Runbook 中使用凭据的示例。 第一个活动检索有权访问 Azure 订阅的凭据。 然后,帐户连接活动使用此凭据为它之后的任何活动提供身份验证。 此处使用了一个管道链接,因为 Get-AutomationPSCredential 需要单个对象。

Credential workflow with pipeline link example

在 DSC 配置中使用凭据

虽然 Azure 自动化中的 DSC 配置可以使用 Get-AutomationPSCredential 处理凭据资产,但它们也可以通过参数传递凭据资产。 有关详细信息,请参阅在 Azure 自动化 DSC 中编译配置

后续步骤