你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用逻辑应用 REST API 创建集成服务环境 (ISE)

重要

ISE 资源将于 2024 年 8 月 31 日停用,因为它依赖于同时停用的 Azure 云服务(经典)。 请在停用日期之前将 ISE 中的任何逻辑应用导出到标准逻辑应用,以避免服务中断。 标准逻辑应用工作流在单租户 Azure 逻辑应用中运行,提供相同的功能以及其他内容。

从 2022 年 11 月 1 日开始,你无法再创建新的 ISE 资源。 但是,我们仍会为在此日期之前存在的 ISE 资源提供支持,一直到 2024 年 8 月 31 日为止。 有关更多信息,请参见以下资源:

对于逻辑应用和集成帐户需要访问 Azure 虚拟网络的方案,可以使用逻辑应用 REST API 创建集成服务环境 (ISE)。 若要详细了解 ISE,请参阅从独立 Azure 逻辑应用访问 Azure 虚拟网络资源

本文介绍了使用逻辑应用 REST API 创建 ISE 的一般方法。 你也可以选择在 ISE 上启用系统分配或用户分配的托管标识,但此时仅能使用逻辑应用 REST API 执行此操作。 借助此标识,你的 ISE 会验证对位于或连接到 Azure 虚拟网络中的受保护资源(例如虚拟机和其他系统或服务)的访问权限。 如此,你便无需使用凭据就可以登录。

有关创建 ISE 的其他方法的详细信息,请参阅以下文章:

先决条件

  • 必备条件访问要求与在 Azure 门户中创建 ISE 时相同

  • 要与 ISE 配合使用的任何其他资源,以便可以将其信息包含在 ISE 定义中,例如:

    • 如果要启用自签名证书支持,你需要将该证书的相关信息包含在 ISE 定义中。

    • 如果要启用用户分配的托管标识,你需要事先创建该标识,并将其包含在 ISE 定义的 objectIdprincipalIdclientId 属性及其值中。 有关详细信息,请参阅在 Azure 门户中创建用户分配的托管身份

  • 通过使用 HTTPS PUT 请求调用逻辑应用 REST API 来创建 ISE 的一种工具。 例如,你可以使用 Postman,也可以生成一个用于执行此任务的逻辑应用。

创建 ISE

若要通过调用逻辑应用 REST API 来创建 ISE,请发出以下 HTTPS PUT 请求:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationServiceEnvironments/{integrationServiceEnvironmentName}?api-version=2019-05-01

重要

逻辑应用 REST API 2019-05-01 版本要求你对 ISE 连接器自行发出 HTTP PUT 请求。

通常,部署过程在两个小时以内完成。 有时,部署过程可能长达四个小时。 若要检查部署状态,请在 Azure 门户的 Azure 工具栏上选择通知图标,这将打开通知窗格。

注意

如果部署失败或删除 ISE,Azure 在释放子网之前可能需要长达一个小时。 此延迟意味着可能需要等待一段时间才能在另一个 ISE 中重复使用这些子网。

如果删除虚拟网络,Azure 通常需要长达两小时才能释放子网,但是此操作可能需要更长的时间。 删除虚拟网络时,请确保没有资源仍处于连接状态。 请参阅删除虚拟网络

请求标头

在请求标头中,添加以下属性:

  • Content-type:将此属性值设置为 application/json

  • Authorization:将此属性值设置为有权访问你要使用的 Azure 订阅或资源组的客户的持有者令牌。

请求正文

在请求正文中,提供用于创建 ISE 的资源定义,包括要在 ISE 上启用的其他功能的信息,例如:

  • 若要创建允许使用安装在 TrustedRoot 位置的自签名证书和企业证书颁发机构颁发的证书的 ISE,请在 ISE 定义的 properties 部分中添加 certificates对象,如本文后面所述。

  • 若要创建使用系统分配或用户分配的托管标识的 ISE,请在 ISE 定义中添加包含托管标识类型和其他所需信息的 identity 对象,如本文后面所述。

  • 若要创建使用客户管理的密钥和 Azure 密钥保管库来加密静态数据的 ISE,请添加支持使用客户管理的密钥的信息。 只能在创建时设置客户管理的密钥,而不能在之后设置。

请求正文语法

下面是请求正文语法,其中说明了创建 ISE 时要使用的属性:

{
   "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Logic/integrationServiceEnvironments/{ISE-name}",
   "name": "{ISE-name}",
   "type": "Microsoft.Logic/integrationServiceEnvironments",
   "location": "{Azure-region}",
   "sku": {
      "name": "Premium",
      "capacity": 1
   },
   // Include the `identity` object to enable the system-assigned identity or user-assigned identity
   "identity": {
      "type": <"SystemAssigned" | "UserAssigned">,
      // When type is "UserAssigned", include the following "userAssignedIdentities" object:
      "userAssignedIdentities": {
         "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-object-ID}": {
            "principalId": "{principal-ID}",
            "clientId": "{client-ID}"
         }
      }
   },
   "properties": {
      "networkConfiguration": {
         "accessEndpoint": {
            // Your ISE can use the "External" or "Internal" endpoint. This example uses "External".
            "type": "External"
         },
         "subnets": [
            {
               "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Network/virtualNetworks/{virtual-network-name}/subnets/{subnet-1}",
            },
            {
               "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Network/virtualNetworks/{virtual-network-name}/subnets/{subnet-2}",
            },
            {
               "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Network/virtualNetworks/{virtual-network-name}/subnets/{subnet-3}",
            },
            {
               "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Network/virtualNetworks/{virtual-network-name}/subnets/{subnet-4}",
            }
         ]
      },
      // Include `certificates` object to enable self-signed certificate and the certificate issued by Enterprise Certificate Authority
      "certificates": {
         "testCertificate": {
            "publicCertificate": "{base64-encoded-certificate}",
            "kind": "TrustedRoot"
         }
      }
   }
}

请求正文示例

此请求正文示例显示了示例值:

{
   "id": "/subscriptions/********************/resourceGroups/Fabrikam-RG/providers/Microsoft.Logic/integrationServiceEnvironments/Fabrikam-ISE",
   "name": "Fabrikam-ISE",
   "type": "Microsoft.Logic/integrationServiceEnvironments",
   "location": "WestUS2",
   "identity": {
      "type": "UserAssigned",
      "userAssignedIdentities": {
         "/subscriptions/********************/resourceGroups/Fabrikam-RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/*********************************": {
            "principalId": "*********************************",
            "clientId": "*********************************"
         }
      }
   },
   "sku": {
      "name": "Premium",
      "capacity": 1
   },
   "properties": {
      "networkConfiguration": {
         "accessEndpoint": {
            // Your ISE can use the "External" or "Internal" endpoint. This example uses "External".
            "type": "External"
         },
         "subnets": [
            {
               "id": "/subscriptions/********************/resourceGroups/Fabrikam-RG/providers/Microsoft.Network/virtualNetworks/Fabrikam-VNET/subnets/subnet-1",
            },
            {
               "id": "/subscriptions/********************/resourceGroups/Fabrikam-RG/providers/Microsoft.Network/virtualNetworks/Fabrikam-VNET/subnets/subnet-2",
            },
            {
               "id": "/subscriptions/********************/resourceGroups/Fabrikam-RG/providers/Microsoft.Network/virtualNetworks/Fabrikam-VNET/subnets/subnet-3",
            },
            {
               "id": "/subscriptions/********************/resourceGroups/Fabrikam-RG/providers/Microsoft.Network/virtualNetworks/Fabrikam-VNET/subnets/subnet-4",
            }
         ]
      },
      "certificates": {
         "testCertificate": {
            "publicCertificate": "LS0tLS1CRUdJTiBDRV...",
            "kind": "TrustedRoot"
         }
      }
   }
}

添加自定义根证书

通常使用 ISE 连接到虚拟网络或本地上的自定义服务。 这些自定义服务通常由自定义根证书颁发机构颁发的证书(例如企业证书颁发机构或自签名证书)所保护。 有关使用自签名证书的详细信息,请参阅安全访问和数据 - 对其他服务和系统的出站调用访问。 为了使 ISE 通过传输层安全性 (TLS) 成功连接到这些服务,ISE 需要访问这些根证书。

添加自定义根证书的注意事项

使用自定义受信任的根证书更新 ISE 之前,请查看以下注意事项:

  • 请确保上传根证书和所有中间证书。 最大证书数量为 20 个。

  • 证书上的主题名称必须与要从 Azure 逻辑应用调用的目标终结点的主机名匹配。

  • 上传根证书是一项替换操作,其中最新上传的文件将覆盖之前上传的文件。 例如,如果发送请求上传一个证书,然后再发送一个请求上传另一个证书,则 ISE 只使用第二个证书。 如果需要使用这两个证书,请将它们添加到同一个请求中。

  • 上传根证书是异步操作,需要花费一些时间。 如果要检查状态或结果,可以使用同一个 URI 发送 GET 请求。 当上传操作仍在进行时,响应消息的 provisioningState 字段返回 InProgress 值。 当 provisioningState 值为 Succeeded 时,上传操作完成。

请求语法

如果要使用自定义受信任的根证书更新 ISE,请将以下 HTTPS PATCH 请求发送到 Azure 资源管理器 URL,该 URL 因 Azure 环境而异,例如:

环境 Azure 资源管理器 URL
Azure 全球(多租户) PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationServiceEnvironments/{integrationServiceEnvironmentName}?api-version=2019-05-01
Azure Government PATCH https://management.usgovcloudapi.net/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationServiceEnvironments/{integrationServiceEnvironmentName}?api-version=2019-05-01
Microsoft Azure 中国世纪互联 PATCH https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/integrationServiceEnvironments/{integrationServiceEnvironmentName}?api-version=2019-05-01

用于添加自定义根证书的请求正文语法

下面是请求正文语法,其中说明了添加根证书时要使用的属性:

{
   "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Logic/integrationServiceEnvironments/{ISE-name}",
   "name": "{ISE-name}",
   "type": "Microsoft.Logic/integrationServiceEnvironments",
   "location": "{Azure-region}",
   "properties": {
      "certificates": {
         "testCertificate1": {
            "publicCertificate": "{base64-encoded-certificate}",
            "kind": "TrustedRoot"
         },
         "testCertificate2": {
            "publicCertificate": "{base64-encoded-certificate}",
            "kind": "TrustedRoot"
         }
      }
   }
}

后续步骤