建立和使用受控私人端點
具有 Microsoft Fabric 工作區管理員權限的使用者,可以透過工作區設定,從 Fabric 入口網站建立、檢視及刪除受控私人端點。
使用者也可以從工作區設定的 [網路安全性] 區段監視受控私人端點的狀態和核准程序。
使用者可以從 Fabric Spark 工作負載使用私人端點名稱來存取資料來源。
建立受控私人端點
在 Fabric 工作區中,瀏覽至工作區設定,選取 [網路安全性] 索引標籤,然後選取 [受控私人端點] 區段中的 [建立] 選項。
[建立受控私人端點] 對話方塊隨即開啟。
指定私人端點的名稱,然後在 Azure 資源的資源識別碼中複製。 可在 [Azure 入口網站] 頁面的 [屬性] 索引標籤中找到資源識別碼。
注意
不支援建立具有完整網域名稱 (FQDN) 的受控私人端點。
完成後,請選取 [建立]。
佈建受控私人端點時,[啟用狀態] 會變更為 [已成功]。
此外,私人端點存取的要求也會傳送至資料來源。 資料來源管理員會在其資料來源的 [Azure 入口網站資源] 頁面上收到通知。 在那裡,他們會看到附有要求訊息的擱置存取要求。
以 SQL Server 為例,使用者可以瀏覽至 Azure 入口網站,並搜尋「SQL Server」資源。
在 [資源] 頁面上,從導覽功能表中選取 [網路],然後選取 [私人存取] 索引標籤。
資料來源管理員應該能夠檢視作用中的私人端點連線和新的連線要求。
管理員可以提供業務理由來 [核准] 或 [拒絕]。
一旦資料來源管理員核准或拒絕要求,在重新整理時,[Fabric 工作區設定] 頁面中的狀態就會更新。
當狀態變更為 [已核准] 時,端點可以在筆記本或 Spark 工作定義中使用,以從 Fabric 工作區存取儲存在資料來源中的資料。
在 Fabric 中使用受控私人端點
Microsoft Fabric 筆記本支援在安全的網路後方,使用受控私人端點與資料來源進行無縫互動,以進行資料探索和處理。 在筆記本中,使用者可以快速從其受保護的資料來源讀取資料,並以各種檔案格式將資料寫回其 Lakehouse。
本指南提供程式碼範例,協助您開始使用自己的筆記本,以透過受控私人端點存取資料來源的資料,例如 SQL DB。
必要條件
存取資料來源。 此範例會介紹 Azure SQL Server 和 Azure SQL 資料庫。
登入 Microsoft Fabric 和 Azure 入口網站。
瀏覽至 Azure 入口網站中的 Azure SQL Server 資源頁面,然後選取 [屬性] 功能表。 複製您想要從 Microsoft Fabric 連線的 SQL Server 的資源識別碼。
使用建立受控私人端點中列出的步驟,從 [Fabric 網路安全性設定] 頁面建立受控私人端點。
一旦 SQL Server 的資料來源管理員核准了新的私人端點連線要求,您應該能夠使用新建的受控私人端點。
從筆記本連線到資料來源
在 Microsoft Fabric 工作區中,使用首頁左側的體驗切換器,切換至 Synapse 資料工程體驗。
選取 [建立] 並建立新的筆記本。
現在,在筆記本中,藉由指定 SQL 資料庫的名稱及其連接屬性,就可以透過已設定為讀取資料庫中資料表的受控私人端點連線進行連線,並將其寫入 Microsoft Fabric 中的 Lakehouse。
下列 PySpark 程式碼示範如何連線到 SQL 資料庫。
serverName = "<server_name>.database.windows.net"
database = "<database_name>"
dbPort = 1433
dbUserName = "<username>"
dbPassword = “<db password> or reference based on Keyvault>”
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Example") \
.config("spark.jars.packages", "com.microsoft.azure:azure-sqldb-spark:1.0.2") \
.config("spark.sql.catalogImplementation", "com.microsoft.azure.synapse.spark") \
.config("spark.sql.catalog.testDB", "com.microsoft.azure.synapse.spark") \
.config("spark.sql.catalog.testDB.spark.synapse.linkedServiceName", "AzureSqlDatabase") \ .config("spark.sql.catalog.testDB.spark.synapse.linkedServiceName.connectionString", f"jdbc:sqlserver://{serverName}:{dbPort};database={database};user={dbUserName};password={dbPassword}") \ .getOrCreate()
jdbcURL = "jdbc:sqlserver://{0}:{1};database={2}".format(serverName,dbPort,database)
connection = {"user":dbUserName,"password":dbPassword,"driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"}
df = spark.read.jdbc(url=jdbcURL, table = "dbo.Employee", properties=connection)
df.show()
display(df)
# Write the dataframe as a delta table in your lakehouse
df.write.mode("overwrite").format("delta").saveAsTable("Employee")
# You can also specify a custom path for the table location
# df.write.mode("overwrite").format("delta").option("path", "abfss://yourlakehouse.dfs.core.windows.net/Employee").saveAsTable("Employee")
現在已建立連線,下一個步驟是建立資料框架,以讀取 SQL 資料庫中的資料表。
支援的資料來源
Microsoft Fabric 支援超過 26 個資料來源,以使用受控私人端點連線。 使用者必須指定資源識別碼,您可以在 Azure 入口網站中其資料來源的 [屬性設定] 頁面中找到。 請確定已遵循資源識別碼格式,如下表所示。
服務 | 資源識別碼格式 |
---|---|
認知服務 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.CognitiveServices/accounts/{resource-name} |
Azure Databricks | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Databricks/workspaces/{workspace-name} |
適用於 MariaDB 的 Azure 資料庫 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforMariaDB/servers/{server-name} |
適用於 MySQL 的 Azure 資料庫 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforMySQL/servers/{server-name} |
適用於 PostgreSQL 的 Azure 資料庫 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforPostgreSQL/servers/{server-name} |
Azure Cosmos DB for MongoDB | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DocumentDB/databaseAccounts/{account-name} |
Azure Cosmos DB for NoSQL | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DocumentDB/databaseAccounts/{account-name} |
Azure 監視器 Private Link 範圍 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Insights/privateLinkScopes/{scope-name} |
Azure Key Vault | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{vault-name} |
Azure 資料總管 (Kusto) | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Kusto/clusters/{cluster-name} |
Azure Machine Learning | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.MachineLearningServices/workspaces/{workspace-name} |
Microsoft Purview | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Purview/accounts/{account-name} |
Azure 搜尋服務 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Search/searchServices/{service-name} |
Azure SQL Database | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name} |
Azure SQL Database (Azure SQL 受控執行個體) | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/managedInstances/{instance-name} |
Azure Blob 儲存體 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure Data Lake Storage Gen2 \(部分機器翻譯\) | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure 檔案儲存體 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure 佇列儲存體 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure 資料表儲存體 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure Synapse Analytics | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Synapse/workspaces/{workspace-name} |
Azure Synapse Analytics (Artifacts) | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Synapse/workspaces/{workspace-name} |
Azure Functions | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{function-app-name} |
Azure 事件中樞 | /subscriptions/{subscription-id}/resourcegroups/{resource-group-name}/providers/Microsoft.EventHub/namespaces/{namespace-name} |
Azure IoT 中樞 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Devices/IotHubs/{iothub-name} |