[本文为预发布文档,可能会发生变化。]
连接器终结点筛选允许管理员控制生成应用、流或聊天机器人时可以连接到的特定终结点。 它在数据策略中配置,并且专用于以下连接器:
- HTTP
- 使用 Microsoft Entra ID (AD) 的 HTTP
- HTTP Webhook
- SQL Server(包括使用 SQL Server Connector 访问 Azure Synapse 数据仓库)
- Azure Blob 存储
- SMTP
- 浏览器自动化
- 用户界面自动化
当创建者将其应用、流或聊天机器人连接到阻止的终结点时,他们会看到数据策略错误消息。
警告
终结点筛选规则不适用于环境变量、自定义输入或任何在运行时动态创建的终结点。 在应用、流或聊天机器人设计器中仅评估静态终结点。 有关详细信息,请参阅已知限制。
重要提示
- 这是一项预览功能。
- 预览功能不适用于生产用途,并且可能具有受限功能。 这些功能受 补充使用条款的约束,在正式发布之前提供,以便客户能够提前访问并提供反馈。
向数据策略添加终结点筛选规则
数据策略中“预生成连接器”页上的“终结点可配置”列指示连接器是否支持终结点筛选功能。
如果终结点可配置列的值为是,您可以通过右键单击然后选择配置连接器>连接器终结点来使用此功能。
这会打开一个侧面板,可在其中指定“允许”或“拒绝”URL 模式的有序列表。 列表中的最后一行是一个规则,该规则涉及通配符(*)并适用于该连接器中的所有终结点。 默认情况下,模式 * 设置为“允许”用于新数据策略,但你可以将其标记为“允许”或“拒绝”。
添加新规则
您可以通过选择添加终结点来添加新规则。 新规则作为第二个到最后一个规则添加到模式列表的末尾。 这是因为 * 列表中的最后一个条目。 不过,您可以通过使用顺序下拉列表或选择上移或下移来更新模式的顺序。
添加模式后,可以通过选择特定行并选择 “删除”来编辑或删除它。
保存连接器终结点筛选规则和定义它们的数据策略后,会在目标环境中立即强制执行它们。 下图显示了一个示例,其中一个创建者尝试将其云流连接到不允许的 HTTP 终结点。
已知限制
终结点筛选规则不会在运行时对环境变量、自定义输入和动态绑定终结点强制执行。 仅在设计阶段对在应用、流或聊天机器人构建过程中已知并选择的静态终结点进行强制实施。 这意味着,如果连接使用 Microsoft Entra ID 进行身份验证,则不会强制实施 SQL Server 和 Azure Blob 存储的连接器终结点筛选规则。 在以下两个屏幕截图中,开发者构建一个云流程,在变量中定义 SQL Server 和数据库,并将这些变量用作连接的定义输入。 因此,不会评估终结点筛选规则,并且云流会成功执行。
需要重新发布 2020 年 10 月 1 日之前发布的 Power Apps,以便强制实施数据策略连接器操作规则和端点规则。 以下脚本允许管理员和创建者识别必须重新发布的应用,以符合这些新的数据策略精细控制规则:
Add-PowerAppsAccount $GranularDLPDate = Get-Date -Date "2020-10-01 00:00:00Z" ForEach ($app in Get-AdminPowerApp){ $versionAsDate = [datetime]::Parse($app.LastModifiedTime) $olderApp = $versionAsDate -lt $GranularDLPDate $wasBackfilled = $app.Internal.properties.executionRestrictions -ne $null -and $app.Internal.properties.executionRestrictions.dataLossPreventionEvaluationResult -ne $null -and ![string]::IsNullOrEmpty($app.Internal.properties.executionRestrictions.dataLossPreventionEvaluationResult.lastAdvancedBackfillDate) If($($olderApp -and !$wasBackfilled)){ Write-Host "App must be republished to comply with granular data policy: " $app.AppName " " $app.Internal.properties.displayName " " $app.Internal.properties.owner.email } Else{ Write-Host "App is already Granular data policy compliant: " $app.AppName } }
终结点输入格式和示例
每个连接器以不同的方式定义一个终结点,某些终结点可以具有多种格式。 因此,必须以所有可能的格式输入终结点,以阻止创建者在创建应用和流时使用它们。 管理员可以输入完整的终结点名称,或使用与通配符(*)匹配的模式来创建终结点筛选规则。 这些规则在终结点模式的有序列表中输入并显示,这意味着它们按数字按升序计算。 任何给定连接器的最后一个规则始终是 *“允许”或 *“拒绝”。 “允许”是默认值,可更改为“拒绝”。
以下指南介绍如何在创建规则以允许或拒绝连接器终结点时输入连接器终结点。
SQL Server
列出 <Server_name, database_name> 格式的 SQL Server 连接终结点。 需要注意的几个事项:
创建者可以采用各种格式输入服务器名称。 若要解决终结点问题,请以所有可能的格式输入该终结点。 例如,本地实例可以采用
<machine_name\named_instance, database_name>或<IP address, custom port, database_name>格式。 在这种情况下,您必须为终结点同时应用这两种格式的允许或阻止规则。 例如:- 阻止
WS12875676\Servername1,MktingDB - 阻止
11.22.33.444,1401,MktingDB
- 阻止
没有特殊的逻辑处理相对地址,例如
localhost。 因此,如果您阻止*localhost*,它将通过使用localhost作为 SQL Server 终结点的一部分来阻止制作者使用任何终结点。 但是,它不阻止他们使用绝对地址访问终结点,除非管理员也阻止了绝对地址。
下面是一些示例:
仅允许 Azure SQL Server 实例:
- 允许
*.database.windows.net* - 拒绝
*
- 允许
仅允许特定的 IP 范围:(不允许的 IP 地址仍可按格式由制造商
<machine_name\named_instance>输入)。- 允许
11.22.33* - 拒绝
*
- 允许
Dataverse
Dataverse 端点由 组织 ID 表示,例如 00aa00aa-bb11-cc22-dd33-44ee44ee44ee。 请注意,目前只有常规 Dataverse 连接器在终结点筛选的范围内。 Dataverse Dynamics 和 Dataverse 当前连接器不在范围内。 此外,Dataverse 的本地实例(也称为当前环境)永远不会被阻止在环境中使用。 这意味着制造商始终可以在任何给定环境中访问 Dataverse 当前环境。
因此,一条规则,上面写着:
- 允许
00aa00aa-bb11-cc22-dd33-44ee44ee44ee - 拒绝
*
实际意味着:
- 允许
Dataverse current environment - 允许
00aa00aa-bb11-cc22-dd33-44ee44ee44ee - 拒绝
*
允许 Dataverse current environment 始终隐式作为任何给定环境的 Dataverse 终结点筛选列表中的第一个规则。
Azure Blob 存储
Azure Blob 存储终结点使用 Azure 存储帐户名称。
SMTP
SMTP 终结点以 <SMTP server address, port number> 格式表示。
下面是一个示例方案:
- 拒绝
smtp.gmail.com,587 - 允许
*
使用 Microsoft Entra ID、HTTP Webhook 和 HTTP 连接器的 HTTP
HTTP 连接器终结点使用 URL 模式。 使用 Microsoft Entra 连接器的 HTTP 的获取 Web 资源操作超出范围。
下面是一个示例场景:
仅允许访问 https://management.azure.com/ 中的 Azure 订阅页面。
- 允许
https://management.azure.com/subscriptions* - 拒绝
https://management.azure.com/* - 拒绝
*
浏览器自动化
此功能允许你在 Power Automate for Desktop 中控制桌面流访问的网页。 终结点以 URL 格式或网页名称格式表示,您可以使用通配符进行动态 URL 或页面名称匹配。 在桌面流继续进行浏览器交互之前,会在“启动 Web 浏览器”或“转到网页”操作期间进行验证。
备注
将“启动 Web 浏览器”操作配置为附加到前台窗口时,不会验证终结点筛选。 在这种情况下,除非拒绝对所有网页的访问,否则不会阻止该操作。
下面是一个示例方案:
允许访问除 URL https://www.microsoft.com/ 和包含字符串 powerplatform 的任何 URL 或网页之外的所有网页。
- 拒绝
https://www.microsoft.com/ - 拒绝
*powerplatform* - 允许
*
用户界面自动化
此功能允许你定义桌面流可以在 Power Automate for desktop 中与哪些应用程序和屏幕进行交互。 终结点是使用应用程序的进程名称指定的。 当进程名称为 ApplicationFrameHost、 Java 或 Javaw 时(指示通用 Windows 平台(UWP)或 Java 应用程序(其中多个实例可能共享相同名称)时,适用于桌面的 Power Automate 使用进程名称和窗口显示名称来准确识别目标。 灵活匹配支持使用通配符。
验证会在 UI 自动化组的任何操作上发生。 它会检查目标屏幕选择器(如图像中的箭头所示)中的 Process 属性(由图像中的数字 1 指示)或 Name 属性(由图像中的数字 2 指示)。 通常,相关 UI 元素的父元素用于确定是否允许交互。
终结点筛选规则不适用于变量或动态绑定的终结点。 如果表达式包含文本字符串以外的任何内容,则会绕过筛选,从而可能允许访问受限的连接器参数。 默认策略行为是所有终结点筛选策略包括核心规则(允许 * 或 拒绝 *),默认为 允许 * (允许全部)。
- 使用 Allow * 时:不会筛选动态值。 即使特定应用程序受到限制,任何动态表达式也会绕过终结点筛选。
- 使用 Deny * 时:默认情况下会阻止所有动态值,确保更严格的强制实施。
备注
- 如果相关属性(进程 或 名称)不是选择器的一部分,则不会强制实施终结点筛选。
- 某些 Windows作系统 UI 元素不支持终结点筛选,包括桌面图标、任务栏按钮和 “开始” 菜单中的组件。
下面是一个示例方案。 若要允许访问所有应用程序和屏幕,除了那些 进程 或 名称 属性完全是 计算器 或包含字符串 Java 的应用程序和屏幕之外,需要配置以下规则:
- 拒绝
Calculator - 拒绝
*Java* - 允许
*
PowerShell 支持终结点筛选
为策略配置终结点筛选规则
包含策略的终结点筛选规则的对象称为连接器配置。
连接器配置对象具有以下结构:
$ConnectorConfigurations = @{
connectorActionConfigurations = @() # used for connector action rules
endpointConfigurations = @( # array – one entry per
@{
connectorId # string
endpointRules = @( # array – one entry per rule
@{
order # number
endpoint # string
behavior # supported values: Allow/Deny
}
)
}
)
}
注释
- 每个连接器的最后一条规则必须始终应用于 URL
*,以确保规则涵盖所有 URL。 - 每个连接器的规则的顺序属性必须使用数字 1 到 N,其中 N 是该连接器的规则数。
检索数据策略的现有连接器配置
Get-PowerAppDlpPolicyConnectorConfigurations
为数据策略创建连接器配置
New-PowerAppDlpPolicyConnectorConfigurations
更新数据策略的连接器配置
Set-PowerAppDlpPolicyConnectorConfigurations
示例
目标:
对于 SQL Server 连接器:
- 拒绝服务器“myservername.database.windows.net”的数据库“testdatabase”
- 允许访问服务器“myservername.database.windows.net”的所有其他数据库
- 拒绝所有其他服务器
对于 SMTP 连接器:
- 允许 Gmail(服务器地址:smtp.gmail.com,端口:587)
- 拒绝所有其他地址
对于 HTTP 连接器:
- 允许终结点
https://mywebsite.com/allowedPath1和https://mywebsite.com/allowedPath2 - 拒绝所有其他 URL
备注
在以下 cmdlet 中,PolicyName 指的是唯一的 GUID。 通过运行 Get-DlpPolicy cmdlet 检索数据策略 GUID。
$ConnectorConfigurations = @{
endpointConfigurations = @(
@{
connectorId = "/providers/Microsoft.PowerApps/apis/shared_sql"
endpointRules = @(
@{
order = 1
endpoint = "myservername.database.windows.net,testdatabase"
behavior = "Deny"
},
@{
order = 2
endpoint = "myservername.database.windows.net,*"
behavior = "Allow"
},
@{
order = 3
endpoint = "*"
behavior = "Deny"
}
)
},
@{
connectorId = "/providers/Microsoft.PowerApps/apis/shared_smtp"
endpointRules = @(
@{
order = 1
endpoint = "smtp.gmail.com,587"
behavior = "Allow"
},
@{
order = 2
endpoint = "*"
behavior = "Deny"
}
)
},
@{
connectorId = "http"
endpointRules = @(
@{
order = 1
endpoint = "https://mywebsite.com/allowedPath1"
behavior = "Allow"
},
@{
order = 2
endpoint = "https://mywebsite.com/allowedPath2"
behavior = "Allow"
},
@{
order = 3
endpoint = "*"
behavior = "Deny"
}
)
}
)
}
New-PowerAppDlpPolicyConnectorConfigurations -TenantId $TenantId -PolicyName $PolicyName -NewDlpPolicyConnectorConfigurations $ConnectorConfigurations