Bot Framework 的安全性和隱私權常見問題

本文將回答常見的安全性和隱私權問題。

適用于: SDK v4APPLIES TO: SDK v4

向 Bot Framework 註冊的 Bot 是否會收集個人資訊? 如果是的話,我要如何確定資料是安全的? 隱私權呢?

每個 Bot 都是它自己的服務,這些服務的開發人員必須根據其開發人員管理辦法,提供服務條款及隱私權聲明。 如需詳細資訊,請參閱 Bot 檢閱指導方針

可以在自己的伺服器上裝載 Bot 嗎?

是。 您的 Bot 可以裝載在網際網路上的任何位置。 在您自己的伺服器上、Azure 中或任何其他資料中心。 唯一的需求是 Bot 必須公開可公開存取的 HTTPS 端點。

如何從服務中禁止或移除 Bot?

使用者可以透過目錄中 Bot 的連絡人卡片,回報行為異常的 Bot。 開發人員必須遵守 Microsoft 的服務條款,才能參與服務。

我需要在我的公司防火牆中列出哪些特定的 Url,才能存取 Bot Framework 服務?

如果您有輸出防火牆封鎖來自 bot 到網際網路的流量,您必須允許-在該防火牆中列出下列 Url:

  • login.botframework.com (Bot 驗證)
  • login.microsoftonline.com (Bot 驗證)
  • westus.api.cognitive.microsoft.com (適用於 Luis.ai NLP 整合)
  • *.botframework.com (通道)
  • state.botframework.com (回溯相容性)
  • login.windows.net (Windows 登入)
  • login.windows.com (Windows 登入)
  • sts.windows.net (Windows 登入)
  • 其他特定 Bot Framework 通道的 URL

注意

<channel>.botframework.com如果您不想要允許-以星號列出 URL,您可以使用。 <channel> 等於 Bot 使用的每個通道,例如 directline.botframework.comwebchat.botframework.comslack.botframework.com。 在測試 Bot 時,也值得監看透過您防火牆的流量,以確保不會封鎖任何流量。

我可以封鎖所有對 Bot 的流量 (來自 Bot Framework Service 的流量除外) 嗎?

Bot Framework 服務裝載于全球的 Azure 資料中心,而 Azure Ip 清單會不斷地變更。 這表示允許清單中的特定 IP 位址可以運作一天,並在 Azure IP 位址變更時中斷下一天。

建立及部署 Bot 所需的 RBAC 角色為何?

在 Azure 入口網站中建立 Bot 需要訂用帳戶或特定資源群組中的「參與者」存取權。 在資源群組中具有「參與者」角色的使用者,可以在該特定資源群組中建立新的 Bot。 訂用帳戶「參與者」角色的使用者可以在新的或現有的資源群組中建立 Bot。

使用 Azure CLI 時,角色型存取控制方法可以支援自訂角色。 如果您想要讓自訂角色具有更多受限的許可權,以下的設定可讓使用者建立及部署也支援 LUIS、QnA Maker 和 Application Insights 的 bot。

"Microsoft.Web/ ", "Microsoft.BotService/ ", "Microsoft.Storage/ ", "Microsoft.Resources/deployments/ ", "Microsoft.CognitiveServices/ ", "Microsoft.Search/searchServices/ ", "Microsoft.Insights/ ", "Microsoft.Insights/components/ "

注意

LUIS 和 QnA Maker 需要「認知服務」權限。 QnA Maker 也需要「搜尋」權限。 建立自訂角色時,請記住,任何繼承的 拒絕 許可權都會取代這些 允許 許可權。

如何在用戶端模仿 Bot Framework Service 時保護我的 Bot?

  1. 所有真實的 Bot Framework 要求都會伴隨著 JWT 權杖,其密碼編譯簽章可透過 驗證 指南進行驗證。 權杖的設計是為了讓攻擊者無法模仿信任的服務。
  2. 每個 Bot 要求隨附的安全性權杖內都有 ServiceUrl 編碼,這表示即使攻擊者可以存取權杖,也無法將對話重新導向新的 ServiceUrl。 這是由 SDK 的所有實作強制執行,並記載於我們的驗證參考資料中。
  3. 如果傳入權杖遺漏或格式不正確,Bot Framework SDK 不會在回應中產生權杖。 如果 Bot 的設定不正確,這會限制可以造成多少損害。
  4. 在 Bot 內,您可以手動檢查權杖中提供的 ServiceUrl。 這可讓 Bot 在發生服務拓撲變更時更容易受損,所以這是可行的,但不建議這麼做。

注意

這些都是從 bot 到網際網路的輸出連線。 Bot Framework Connector Service 沒有將用來與 Bot 對話的 IP 位址或 DNS 名稱清單。 不支援輸入 IP 位址允許清單。

在驗證期間,魔術程式碼的用途為何?

在網路聊天控制項中,有兩種機制可確保正確的使用者登入。

  1. 魔術代碼。 在登入程式結束時,使用者會看到隨機產生的6位數代碼 (魔術程式碼) 。 使用者必須在對話中輸入此程式碼,才能完成登入程式。 這通常會導致使用者體驗不佳。 此外,此機制也容易遭受網路釣魚攻擊。 惡意使用者可透過網路釣魚誘騙其他使用者登入,並取得神奇代碼。

    警告

    魔術程式碼的使用已被取代。 相反地,您應該使用 Direct Line 增強型驗證,如下所述。

  2. Direct Line 增強型驗證。 由於 魔術碼 方法的問題,Azure Bot Service 已移除其需求。 Azure Bot 服務可確保登入程序只能在與網路聊天本身 相同的瀏覽器工作階段 中完成。 若要啟用這項保護,您必須使用包含 信任來源 清單的 Direct Line 權杖(也稱為信任網域)來啟動網路聊天,以裝載 bot 的網路聊天用戶端。 利用增強的驗證選項,您可以在 [Direct Line 設定] 頁面中,以靜態方式指定受信任的來源清單。 如需詳細資訊,請參閱 Direct Line 增強式驗證

Bot Framework 如何處理身分識別和存取管理?

身分識別和存取管理 (IAM) ,是一種架構 (原則和技術,) 讓適當的人員能夠適當存取技術資源。 如需詳細資訊,請參閱身分 識別管理

Bot Framework 提供下列識別機制:

  • Bot 驗證。 判斷要求是否來自合法的來源。 它是由 bot connector 服務 所控制,並可在 bot 與通道之間進行安全通訊。 如需詳細資訊,請參閱 Bot 驗證

  • 使用者驗證。 它可讓 bot 代表使用者存取安全的線上資源。 業界標準 OAuth 可用來驗證使用者,並授權 bot 存取資源。 如需詳細資訊,請參閱 使用者驗證

總而言之,Bot Framework 會處理 (Bot 驗證) 的服務對服務驗證,基本上驗證要求確實來自適當的通道。 Bot 負責處理較低層級的驗證。 您可以套用篩選器,讓您的 bot 只接受來自特定租使用者識別碼的要求,或者您可以要求使用者使用某些 OAuth 服務驗證 (使用者驗證) 。

如何? 將我的 bot 僅限於屬於我的租使用者的使用者嗎?

您有兩個不同的選項可限制 bot 處理的傳入訊息。

  • 如果您正在處理安全資料,絕對建議使用 OAuth 來驗證使用者。

  • 使用中介軟體是另一個不錯的選擇。 例如,在 小組頻道 的案例中,將 TeamsTenantFilteringMiddleware 類別新增至您的 bot,並將它連接到您的啟動方法。 請參閱下列範例: c # 版本JavaScript 版本

    警告

    您無法防止小組將來自不同租使用者的訊息傳送給您,也不能防止他人安裝您的 bot (如果他們有您的應用程式資訊清單)。 您可以做的是防止 bot 處理不想要的訊息。