在桌面流连接上设置运行所有者(预览版)

[本文是预发行文档,可能会有所更改。]

共享连接时,接收方可以执行脚本、检索脚本 ID 和 CloudConnector ID,从而可能代表连接所有者执行未经授权的操作。 这就是桌面流连接共享不可用的原因。

若要通过服务主体拥有的管道启用应用程序生命周期管理(ALM),需要在桌面流连接中包含新的“运行所有者”角色。 此新角色将连接所有者与运行所有者分开。 仅当运行所有者是另一个服务主体(也称为运行所有者 SPN)时,才能与服务主体(也称为管道 SPN)共享桌面流连接。

重要提示

  • 这是一项预览功能。
  • 预览功能不适用于生产环境,并且可能具有受限的功能。 这些功能在正式发布之前已经可用,以便客户可以抢先体验并提供反馈。
  • 此功能正在各地区逐步推广,您所在的地区可能无法使用。
  • 桌面流的运行所有者是在流执行期间检查其权限的用户。
  • 使用 Power Automate 门户创建的连接使用连接的创建者(创建连接的用户)作为运行所有者。

若要运行流,用户需要:

  • 至少具有“环境制作者”角色(在 Power Automate 管理中心中定义)。
  • 要有权访问流使用的 Dataverse 表,包括:
    • 计算机或计算机组(或托管计算机组,如果适用)
    • 桌面流脚本
    • 凭据(如果连接上有)
    • 桌面流脚本中的任何依赖项(例如云连接器、凭据等)
    • 工作队列(如果由流使用)

用户现在可以明确选择一个 Microsoft Entra 身份作为运行所有者。

只有明确选择了运行所有者的连接才能与其他用户共享。 在这种情况下,桌面流连接共享的接收者仅限于服务主体用户。

限制

运行所有者标识限制

  • 明确的运行所有者需要是服务主体类型。
  • 服务主体需要在与连接创建者相同的租户中注册。
  • 与显式运行所有者的连接仅支持基于证书的身份验证。

产品限制

  • 与显式运行所有者的连接不能用于运行具有非嵌入式云端流的桌面流。
  • 不支持“使用有人参与的运行的登录进行连接”连接。

备注

在正式发布之前,某些桌面流功能不受支持:

连接限制

  • 可以在连接上更新显式运行所有者标识,但不能将其删除。 如果要删除连接上的运行所有者标识,则需要创建一个不带运行所有者标识的新连接。

先决条件

已在 Microsoft Entra 中设置了基于证书身份验证的服务主体用户。

如何设置用作运行所有者的服务主体标识

重要提示

在本文中,请将 URL 和输入/输出数据中的所有方括号 [...] 替换为您的特定场景值。

将服务主体标识注册为环境应用程序用户

  1. 将服务主体用户添加为环境中的应用程序用户。 了解更多信息,请参阅管理应用程序用户

  2. 将“环境创建者”角色添加到应用程序用户。 了解更多信息,请参阅管理应用程序用户的角色

共享 Dataverse 表

运行所有者需要有权访问流在执行过程中使用的所有 Dataverse 表。

链接
计算机 共享计算机
计算机组 共享计算机组
托管计算机组组件 共享托管计算机组组件
桌面流脚本 共享桌面流
凭据 共享凭据
工作队列 共享工作队列

创建与运行所有者的连接

请求访问令牌

首先,请求一个访问令牌来与 Power Platform API 交互。 了解更多信息,请参阅请求访问令牌

发送请求以创建与运行所有者的连接

要创建一个连接,向 Power Apps API 发送 HTTP PUT 请求来创建连接,使用您之前获得的访问令牌。

PUT https://[ENVIRONMENT_ID_URL].environment.api.powerplatform.com/connectivity/connectors/shared_uiflow/connections/[CONNECTION_ID]?api-version=1
Content-Type: application/json
Host: [ENVIRONMENT_ID_URL].environment.api.powerplatform.com
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJu...
占位符 Description 示例
ENVIRONMENT_ID_URL 环境 ID,删除了所有分隔符,最后两个字符用句点分隔。 00aa00aa-bb11-cc22-dd33-44ee44ee44ee -> 00aa00aabb11cc22dd3344ee44ee44ee
CONNECTION_ID 用于创建连接的连接 ID。 它必须是有效的 GUID。 您可以使用 New-Guid PowerShell 命令创建 GUID。 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb

正文内容根据所使用的计算机凭据类型而变化。

如果使用凭据,则需要在创建连接之前与服务主体标识共享该凭据。 了解更多信息,请参阅共享凭证

为请求正文定义的占位符:

占位符 Description 示例
ENVIRONMENT_ID 环境 ID 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
DISPLAY_NAME Power Automate 门户中的连接显示名称 InvoiceAppConnection
CREDENTIAL_ID 凭据 ID。 有关详细信息,请参阅 获取凭证 ID bbbbbbbb-1111-2222-3333-cccccccccccc
MACHINE_ACCOUNT 用于打开 Windows 会话的帐户的用户名。 对于本地账户,请使用 <MACHINENAME\\User><local\\User>。 对于 Microsoft Entra ID 帐户,使用 <DOMAIN\\User><username@domain.com>。 注意反斜线需要转义,例如 CONTOSO\\accountName CONTOSO\\accountName
MACHINE_PASSWORD 账户密码
ENVIRONMENT_VARIABLE_USERNAME 包含计算机帐户名称的环境变量的名称。 有关详细信息,请参阅 获取环境变量名称 new_ContosoLogin
ENVIRONMENT_VARIABLE_PASSWORD 包含帐户密码的环境变量的名称。 有关详细信息,请参阅 获取环境变量名称 new_ContosoPassword
GROUP_ID 您要为其创建连接的群组 ID。 详情请参阅获取计算机或组的组 ID dd4cac14-0b49-475d-b274-3ad41a4e82a7
APP_ID 用作运行所有者的服务主体标识的应用程序 ID(或客户端 ID)。 00001111-aaaa-2222-bbbb-3333cccc4444
PFX 服务主体个人信息交换(PFX)证书文件的 base64 编码字符串。 有关详细信息,请参阅获取证书的 base64 编码 MIIKdQIBA...ICB9A=
密码 服务主体证书的密码。 如果为 null,则可以留空

无证书连接

{
    "properties":
    {
        "environment":
        {
            "id": "/providers/Microsoft.PowerApps/environments/[ENVIRONMENT_ID]",
            "name":"[ENVIRONMENT_ID]"
        },
        "displayName": "[DISPLAY_NAME]",
        "connectionParametersSet":
        {
            "name":"azureRelayRunOwner",
            "values":
            {
                "username":{"value":"[MACHINE_ACCOUNT]"},
                "password":{"value":"[MACHINE_PASSWORD]"},
                "targetId":{"value":"[GROUP_ID]"},
                "tokenRunOwnerCert:clientId":{"value":"[APP_ID]"},
                "tokenRunOwnerCert:clientCertificateSecret":
                {
                    "value":
                    {
                        "pfx":"[PFX]",
                        "password":"[PASSWORD]"
                    }
                }
            }
        }
    }
}

与 Azure Key Vault 基于密码的身份验证凭据的连接

{
    "properties":
    {
        "environment":
        {
            "id": "/providers/Microsoft.PowerApps/environments/[ENVIRONMENT_ID]",
            "name":"[ENVIRONMENT_ID]"
        },
        "displayName": "[DISPLAY_NAME]",
        "credentialId": "[CREDENTIAL_ID]",
        "connectionParametersSet":
        {
            "name":"azureRelayRunOwner",
            "values":
            {
                "username":{"value":"@environmentVariables(\"[ENVIRONMENT_VARIABLE_USERNAME]\")"},
                "password":{"value":"@environmentVariables(\"[ENVIRONMENT_VARIABLE_PASSWORD]\")"},
                "targetId":{"value":"[GROUP_ID]"},
                "tokenRunOwnerCert:clientId":{"value":"[APP_ID]"},
                "tokenRunOwnerCert:clientCertificateSecret":
                {
                    "value":
                    {
                        "pfx":"[PFX]",
                        "password":"[PASSWORD]"
                    }
                }
            }
        }
    }
}

与 Azure Key Vault 基于证书的身份验证凭据的连接

{
    "properties":
    {
        "environment":
        {
            "id": "/providers/Microsoft.PowerApps/environments/[ENVIRONMENT_ID]",
            "name":"[ENVIRONMENT_ID]"
        },
        "displayName": "[DISPLAY_NAME]",
        "credentialId": "[CREDENTIAL_ID]",
        "connectionParametersSet":
        {
            "name":"azureRelayRunOwner",
            "values":
            {
                "username":{"value":"@environmentVariables(\"[ENVIRONMENT_VARIABLE_USERNAME]\")"},
                "password":{"value":"none"},
                "targetId":{"value":"[GROUP_ID]"},
                "tokenRunOwnerCert:clientId":{"value":"[APP_ID]"},
                "tokenRunOwnerCert:clientCertificateSecret":
                {
                    "value":
                    {
                        "pfx":"[PFX]",
                        "password":"[PASSWORD]"
                    }
                }
            }
        }
    }
}

与 Cyber Ark 身份验证凭据的连接

{
    "properties":
    {
        "environment":
        {
            "id": "/providers/Microsoft.PowerApps/environments/[ENVIRONMENT_ID]",
            "name":"[ENVIRONMENT_ID]"
        },
        "displayName": "[DISPLAY_NAME]",
        "credentialId": "[CREDENTIAL_ID]",
        "connectionParametersSet":
        {
            "name":"azureRelayRunOwner",
            "values":
            {
                "username":{"value":"@environmentVariables(\"[ENVIRONMENT_VARIABLE_USERNAME]\")"},
                "password":{"value":"none"},
                "targetId":{"value":"[GROUP_ID]"},
                "tokenRunOwnerCert:clientId":{"value":"[APP_ID]"},
                "tokenRunOwnerCert:clientCertificateSecret":
                {
                    "value":
                    {
                        "pfx":"[PFX]",
                        "password":"[PASSWORD]"
                    }
                }
            }
        }
    }
}

连接创建响应

请求完成后,您可以在 Power Automate 门户中看到新创建的连接。 如果提供了所有必要的权限,则还可以将该连接用于桌面流执行。 有关详细信息,请参阅共享 Dataverse 表

响应格式:

{
  "name": "[CONNECTION_ID]",
  "id": "/providers/Microsoft.PowerApps/apis/shared_uiflow/connections/[CONNECTION_ID]",
  "type": "Microsoft.PowerApps/apis/connections",
  "properties": {
    "statuses": [
      {
        "status": "[CONNECTION_STATUS]"
      }
    ],
  }
}  

响应包含:

  • CONNECTION_ID:新连接的 ID
  • CONNECTION_STATUS:创建状态

重要提示

检查收到的连接状态是否为 Connected。 您可能会收到连接状态无效的有效响应(201 已创建)。 如果创建连接时出错,回复将显示错误详细信息。

错误响应:

{
  "error": {
    "code": "ApiHubsRequestFailed",
    "message": "Aggregated detailed message",
    "details": [
      {
        "code": "ErrorCode",
        "message": "Error message",
        "details": [
          {
            "code": "Response Code",
            "message": "Error message"
          }
        ]
      }
    ]
  }
}

更新与运行所有者的连接

您可以使用与创建连接请求相同的 PUT 请求,使用新参数(显示名称、凭据、运行所有者身份)更新现有连接。 在请求 URL 中保留与现有连接相同的连接 ID。

重要提示

不允许删除现有标识上的运行所有者。 如果想阻止使用服务主体,可以在 Dataverse 组织中停用该主体。 更多信息,请参阅停用应用程序用户

删除与运行所有者的连接

您可以使用 Power Automate 门户的“连接”页面中的删除按钮删除连接。

附录

获取计算机或组的组 ID

为了能够创建连接,获取与计算机或计算机组相关联的组 ID。

  • 如果是一个组,请转到监控>计算机>计算机组,然后选择该组。 然后,您可以从 URL 获取组 ID。
  • 如果是计算机,请转到数据>>所有>流计算机组。 在列表中搜索您的计算机,并显示流计算机组列。 它是与您的计算机关联的组 ID。

获取服务主体证书的 base64 编码

您可以使用 PowerShell 获取服务主体证书的 base64 编码:

$filePath = "C:\path\to\your\certificate.pfx"
$bytes = [System.IO.File]::ReadAllBytes($filePath)
$base64String = [System.Convert]::ToBase64String($bytes)
$base64String

获取凭据 ID

要获取凭据 ID:

  1. 转到数据>>全部>凭据
  2. 在列表中搜索证书并显示凭据列。 它是与您的凭据关联的凭据 ID。

获取环境变量名称

要获取环境变量名称:

  1. 凭据页面中选择证书,并选择查看依赖性按钮
  2. 选择在解决方案中查看
  3. 在解决方案页面中,搜索证书使用的环境变量,并查看名称列。 列值是环境变量的名称。