Azure Cosmos DB 分析ストアの Azure Private Link を構成する
適用対象: NoSQL MongoDB Gremlin
この記事では、Azure Cosmos DB 分析ストアのマネージド プライベート エンドポイントを設定する方法について説明します。 トランザクション ストアを使用している場合は、トランザクション ストアのプライベート エンドポイントに関する記事を参照してください。 マネージド プライベート エンドポイントを使用して、Azure Cosmos DB 分析ストアのネットワーク アクセスを、Azure Synapse ワークスペースに関連付けられたマネージド仮想ネットワークに制限することができます。 マネージド プライベート エンドポイントによって、分析ストアへのプライベート リンクが確立されます。
注意
Azure Cosmos DB に対してプライベート DNS ゾーンを使っている場合、分析ストアのサブリソースに対して Synapse マネージド プライベート エンドポイントを作成するには、まず、Azure Cosmos DB の仮想ネットワークにリンクされている分析ストアに対して DNS ゾーン (privatelink.analytics.cosmos.azure.com
) を作成する必要があります。
分析ストアのプライベート エンドポイントを有効にする
マネージド仮想ネットワークとデータ流出を使用して Azure Synapse Analytics ワークスペースを設定する
Azure Synapse Analytics でデータ流出を有効にしたワークスペースを作成します。 データ流出を防止することで、悪意のあるユーザーが Azure リソースから組織の範囲外の場所にデータをコピーまたは転送できないようにすることができます。
Azure Synapse Analytics ワークスペースでデータ流出防止を有効にした場合、次のアクセス制限が適用されます。
Azure Synapse Analytics 用の Azure Spark を使用している場合、アクセスは Azure Cosmos DB 分析ストアの承認されたマネージド プライベート エンドポイントにのみ許可されます。
Synapse サーバーレス SQL プールを使用している場合は、Azure Synapse Link を使用して任意の Azure Cosmos DB アカウントに対するクエリを実行できます。 ただし、外部テーブルを select として作成する (CETAS) 書き込み要求は、ワークスペース仮想ネットワーク内の承認されたマネージド プライベート エンドポイントに対してのみ許可されます。
注意
ワークスペースの作成後に、マネージド仮想ネットワークとデータ流出防止の構成を変更することはできません。
Azure Cosmos DB 分析ストアのマネージド プライベート エンドポイントを追加する
Note
以下の手順の一部を実行するには、Azure Cosmos DB アカウントのネットワーク構成を一時的に変更する必要があります。 ポータルの [ネットワーク] タブに移動し、[Azure portal からのアクセスを許可する] オプションをクリックします。 プライベート エンドポイントの構成後、このアクションを元に戻し、アクセスを無効にすることができます。
Azure portal にサインインします。
Azure portal から、Synapse Analytics ワークスペースに移動し、 [概要] ウィンドウを開きます。
[はじめに] ペインに移動し、 [Synapse Studio を開く] で [開く] を選択して、Synapse Studio を起動します。
Synapse Studio で、 [管理] タブを開きます。
[マネージド プライベート エンドポイント] に移動し、 [新規] を選択します。
アカウントの種類 [Azure Cosmos DB (NoSQL 用 API)]>[続行] を選びます。
次の詳細を使用して、 [新しいマネージド プライベート エンドポイント] フォームに入力します。
- [名前] -マネージド プライベート エンドポイントの名前。 この名前は、作成後に更新することはできません。
- [説明] -プライベート エンドポイントを識別するためのわかりやすい説明を入力します。
- [Azure サブスクリプション] - Azure サブスクリプションで使用可能なアカウントの一覧から Azure Cosmos DB アカウントを選択します。
- [Azure Cosmos DB アカウント名] - 種類が SQL または MongoDB である既存の Azure Cosmos DB アカウントを選択します。
- [ターゲット サブリソース] - 次のオプションのいずれかを選びます。[分析]: Azure Cosmos DB 分析ストアのプライベート エンドポイントを追加する場合。 [NoSQL] (または [MongoDB]): OLTP またはトランザクション アカウント エンドポイントを追加する場合。
注意
Azure Synapse Analytics ワークスペース内で、トランザクション ストアと分析ストアの両方のプライベート エンドポイントを同じ Azure Cosmos DB アカウントに追加できます。 実行するのが分析クエリのみであれば、マップする必要があるのは、分析のプライベート エンドポイントのみです。
作成したら、プライベート エンドポイント名にアクセスし、 [Azure portal で承認を管理する] を選択します。
Azure Cosmos DB アカウントに移動し、プライベート エンドポイントを選択して、 [承認] を選択します。
Synapse Analytics ワークスペースに戻り、 [マネージド プライベート エンドポイント] ペインで [最新の情報に更新] をクリックします。 プライベート エンドポイントが [承認済み] 状態であることを確認します。
Azure Synapse Analytics 用の Apache Spark を使用する
データ流出防止が有効になっている Azure Synapse ワークスペースを作成した場合、既定では、Synapse Spark から Azure Cosmos DB アカウントへの発信アクセスはブロックされます。 また、Azure Cosmos DB に既存のプライベート エンドポイントが存在する場合、Synapse Spark はそのエンドポイントへのアクセスがブロックされます。
Azure Cosmos DB データへのアクセスを許可するには:
Azure Synapse Link を使用して Azure Cosmos DB データのクエリを実行する場合は、Azure Cosmos DB アカウントのマネージド分析プライベート エンドポイントを追加します。
トランザクション ストアへのバッチ書き込み/読み取りおよびストリーミング書き込み/読み取りを使用する場合は、Azure Cosmos DB アカウントのマネージド SQL または MongoDB プライベート エンドポイントを追加します。 さらに、次のコード スニペットに示すように、connectionMode を Gateway に設定する必要もあります。
# Write a Spark DataFrame into an Azure Cosmos DB container # To select a preferred lis of regions in a multi-region account, add .option("spark.cosmos.preferredRegions", "<Region1>, <Region2>") YOURDATAFRAME.write\ .format("cosmos.oltp")\ .option("spark.synapse.linkedService", "<your-Cosmos-DB-linked-service-name>")\ .option("spark.cosmos.container","<your-Cosmos-DB-container-name>")\ .option("spark.cosmos.write.upsertEnabled", "true")\ .option("spark.cosmos.connection.mode", "Gateway")\ .mode('append')\ .save()
Synapse サーバーレス SQL プールを使用する
Synapse サーバーレス SQL プールでは、マネージド仮想ネットワークにデプロイされていないマルチテナント機能を使用します。 Azure Cosmos DB アカウントに既存のプライベート エンドポイントがある場合、Azure Cosmos DB アカウントに対するネットワーク分離チェックにより、Synapse サーバーレス SQL プールはアカウントへのアクセスがブロックされます。
Synapse ワークスペースからこのアカウントのネットワーク分離を構成するには:
アカウントに
NetworkAclBypassResourceId
設定を指定して、Synapse ワークスペースが Azure Cosmos DB アカウントにアクセスできるようにします。PowerShell の使用
Update-AzCosmosDBAccount -Name MyCosmosDBDatabaseAccount -ResourceGroupName MyResourceGroup -NetworkAclBypass AzureServices -NetworkAclBypassResourceId "/subscriptions/subId/resourceGroups/rgName/providers/Microsoft.Synapse/workspaces/wsName"
Azure CLI の使用
az cosmosdb update --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup --network-acl-bypass AzureServices --network-acl-bypass-resource-ids "/subscriptions/subId/resourceGroups/rgName/providers/Microsoft.Synapse/workspaces/wsName"
Note
Azure Cosmos DB アカウントと Azure Synapse Analytics ワークスペースは、同じ Microsoft Entra テナントの下にある必要があります。
これで、Azure Synapse Link 経由の T-SQL クエリを使用して、サーバーレス SQL プールからアカウントにアクセスできるようになりました。 ただし、分析ストア内のデータのネットワーク分離を確保するには、このアカウントに対して分析用のマネージド プライベート エンドポイントを追加する必要があります。 そうしないと、分析ストア内のデータがパブリック アクセスからブロックされません。
重要
Azure Synapse Link を使用していて、分析ストア内のデータのネットワーク分離が必要な場合は、分析用のマネージド プライベート エンドポイントを使用して、Azure Cosmos DB アカウントを Synapse ワークスペースにマップする必要があります。