針對 Azure Data Factory 和 Synapse Analytics 的安全性與存取控制問題進行疑難排解
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
本文探討 Azure Data Factory 和 Synapse Analytics 管線中的安全性和存取控制常見的疑難排解方法。
常見錯誤和訊息
雲端資料存放區複製活動的連線問題
徵兆
當來源或接收資料存放區發生連線問題時,可能會傳回各種錯誤訊息。
原因
此問題通常由下列其中一個因素造成:
自我裝載整合執行階段 (IR) 節點中的 Proxy 設定 (如果您使用自我裝載整合執行階段 (IR) 的話)。
自我裝載整合執行階段 (IR) 節點中的防火牆設定 (如果您使用自我裝載整合執行階段 (IR) 的話)。
雲端資料存放區中的防火牆設定。
解決方法
若要確保問題出在連線上,請檢查是否有以下情況:
- 擲回錯誤的是來源或接收連接器。
- 複製活動剛開始就發生失敗。
- Azure IR 或自我裝載 IR 在與某個節點搭配使用時會一直失敗,原因是如果只有某些節點有此問題,則可能是多節點自我裝載 IR 中的隨機失敗。
如果您使用自我裝載 IR,請檢查 Proxy、防火牆和網路設定,因為如果您使用 Azure IR,連線到相同資料存放區可能會成功。 若要針對此案例進行疑難排解,請參閱:
如果您使用 Azure IR,請嘗試停用資料存放區的防火牆設定。 這種方法可以解決下列兩種情況所發生的問題:
- Azure IR IP 位址不在允許清單中。
- Azure Blob 儲存體和 Azure Data Lake Storage Gen 2 已關閉 [允許信任的 Microsoft 服務存取此儲存體帳戶] 功能。
- Azure Data Lake Storage Gen1 未啟用 [允許存取 Azure 服務] 設定。
如果上述方法都無效,請連絡 Microsoft 以取得協助。
已刪除或拒絕的私人端點仍會在 ADF 中顯示「已核准」
徵兆
您已從 ADF 建立受控私人端點,並取得已核准的私人端點。 但是,在稍後刪除或拒絕私人端點之後,ADF 中的受控私人端點仍會持續存在,並顯示「已核准」。
原因
目前,ADF 會在核准後停止提取私人端點狀態。 因此,ADF 中顯示的狀態已過時。
解決方法
一旦從來源/接收資料集拒絕/刪除現有的私人端點,您即應該刪除 ADF 中的受控私人端點。
停用公用網路存取之後驗證金鑰會無效或空白的問題
徵兆
在停用服務的公用網路存取之後,自我裝載整合執行階段會擲回下列錯誤:The Authentication key is invalid or empty.
或 Cannot connect to the data factory. Please check whether the factory has enabled public network access or the machine is hosted in a approved private endpoint Virtual Network.
原因
最可能造成此問題的因素是網域名稱系統 (DNS) 解析出錯,因為停用公用連線並建立私人端點會禁止重新連線。
若要確認服務的完整網域名稱 (FQDN) 是否解析為公用 IP 位址,請執行下列動作:
確認您已在與服務的私人端點相同的虛擬網路中建立 Azure 虛擬機器 (VM)。
執行從 Azure VM 到服務 FQDN 的 PsPing 和 Ping:
psping.exe <dataFactoryName>.<region>.datafactory.azure.net:443
ping <dataFactoryName>.<region>.datafactory.azure.net
注意
您必須為 PsPing 命令指定連接埠。 這裡會顯示連接埠 443,但不一定要使用。
檢查這兩個命令是否都解析為以指定區域為基礎的 Azure Data Factory 公用 IP。 IP 的格式應該如下:
xxx.xxx.xxx.0
解決方法
若要解決這個問題,請執行下列動作:
作為選項,建議您在服務的 [私人連結 DNS 區域] 底下手動新增 [虛擬網路連結]。 如需詳細資訊,請參閱 Azure Private Link 一文。 此指示會引導您設定私人 DNS 區域或自訂 DNS 伺服器,以將服務 FQDN 解析為私人 IP 位址。
不過,如果您不想設定私人 DNS 區域或自訂 DNS 伺服器,請嘗試下列臨時解決方案:
變更 Windows 中的主機檔案,並將私人 IP (服務的私人端點) 對應至服務 FQDN。
在 Azure VM 中,移至
C:\Windows\System32\drivers\etc
,然後在記事本中開啟主機檔案。 在檔案結尾處新增會將私人 IP 對應至 FQDN 的程式行,並儲存變更。重新執行與上述驗證步驟相同的命令以檢查回應,回應中應該會包含私人 IP。
重新註冊自我裝載整合執行階段,應該就能解決問題了。
由於私人連結,無法在自我裝載的 VM 上註冊 IR 驗證金鑰
徵兆
您無法在自我裝載的 VM 上註冊 IR 驗證金鑰,因為私人連結已啟用。 您收到下列錯誤訊息:
「無法從 ADF 服務取得金鑰為 *************** 的服務權杖,時間成本為:0.1250079 秒,錯誤碼為:InvalidGatewayKey,activityId 為:XXXXXXX,詳細的錯誤訊息為用戶端 IP 位址不是有效的私人 IP,因為 Data Factory 無法存取公用網路,因而無法連線到雲端以使連線成功。」
原因
造成此問題的原因可能是您嘗試安裝自我裝載 IR 的 VM。 若要連線到雲端,請確定您已啟用公用網路存取。
解決方法
解決方案 1
若要解決這個問題,請執行下列動作:
移至 [處理站 - 更新] 頁面。
在右上方,選取 [試試看] 按鈕。
在 [參數] 下,完成必要資訊。
在 [本文] 下,貼上下列屬性:
{ "tags": { "publicNetworkAccess":"Enabled" } }
選取 [執行] 來執行函式。
在 [參數] 下,完成必要資訊。
在 [本文] 下,貼上下列屬性:
{ "tags": { "publicNetworkAccess":"Enabled" } }
選取 [執行] 來執行函式。
確認有顯示回應碼:200。 您貼上的屬性也應該會顯示在 JSON 定義中。
在整合執行階段中再次新增 IR 驗證金鑰。
解決方案 2
若要解決此問題,請移至 Azure Private Link。
嘗試在使用者介面上啟用公用網路存取,如下列螢幕擷取畫面所示:
服務的私人 DNS 區域覆寫 Azure Resource Manager DNS 解析而造成「找不到」錯誤
原因
Azure Resource Manager 和服務使用相同的私人區域,而在客戶的私人 DNS 上產生潛在衝突,並發生找不到 Azure Resource Manager 記錄的情況。
解決方法
- 在 Azure 入口網站中尋找私人 DNS 區域 privatelink.azure.com。
- 檢查是否有 A 記錄 adf。
- 移至 [虛擬網路連結],刪除所有記錄。
- 在 Azure 入口網站中瀏覽至您的服務,然後為入口網站重新建立私人端點。
- 返回私人 DNS 區域,並檢查是否有新的私人 DNS 區域 privatelink.adf.azure.com。
公用端點中的連線錯誤
徵兆
使用 Azure Blob 儲存體帳戶公用存取來複製資料時,管線執行會隨機失敗,並出現下列錯誤。
例如:Azure Blob 儲存體接收使用 Azure IR (公用,而不是受控虛擬網路),Azure SQL Database 來源則使用受控虛擬網路 IR。 或者,來源/接收只使用具有儲存體公用存取的受控虛擬網路 IR。
<LogProperties><Text>Invoke callback url with req: "ErrorCode=AzureBlobFailedToCreateContainer,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Unable to create Azure Blob container. Endpoint: XXXXXXX/, Container Name: test.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Microsoft.WindowsAzure.Storage.StorageException,Message=Unable to connect to the remote server,Source=Microsoft.WindowsAzure.Storage,''Type=System.Net.WebException,Message=Unable to connect to the remote server,Source=System,''Type=System.Net.Sockets.SocketException,Message=A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond public ip:443,Source=System,'","Details":null}}</Text></LogProperties>.
原因
服務可能仍使用受控虛擬網路 IR,但您可能會發生這樣的錯誤,因為根據測試結果,受控虛擬網路 中 Azure Blob 儲存體的公用端點並不可靠,而且根據受控虛擬網路和受控私人端點,不支援透過公用端點從服務的受控虛擬網路連線到 Azure Blob 儲存體和 Azure Data Lake Gen2。
解決方法
- 在使用受控虛擬網路 IR 時,於來源以及接收上啟用私人端點。
- 如果仍想使用公用端點,則可以改為只有公用 IR,而不是針對來源和接收使用受控虛擬網路 IR。 即使您改回公用 IR,如果受控虛擬網路 IR 仍然存在,服務可能仍會使用受控虛擬網路 IR。
嘗試刪除具有客戶自控金鑰 (CMK) 和使用者指派受控識別 (UA-MI) 的資料處理站或 Synapse 工作區時發生內部錯誤
徵兆
{\"error\":{\"code\":\"InternalError\",\"message\":\"Internal error has occurred.\"}}
原因
如果您要執行任何與 CMK 相關的作業,請先完成所有與服務相關的作業,再完成外部作業 (例如受控識別或 Key Vault 作業)。 例如,如果您想要刪除所有資源,就必須先刪除服務執行個體,再刪除金鑰保存庫。 如果您先刪除金鑰保存庫,就會發生此錯誤,因為服務無法再讀取到所需的物件,而且無法驗證是否可執行刪除作業。
解決方法
有三種辦法可以解決此問題。 這些範本如下:
您已撤銷服務對 CMK 金鑰儲存所在金鑰保存庫的存取權。 您可以重新指派下列權限的存取權:取得、將金鑰解除包裝和包裝金鑰。 必須要有這些權限,才能啟用客戶自控金鑰。 請參閱授與客戶自控金鑰的存取權。 提供權限之後,應該就能刪除服務了。
在刪除服務之前,客戶已刪除 Key Vault/CMK。 服務中的 CMK 應啟用「虛刪除」和「清除保護」,其預設保留原則為 90 天。 您可以還原已刪除的金鑰。
請檢閱復原已刪除的金鑰和已刪除的金鑰值已在服務之前刪除使用者指派的受控識別 (UA-MI)。 您可以使用 REST API 從此復原。 您可以使用程式設計語言在所選的 http 用戶端中進行復原。 如果您尚未針對 Azure 驗證的 REST API 呼叫進行任何設定,最簡單的方式就是使用 Fiddler 來進行。 請遵循下列步驟。
使用 GET Url 方法來進行 GET 呼叫:例如
https://management.azure.com/subscriptions/YourSubscription/resourcegroups/YourResourceGroup/providers/Microsoft.DataFactory/factories/YourFactoryName?api-version=2018-06-01
您必須建立具有不同名稱的新使用者受控識別 (相同名稱或許也行可,但為了確保成功,使用的名稱與 GET 回應中的名稱不同會比較安全)
修改 encryption.identity 屬性和 identity.userassignedidentities,以指向新建立的受控識別。 從 userAssignedIdentity 物件中移除 clientId 和 principalId。
對相同 URL 進行 PUT 呼叫以傳遞新本文。 請務必傳遞 GET 回應中取得的任何內容,並只修改身分識別。 否則,會不小心覆寫其他設定。
呼叫成功之後,您就能夠再次看到實體,然後重試刪除。
共用自我裝載整合執行階段
不支援從不同的租用戶共用自我裝載 IR
徵兆
您可能會在嘗試從 UI 共用自我裝載 IR 時發現其他資料處理站 (在不同租用戶上),但您無法在不同租用戶的資料處理站加以共用。
原因
自我裝載 IR 不能跨租用戶來共用。
相關內容
如需疑難排解方面的更多協助,請嘗試下列資源: