マネージド プライベート エンドポイントを作成して使用する

Microsoft Fabric ワークスペースに対する管理者アクセス許可を持つユーザーは、ワークスペース設定を使用して、Fabric ポータルからマネージド プライベート エンドポイントを作成、表示、および削除できます。

  • ユーザーは、ワークスペース設定の [ネットワーク セキュリティ] セクションから、マネージド プライベート エンドポイントの状態と承認プロセスを監視することもできます。

  • ユーザーは、Fabric Spark ワークロードのプライベート エンドポイント名を使用してデータ ソースにアクセスできます。

マネージド プライベート エンドポイントを作成する

  1. Fabric ワークスペースで、ワークスペースの設定に移動し、[ネットワーク セキュリティ] タブを選択し、[マネージド プライベート エンドポイント] セクションで [作成] オプションを選択します。

    ワークスペース設定の [ネットワーク セキュリティ] タブのスクリーンショット。

    [マネージド プライベート エンドポイントの作成] ダイアログが開きます。

    ワークスペース設定の [ネットワーク セキュリティ] タブのスクリーンショット。

  2. プライベート エンドポイントの名前を指定し、Azure リソースのリソース識別子をコピーします。 リソース識別子は、Azure portal ページの [プロパティ] タブにあります。

    完了したら、 [作成] を選択します。

  3. マネージド プライベート エンドポイントがプロビジョニングされると、アクティブ化の状態が [成功] に 変わります。

    [ネットワーク] タブのマネージド プライベート エンドポイント プロビジョニングの成功を示すスクリーンショット。

    さらに、プライベート エンドポイント アクセスの要求がデータ ソースに送信されます。 データ ソース管理者は、Azure portal のリソース ページでデータ ソースに関する通知を受け取ります。 そこで、要求メッセージと共に保留中のアクセス要求が表示されます。

例として SQL Server を使用すると、ユーザーは Azure portal に移動し、"SQL Server" リソースを検索できます。

  1. [リソース] ページで、ナビゲーション メニューから [ネットワーク] を選択し、[プライベート アクセス] タブを選択します。

    Azure portal のリソースの [ネットワーク] ページの [プライベート アクセス] タブを示すスクリーンショット。

  2. データ ソース管理者は、アクティブなプライベート エンドポイント接続と新しい接続要求を表示できる必要があります。

    [プライベート アクセス] タブの保留中の要求を示すスクリーンショット。

  3. 管理者は、業務上の正当な理由を提供して、承認または拒否できます。

    承認フォームを示すスクリーンショット。

  4. データ ソース管理者によって要求が承認または拒否されると、更新時に [Fabric ワークスペースの設定] ページで状態が更新されます。

    承認済み状態のマネージド プライベート エンドポイントを示すスクリーンショット。

  5. 状態が承認済みに変更されると、エンドポイントをノートブックまたは Spark ジョブ定義で使用して、Fabric ワークスペースからデータ ソースに格納されているデータにアクセスできます。

Fabric でマネージド プライベート エンドポイントを使用する

Microsoft Fabric ノートブックでは、データ探索と処理のためにマネージド プライベート エンドポイントを使用して、セキュリティで保護されたネットワークの背後にあるデータ ソースとのシームレスな対話をサポートします。 ノートブック内では、ユーザーはさまざまなファイル形式で保護されたデータ ソースからデータをすばやく読み取る (そしてデータをレイクハウスに書き戻す) ことができます。

このガイドでは、マネージド プライベート エンドポイントを介して SQL DB などのデータ ソースからデータにアクセスするための独自のノートブックの使用を開始するのに役立つコード サンプルを提供します。

前提条件

  1. データ ソースにアクセスします。 この例では、Azure SQL Server と Azure SQL データベースを確認します。

  2. Microsoft Fabric と Azure portal にサインインします。

  3. Azure portal で Azure SQL Server のリソース ページに移動し、[プロパティ] メニューを選択します。 Microsoft Fabric から接続する SQL Server のリソース ID をコピーします。

  4. マネージド プライベート エンドポイントを作成する」に記載されている手順を使用して、Fabric Network のセキュリティの設定ページからマネージド プライベート エンドポイントを作成します。

  5. SQL サーバーのデータ ソース管理者が新しいプライベート エンドポイント接続要求を承認すると、新しく作成されたマネージド プライベート エンドポイントを使用できるようになります。

Notebooks からデータ ソースに接続する

  1. Microsoft Fabric ワークスペースで、ホーム ページの左側にある環境スイッチャーを使って、Synapse Data Engineering 環境に切り替えます。

    Fabric で Data Engineering エクスペリエンスを開始する方法を示すスクリーンショット。

  2. [作成] を選んで、新しいノートブックを作成します。

  3. これで、ノートブックで SQL データベースの名前とその接続プロパティを指定することで、データベース内のテーブルを読み取り、Microsoft Fabric のレイクハウスに書き込むよう設定されているマネージド プライベート エンドポイント接続を介して接続できます。

  4. 次の PySpark コードは、SQL Databaseへの接続方法を示しています。

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 Database でテーブルを読み取るデータ フレームを作成します。

サポートされるデータ ソース

Microsoft Fabric では、マネージド プライベート エンドポイントを使用して接続するための 26 を超えるデータ ソースがサポートされています。 ユーザーはリソース識別子を指定する必要があります。リソース識別子は、Azure portal のデータ ソースの [プロパティ] 設定ページにあります。 次の表に示すように、リソース ID の形式に従っていることを確認します。

サービス リソース ID の形式
Cognitive Services /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}
Azure Database for MariaDB /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforMariaDB/servers/{server-name}
Azure Database for MySQL /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforMySQL/servers/{server-name}
Azure Database for PostgreSQL /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}
NoSQL 用 Azure Cosmos DB /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DocumentDB/databaseAccounts/{account-name}
Azure Monitor 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 Data Explorer (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}
Private Link サービス /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Network/privateLinkServices/{service-name}
Microsoft Purview /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Purview/accounts/{account-name}
Azure Search /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Search/searchServices/{service-name}
Azure SQL データベース /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}
Azure SQL Database (Azure SQL Managed Instance) /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/managedInstances/{instance-name}
Azure Blob Storage /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 File Storage /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}
Azure Queue Storage /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}
Azure Table Storage /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 Event Hubs /subscriptions/{subscription-id}/resourcegroups/{resource-group-name}/providers/Microsoft.EventHub/namespaces/{namespace-name}
Azure IoT Hub /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Devices/IotHubs/{iothub-name}