您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

在 Azure 自动化中管理连接

Azure 自动化连接资产包含下面列出的信息。 从 Runbook 或 DSC 配置连接到外部服务或应用程序所需的信息。

  • 身份验证所需的信息,如用户名和密码
  • 连接信息,如 URL 或端口

连接资产将用于与特定应用程序进行连接的所有属性汇集在一起,这样就不必创建多个变量。 你可以从一个位置编辑连接的值,并且可以在单个参数中将连接名称传递给 Runbook 或 DSC 配置。 runbook 或配置会使用内部 Get-AutomationConnectioncmdlet 访问连接的属性。

创建连接时,必须指定“连接类型”。 连接类型是定义了一组属性的模板。 可以使用带有元数据文件的集成模块向 Azure 自动化添加连接类型。 如果集成模块包含连接类型并导入到自动化帐户中,也可以使用 Azure 自动化 API 创建连接类型。

备注

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

连接类型

Azure 自动化提供了以下内置连接类型:

  • Azure - 表示用于管理经典资源的连接。
  • AzureServicePrincipal -表示 Azure 运行方式帐户使用的连接。
  • AzureClassicCertificate -表示经典 Azure 运行方式帐户使用的连接。

在大多数情况下不需要创建连接资源,因为在创建 RunAs 帐户时已经创建了该连接。

用于访问连接的 PowerShell cmdlet

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

Cmdlet 说明
Get-AzAutomationConnection 检索有关连接的信息。
New-AzAutomationConnection 创建新连接。
Remove-AzAutomationConnection 删除现有连接。
Set-AzAutomationConnectionFieldValue 设置现有连接的一个特定字段的值。

用于访问连接的内部 cmdlet

下表中的内部 cmdlet 用于访问 runbook 和 DSC 配置中的连接。 此 cmdlet 附带全局模块 Orchestrator.AssetManagement.Cmdlets。 有关详细信息,请参阅内部 cmdlet

内部 Cmdlet 说明
Get-AutomationConnection 检索连接中不同字段的值,并将其作为哈希表返回。 然后,可以将此哈希表与 runbook 或 DSC 配置中的相应命令一起使用。

备注

避免将变量与 Get-AutomationConnectionName 参数一起使用。 如果这样使用变量,可能会导致在设计时尝试发现 runbook 或 DSC 配置与连接资产之间的依赖关系变得复杂。

用于访问连接的 Python 函数

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

函数 说明
automationassets.get_automation_connection 检索连接。 返回包括该连接属性的字典。

备注

必须在 Python Runbook 顶部导入 automationassets 模块才能访问资产函数。

创建新连接

使用 Azure 门户创建新连接

使用 Azure 门户创建新连接:

  1. 在自动化帐户中,单击“共享资源”下的“连接” 。
  2. 单击“连接”页上的“+ 添加连接”。
  3. 在“新建连接”窗格的“类型”字段中,选择要创建的连接类型。 你的选择是 AzureAzureServicePrincipalAzureClassicCertificate
  4. 该窗体显示所选连接类型的属性。 完成该表单,并单击“创建”以保存新连接。

使用 Windows PowerShell 创建新连接

使用 New-AzAutomationConnection cmdlet 通过 Windows PowerShell 创建新连接。 此 cmdlet 有一个 ConnectionFieldValues 参数,预期值为哈希表,用于为连接类型定义的每个属性定义值。

可以使用以下示例命令作为“从门户创建运行方式帐户”的替代方法,以创建新的连接资产。

$ConnectionAssetName = "AzureRunAsConnection"
$ConnectionFieldValues = @{"ApplicationId" = $Application.ApplicationId; "TenantId" = $TenantID.TenantId; "CertificateThumbprint" = $Cert.Thumbprint; "SubscriptionId" = $SubscriptionId}
New-AzAutomationConnection -ResourceGroupName $ResourceGroup -AutomationAccountName $AutomationAccountName -Name $ConnectionAssetName -ConnectionTypeName AzureServicePrincipal -ConnectionFieldValues $ConnectionFieldValues

创建自动化帐户时,默认情况下,它包括几个全局模块,以及用于创建 AzureRunAsConnection 连接资产的连接类型 AzureServicePrincipal。 如果尝试使用其他身份验证方法创建新的连接资产来连接到服务或应用程序,操作将失败,原因在于连接类型尚未在自动化帐户中定义。 有关为自定义模块创建自己的连接类型的详细信息,请参阅添加连接类型

添加连接类型

如果 runbook 或 DSC 配置连接到外部服务,需要在名为集成模块的自定义模块中定义连接类型。 此模块包含一个元数据文件,该文件名为“<ModuleName>-Automation.json”,用于指定连接类型属性,位于 .zip 压缩文件的模块文件夹中 。 此文件包含连接到模块所代表的系统或服务所需的连接的字段。 使用此文件,可以设置连接类型的字段名、数据类型、加密状态和可选状态。

以下示例是“.json”文件格式的模板,该模板定义名为 MyModuleConnection 的自定义连接类型的用户名和密码属性:

{
   "ConnectionFields": [
   {
      "IsEncrypted":  false,
      "IsOptional":  true,
      "Name":  "Username",
      "TypeName":  "System.String"
   },
   {
      "IsEncrypted":  true,
      "IsOptional":  false,
      "Name":  "Password",
      "TypeName":  "System.String"
   }
   ],
   "ConnectionTypeName":  "MyModuleConnection",
   "IntegrationModuleName":  "MyModule"
}

在 Runbook 或 DSC 配置中获取连接

请使用 Get-AutomationConnection cmdlet 检索 Runbook 或 DSC 配置中的连接。 此 cmdlet 优先于 Get-AzAutomationConnection cmdlet,因为它检索连接值而不是有关连接的信息。

以下示例演示如何使用运行方式帐户在 runbook 中通过 Azure 资源管理器资源进行身份验证。 此示例使用代表运行方式帐户的连接资产,该帐户引用基于证书的服务主体。

$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

图形 Runbook 示例

可以为内部 Get-AutomationConnection cmdlet 添加一个活动到图形 runbook 中。 右键单击图形编辑器库窗格中的连接,然后选择“添加到画布”。

添加到画布

下图显示了在图形 Runbook 中使用连接对象的示例。 此示例使用 Constant value 数据集执行 Get RunAs Connection 活动,该活动使用连接对象进行身份验证。 此处使用了一个管道链接,因为 ServicePrincipalCertificate 参数需要单个对象。

获取连接

后续步骤