[本文章是發行前版本文件,且隨時可能變更。]
連接器端點篩選可讓管理員控制製作者在建置應用程式、流程或聊天機器人時可以連線到哪些特定端點。 它是在資料政策內設定,而且僅適用於下列連接器:
- HTTP
- HTTP 與 Microsoft Entra ID (AD)
- HTTP 網路掛勾 (Webhook)
- SQL Server (包括使用 SQL Server 連接器存取 Azure Synapse 資料倉儲)
- Azure Blob 儲存體
- SMTP
- 瀏覽器自動化
- UI 自動化
當製作者將其應用程式、流程或聊天機器人連線到封鎖的端點時,他們會看到資料政策錯誤訊息。
警告
端點篩選規則不適用於環境變數、自訂輸入或在執行階段動態建立的任何端點。 只有靜態端點才會在應用程式、流程或聊天機器人設計師中進行評估。 如需詳細資訊,請參閱已知限制。
重要
- 這是預覽功能。
- 預覽功能不供生產時使用,而且可能功能受限。 這些功能應受補充使用條款所拘束,其為在正式發行前先行推出,讓客戶能夠搶先體驗並提供意見反應。
將端點篩選規則新增至您的資料政策
「資料原則」中「預先建置的連接器」頁面上的「端點可設定」欄會指出連接器是否支援端點篩選功能。
如果端點可設定資料行的值為是,您可以按右鍵,然後選取設定連接器>連接器端點來使用此功能。
這會開啟側邊面板,您可以在其中指定允許或拒絕 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 端點由 組織識別碼表示,例如 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 ID 連接器的 HTTP 的取得 Web 資源動作不在範圍內。
範例案例如下:
只允許存取 https://management.azure.com/ 中的 Azure 訂閱頁面。
- 允許
https://management.azure.com/subscriptions* - 拒絕
https://management.azure.com/* - 拒絕
*
瀏覽器自動化
此功能可讓您控制桌面流程在桌面版 Power Automate 中存取的網頁。 端點以 URL 格式或網頁名稱格式表示,您可以使用萬用字元進行動態 URL 或頁面名稱比對。 在桌面流程繼續瀏覽器互動之前,會在「啟動網頁瀏覽器」或「移至網頁」動作期間進行驗證。
Note
將「啟動網頁瀏覽器」動作設定為附加至前景視窗時,不會驗證端點篩選。 在此類情況下,除非拒絕對所有網頁的存取,否則不會封鎖該動作。
範例案例如下:
允許存取除了 URL https://www.microsoft.com/ 以及任何包含字串 powerplatform 的 URL 或網頁以外的所有網頁。
- 拒絕
https://www.microsoft.com/ - 拒絕
*powerplatform* - 允許
*
UI 自動化
此功能可讓您定義桌面流程可以在桌面版 Power Automate 中與哪些應用程式和螢幕互動。 端點是使用應用程式的處理程序名稱來指定。 當程序名稱為 ApplicationFrameHost、 Java 或 Javaw 時 (表示多個執行個體可能共用相同名稱的通用 Windows 平台 (UWP) 或 Java 應用程式,桌面版 Power Automate 會同時使用程序名稱和視窗顯示名稱來準確識別目標。 支援萬用字元以實現彈性比對。
驗證會發生在 UI 自動化群組內的任何動作上。 它檢查目標螢幕選擇器中的 Process 屬性(由圖中的數字1表示)或 Name 屬性(由圖中的數字2表示)(如圖中的箭頭所示)。 通常,相關 UI 元素的父系會用來判斷是否允許互動。
端點篩選規則不適用於變數或動態繫結端點。 如果運算式包含常值字串以外的任何內容,則會略過篩選,可能允許存取受限制的連接器引數。 預設原則行為是所有端點篩選原則都包含核心規則 (允許 * 或 拒絕 *),預設為 允許 * (全部允許)。
- 使用 [允許 * ] 時:不會篩選動態值。 任何動態運算式都會略過端點篩選,即使特定應用程式受到限制也一樣。
- 使用 Deny * 時:預設會封鎖所有動態值,確保更嚴格的強制執行。
Note
- 如果相關屬性 (進程 或 名稱) 不是選取器的一部分,則不會強制執行端點篩選。
- 某些 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 伺服器連接器:
- 拒絕伺服器 "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
Note
在以下 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