在 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 中使用不支持服务主体身份验证的经典部署模型创建的资源。

用于访问连接的 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 参数,预期值为哈希表,用于为连接类型定义的每个属性定义值。

可以使用以下示例命令创建一个连接,该连接可用于使用 Azure 服务主体进行身份验证。

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

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

添加连接类型

如果 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 AzureConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint -Environment "AzureChinaCloud" 

图形 Runbook 示例

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

add to canvas

下图显示了在图形 Runbook 中使用连接对象的示例。

get connections

后续步骤