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

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

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

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

前提条件

Microsoft.Network リソース プロバイダーは Azure サブスクリプションに登録する必要があります

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

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

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

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

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

  2. プライベート エンドポイントの名前を指定し、Azure リソースのリソース識別子をコピーします。 リソース識別子は、Azure portal ページの [プロパティ] タブにあります。 詳細については、「Azure リソース ID を取得する方法」を参照してください。

    注

    完全修飾ドメイン名 (FQDN) を使用したマネージド プライベート エンドポイントの作成はサポートされていません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Fabricポータルは現在、Azure API Management用のマネージドプライベートエンドポイント作成をサポートしていません。 代わりにFabric REST APIを使いましょう。

Important

API Managementは、開発者、ベーシック、スタンダード、スタンダードv2、プレミアム、プレミアムv2の各階層向けのインバウンドプライベートエンドポイントをサポートしています。 クラシックな階層では、内部または外部の仮想ネットワークに注入されたAPI管理インスタンスに対してプライベートエンドポイントはサポートされていません。 詳細については、「 インバウンドプライベートエンドポイントを使ってAPI管理にプライベートに接続」をご覧ください。

  1. Fabricサービス用のMicrosoft Entraアクセストークンを取得してください。 詳細はFabric APIクイックスタートをご覧ください。

  2. 次のリクエストを送信してください。 プレースホルダーをワークスペースIDやAPI管理リソース情報に置き換えてください。

    POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/managedPrivateEndpoints
    Authorization: Bearer {accessToken}
    Content-Type: application/json
    
    {
      "name": "mpe-apim-gateway",
      "targetPrivateLinkResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ApiManagement/service/{apimName}",
      "targetSubresourceType": "gateway",
      "requestMessage": "Please approve the managed private endpoint for the API Management gateway.",
      "targetFQDNs": [
        "{apimName}.azure-api.net"
      ]
    }
    

    API Management GatewayサブリソースのみがインバウンドPrivate Link接続をサポートします。

  3. AzureポータルでAPI管理インスタンスを開き、「Network>Inbound private endpoint connections」を選択します。

  4. プライベートエンドポイント接続のリストで、保留中の接続のコンテキストメニュー(...)を開き、「 承認」を選択してください。 接続を承認するためにFabric管理のプライベートエンドポイントリソースを開く必要はありません。

  5. Fabricワークスペース設定のネットワークセキュリティセクションを更新し、接続状況が承認されているか確認してください。

管理されたプライベートエンドポイントのプロビジョニング状態が 「失敗」の場合は、サービスチームがプロビジョニングエラーを調査できるようにサポートリクエストを作成しましょう。

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

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

このガイドでは、マネージド プライベート エンドポイントを介して 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 サーバーのデータ ソース管理者が新しいプライベート エンドポイント接続要求を承認すると、新しく作成されたマネージド プライベート エンドポイントを使用できるようになります。

ノートブックからデータ ソースに接続する

注

Azure Storageに接続する際は、ノートブックが使用する各ストレージエンドポイントごとにマネージドプライベートエンドポイントを作成・承認してください。 例えば、blobサブリソースに対して管理されたプライベートエンドポイントを作成し、Blob Storageエンドポイント(<storage-account-name>.blob.core.windows.net)にアクセスするようにします。 dfsサブリソースがAzure Data Lake Storageエンドポイント(<storage-account-name>.dfs.core.windows.net)にアクセスするためのマネージドプライベートエンドポイントを作成します。 ノートブックが両方のエンドポイントを使用している場合は、それぞれのサブリソースごとにマネージドプライベートエンドポイントを作成・承認してください。

  1. Microsoft Fabric ポータルにサインインします。

  2. ホーム ページの左側にあるエクスペリエンス スイッチャーを使用して、[開発] エクスペリエンスに切り替えます。

  3. 目的のワークスペースに移動するか、必要に応じて新しいワークスペースを作成します。

  4. ノートブックを作成するには、ワークスペースで [新しい項目] を選択し、[ノートブック] を選択します。

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

  6. 次の 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 MySQL /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforMySQL/flexibleServers/{server-name}
Azure Database for PostgreSQL /サブスクリプション/{subscription-id}/リソースグループ/{resource-group-name}/プロバイダ/Microsoft.DBforPostgreSQL/フレキシブルサーバー/{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 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}
Microsoft Purview /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Purview/accounts/{account-name}
Azure API Management (REST API のみ) /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.ApiManagement/service/{service-name}
Azure Search /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 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 ファイル ストレージ /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 (成果物) /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}
Azure Private Link サービス /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Network/privateLinkServices/{private-link-service-name}
Azure Data Manager for Energy (ADME) /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.OpenEnergyPlatform/energyServices/{service-name}

Fabric テナントのプライベート リンク サービスへのマネージド プライベート エンドポイントの作成はサポートされていないことに注意してください。