Share via


Azure Cosmos DB for MongoDB 仮想コアでプライベート アクセスを有効にする

適用対象: MongoDB 仮想コア

Azure Private Link は、ユーザーが、指定されたプライベート エンドポイントを介して Azure Cosmos DB for MongoDB 仮想コアに接続できるようにする、強力なサービスです。 このプライベート エンドポイントは、仮想ネットワーク内のサブネットにあるプライベート IP アドレスで構成されています。 エンドポイントを使用すると、Azure Cosmos DB for MongoDB 仮想コア製品へのアクセスをプライベート IP 経由のみに制限できます。 Private Link と厳格な NSG ポリシーを統合することで、データ流出のリスクが大幅に軽減されます。 プライベート エンドポイントについてより深く理解するには、「Azure Private Link とは.」を確認することをお勧めします。

Note

Private Link によって接続はセキュリティで保護されますが、Azure Cosmos DB エンドポイントが、パブリック DNS で解決されることを Private Link が妨げることはありません。 受信要求のフィルター処理は、トランスポート レベルやネットワーク レベルではなく、アプリケーション レベルで処理されます。

Private Link により、仮想ネットワーク内または接続されているピアリングされた仮想ネットワークから、Azure Cosmos DB for MongoDB 仮想コアへのアクセスに柔軟性がもたらされます。 さらに、Private Link にリンクされたリソースは、プライベート ピアリング経由、VPN 経由、または Azure ExpressRoute 経由で、オンプレミスからアクセスできます。

接続を確立するために、Azure Cosmos DB for MongoDB 仮想コアと Private Link との組み合わせでは、自動承認方法と手動承認方法の両方がサポートされています。 詳細については、「Azure Cosmos DB でのプライベート エンドポイント」を参照してください。

前提条件

Azure portal を使ってプライベート エンドポイントがあるクラスターを作成する

Azure portal を使って、プライベート エンドポイントがある新しい Azure Cosmos DB for MongoDB 仮想コア クラスターを作成するには、以下の手順を実行します。

  1. Azure portal にサインインしてから、Azure portal の左上隅にある [リソースの作成] を選びます。

  2. [リソースの作成] ページで [データベース] を選び、次に [Azure Cosmos DB] を選びます。

  3. [API オプションの選択] ページの [MongoDB] タイルで [作成] を選びます。

  4. 仮想コア クラスター リソースの種類を選びます。

  5. [Azure Cosmos DB for MongoDB 仮想コアの作成] クラスター ページで、[リソース グループ] を選ぶか作成し、[クラスター名] と [場所] を入力し、管理者の [パスワード] の入力と確認入力を行います。

  6. [次へ: ネットワーク] を選択します。

  7. [ネットワーク] タブを選び、[接続方法] として [プライベート アクセス] を選びます。

  8. [プライベート エンドポイントの作成] 画面で、次の適切な値を入力または選択します。

    設定
    リソース グループ リソース グループを選択します。
    名前 プライベート エンドポイントの名前を入力します。 この名前が使用済みの場合は、一意の名前を作成します。
    ネットワーク インターフェイス名 [ネットワーク インターフェイス] に任意の名前を入力します。 この名前が使用済みの場合は、一意の名前を作成します。
    場所 Private Link をデプロイするリージョンを選択します。 仮想ネットワークが存在する場所と同じ場所にプライベート エンドポイントを作成します。
    ターゲット サブリソース プライベート エンドポイントからアクセスできるはずの、以前に選択したリソースのサブリソースの種類を選択します。
    仮想ネットワーク 仮想ネットワークを選択します。
    Subnet サブネットを選択します。
    プライベート DNS ゾーンとの統合 [はい] を選択します。 プライベート エンドポイントに非公開で接続するには、DNS レコードが必要です。 プライベート エンドポイントとプライベート DNS ゾーンを統合することをお勧めします。 また、独自の DNS サーバーを使用したり、仮想マシン上のホスト ファイルを使用して DNS レコードを作成したりすることもできます。 このオプションで [はい] を選択すると、プライベート DNS ゾーン グループも作成されます。 DNS ゾーン グループは、プライベート DNS ゾーンとプライベート エンドポイント間のリンクです。 このリンクは、プライベート エンドポイントが更新されたときに、プライベート DNS ゾーンを自動更新するのに役立ちます。 たとえば、リージョンを追加または削除すると、プライベート DNS ゾーンが自動的に更新されます。
    構成名 サブスクリプションとリソース グループを選択します。 プライベート DNS ゾーンは自動的に決定されます。 Azure portal を使用して変更することはできません。
  9. [OK] を選択します。

  10. [次へ: タグ]>[確認と作成] の順に選択します。 [確認および作成] ページで [作成] を選びます。

既存のクラスターでプライベート アクセスを有効にする

既存のクラスター内のノードにプライベート エンドポイントを作成するには、クラスターの [ネットワーク] ページを開きます。

  1. [プライベート エンドポイントの追加] を選択します。

    [ネットワーク] 画面で [プライベート エンドポイントの追加] を選択したスクリーンショット。

  2. [プライベート エンドポイントの作成] 画面の [基本情報] タブで、[サブスクリプション][リソース グループ][リージョン] を確認します。 エンドポイントの [名前] (my-cluster-1 など) と [ネットワーク インターフェイス名] (my-cluster-1-nic など) を入力します。

    注意

    他を選択する妥当な理由がない限り、クラスターのものと一致するサブスクリプションとリージョンを選択することをお勧めします。 フォーム フィールドの既定値が正しくない可能性があります。 確認して、必要に応じて更新してください。

  3. 次へ:リソース を選択します。 [ターゲット サブリソース] で、クラスターのターゲット ノードを選択します。 通常、[コーディネーター] が目的のノードです。

  4. [次へ: 仮想ネットワーク] を選択します。 適切な [仮想ネットワーク][サブネット] を選択します。 [プライベート IP 構成] で、[IP アドレスを静的に割り当てる] を選択するか、既定値の [IP アドレスを動的に割り当てる] のままにします。

  5. [次: DNS] を選びます。

  6. [プライベート DNS 統合][プライベート DNS ゾーンと統合する] で、既定値の [はい] のままにするか、[いいえ] を選択します。

  7. [Next: Tags](次へ: タグ) を選択して、必要なタグを追加します。

  8. [Review + create](レビュー + 作成) を選択します。 設定を確認し、問題がなければ [作成] を選択します。

Azure CLI を使用してプライベート エンドポイントを作成する

次の Azure CLI スクリプトを実行して、既存の Azure Cosmos DB アカウント用の myPrivateEndpoint という名前のプライベート エンドポイントを作成します。 変数の値を実際の環境の詳細に置き換えます。

# Resource group where the Azure Cosmos DB account and virtual network resources are located  
ResourceGroupName="myResourceGroup" 

# Name of the existing Azure Cosmos DB account  
MongovCoreClusterName="myMongoCluster" 

# Subscription ID where the Azure Cosmos DB account and virtual network resources are located  
SubscriptionId="<your Azure subscription ID>"  

# API type of your Azure Cosmos DB account: Sql, SqlDedicated, MongoCluster, Cassandra, Gremlin, or Table 
CosmosDbSubResourceType="MongoCluster"  

# Name of the virtual network to create  
VNetName="myVnet"  

# Name of the subnet to create  
SubnetName="mySubnet"  

# Name of the private endpoint to create  
PrivateEndpointName="myPrivateEndpoint"  

# Name of the private endpoint connection to create 
PrivateConnectionName="myConnection" 

az network vnet create \
  --name $VNetName \
  --resource-group $ResourceGroupName \
  --subnet-name $SubnetName 

az network vnet subnet update \
  --name <name> \
  --resource-group $ResourceGroupName \
  --vnet-name $VNetName \
  --disable-private-endpoint-network-policies true 

az network private-endpoint create \
  --name $PrivateEndpointName \
  --resource-group $ResourceGroupName \
  --vnet-name $VNetName \
  --subnet $SubnetName \
  --private-connection-resource-id "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.DocumentDB/mongoClusters/$MongovCoreClusterName" \
  --group-ids MongoCluster --connection-name $PrivateConnectionName 

プライベート エンドポイントとプライベート DNS ゾーンを統合する

プライベート エンドポイントを作成した後は、次の Azure CLI スクリプトを使用して、プライベート DNS ゾーンと統合できます。

#Zone name differs based on the API type and group ID you are using. 
zoneName="privatelink.mongocluster.cosmos.azure.com" 

az network private-dns zone create \
  --resource-group $ResourceGroupName \
  --name $zoneName 

az network private-dns link vnet create --resource-group $ResourceGroupName \
  --zone-name $zoneName \
  --name <dns-link-name> \
  --virtual-network $VNetName \
  --registration-enabled false 

#Create a DNS zone group
az network private-endpoint dns-zone-group create \
  --resource-group $ResourceGroupName \
  --endpoint-name <pe-name> \
  --name <zone-group-name> \
  --private-dns-zone $zoneName \
  --zone-name mongocluster 
az network private-link-resource list \
  -g <rg-name> \
  -n <resource-name> \
  --type Microsoft.DocumentDB/mongoClusters 

次のステップ