Azure Cosmos DB for PostgreSQL でのプライベート アクセス
適用対象: Azure Cosmos DB for PostgreSQL (PostgreSQL の Citus データベース拡張機能を利用)
Azure Cosmos DB for PostgreSQL では、次の 3 つのネットワーク オプションに対応しています。
- アクセス権なし
- これは、パブリックまたはプライベート アクセスが有効になっていない場合に、新しく作成されるクラスターの既定値です。 Azure の内部でも外部でも、データベース ノードに接続できるコンピューターはありません。
- パブリック アクセス権
- コーディネーター ノードには、パブリック IP アドレスが割り当てられます。
- コーディネーターノードへのアクセスは、ファイアウォールによって保護されています。
- 必要に応じて、すべてのワーカー ノードへのアクセスを有効にすることができます。 この場合、パブリック IP アドレスはワーカー ノードに割り当てられ、同じファイアウォールによって保護されます。
- プライベート アクセス
- クラスターのノードには、プライベート IP アドレスのみが割り当てられます。
- 各ノードには、選択した仮想ネットワーク内のホストがノードにアクセスできるように、プライベート エンドポイントが必要です。
- ネットワーク セキュリティ グループなどの Azure 仮想ネットワークのセキュリティ機能は、アクセス制御に使用できます。
クラスターを作成する場合は、パブリックまたはプライベート アクセスを有効にするか、既定の [アクセスなし] を選択することができます。 クラスターを作成したら、パブリック アクセスとプライベート アクセスの切り替えを選択するか、両方とも一度にアクティブ化することができます。
このページでは、プライベート アクセス オプションについて説明します。 パブリック アクセスについては、こちらを参照してください。
定義
Virtual network。 Azure Virtual Network (VNet) は、Azure 内のプライベート ネットワークの基本的な構成要素です。 仮想ネットワークでは、データベース サーバーや Azure Virtual Machine (VM) などのさまざまな種類の Azure リソースが、安全に相互に通信することができます。 仮想ネットワークでは、オンプレミス接続がサポートされ、複数の仮想ネットワーク内のホストがピアリングを介して相互に通信でき、スケール、セキュリティ オプション、分離といった面でもメリットがあります。 クラスターの各プライベート エンドポイントには、関連付けられた仮想ネットワークが必要です。
サブネット。 サブネットは、仮想ネットワークを 1 つ以上のサブネットワークに分割します。 各サブネットワークでアドレス空間の一部が取得され、アドレス割り当ての効率が向上します。 ネットワーク セキュリティ グループを使用して、サブネット内のリソースを保護できます。 詳細については、「ネットワーク セキュリティ グループ」を参照してください。
クラスターのプライベート エンドポイントにサブネットを選択する場合、現在および将来のニーズを考慮し、そのサブネットで使用できる十分なプライベート IP アドレスが確保できることを確認してください。
プライベート エンドポイント プライベート エンドポイントは、仮想ネットワークのプライベート IP アドレスを使用するネットワーク インターフェイスです。 このネットワーク インターフェイスにより、Azure Private Link を利用するサービスにプライベートに、かつ安全に接続できます。 プライベート エンドポイントは、サービスを仮想ネットワークに取り込みます。
Azure Cosmos DB for PostgreSQL のプライベート アクセスを有効にすると、クラスターのコーディネーター ノードのプライベート エンドポイントが作成されます。 このエンドポイントにより、選択した仮想ネットワーク内のホストがコーディネーターにアクセスできるようになります。 必要に応じて、ワーカー ノードのプライベート エンドポイントを作成することもできます。
プライベート DNS ゾーン Azure プライベート DNS ゾーンは、リンクされた仮想ネットワーク内、およびピアリングされた仮想ネットワーク内のホスト名を解決します。 ノードのドメイン レコードは、クラスター用に選択されたプライベート DNS ゾーンに作成されます。 ノードの PostgreSQL 接続文字列には完全修飾ドメイン名 (FQDN) を使用してください。
プライベート リンク
クラスターのプライベート エンドポイントを使用すると、仮想ネットワーク (VNet) 上のホストは Azure Private Link を介してデータに安全にアクセスできるようになります。
クラスターのプライベート エンドポイントでは、仮想ネットワークのアドレス空間から IP アドレスを使用します。 仮想ネットワークとノード上のホスト間のトラフィックは、Microsoft バックボーン ネットワーク上のプライベート リンクを経由します。これによって、パブリック インターネットに公開されないようにします。
仮想ネットワーク内のアプリケーションは、プライベート エンドポイント経由でノードにシームレスに接続できます。その際、使用される接続文字列と承認メカニズムは、それを経由しない場合と同じものになります。
クラスターの作成中にプライベート アクセスを選択できます。また、パブリック アクセスを任意の時点でプライベート アクセスに切り替えることができます。
プライベート DNS ゾーンを使用する
Azure Cosmos DB for PostgreSQL によって以前に作成されたプライベート DNS ゾーンのいずれかを選択しない限り、プライベート エンドポイントごとに新しいプライベート DNS ゾーンが自動的にプロビジョニングされます。 詳細については、プライベート DNS ゾーンの概要に関するページを参照してください。
Azure Cosmos DB for PostgreSQL サービスは、プライベート エンドポイントを持つ各ノードに対して、選択したプライベート DNS ゾーンに c-mygroup01.12345678901234.privatelink.postgres.cosmos.azure.com
などの DNS レコードを作成します。 プライベート エンドポイント経由で Azure VM からノードに接続すると、Azure DNS はノードの FQDN をプライベート IP アドレスに解決します。
プライベート DNS ゾーンの設定と、仮想ネットワーク ピアリングはそれぞれ独立しています。 同じリージョンまたは異なるリージョンの別の仮想ネットワークでプロビジョニングされたクライアントからクラスター内のノードに接続する場合は、プライベート DNS ゾーンをその仮想ネットワークにリンクさせる必要があります。 詳細については、「仮想ネットワークのリンク」を参照してください。
Note
また、サービスは、すべてのノードに対して c-mygroup01.12345678901234.postgres.cosmos.azure.com
などのパブリック CNAME レコードを常に作成します。 ただし、パブリック インターネット上の選択されたコンピューターは、データベース管理者がクラスターへのパブリック アクセスを有効にした場合にのみ、パブリック ホスト名に接続できます。
カスタム DNS サーバーを使用する場合は、DNS フォワーダーを使用してノードの FQDN を解決する必要があります。 フォワーダーの IP アドレスは、168.63.129.16 である必要があります。 カスタム DNS サーバーは、仮想ネットワーク内にあるか、仮想ネットワークの DNS サーバー設定を使用して到達可能である必要があります。 詳細については、「独自の DNS サーバーを使用する名前解決」を参照してください。
Recommendations
クラスターのプライベートアクセスを有効にするときは、次のことを考慮してください。
サブネットのサイズ: クラスターのサブネットのサイズを選択するときは、コーディネーターの IP アドレスやそのクラスター内のすべてのノードなどの現在のニーズ、および将来のニーズ (クラスターの成長など) を考慮してください。
現在および将来のニーズに対応するために十分なプライベート IP アドレスがあることを確認します。 Azure では、各サブネットで 5 つの IP アドレスが予約されています。
詳細については、こちらの FAQ を参照してください。
プライベート DNS ゾーン: プライベート IP アドレスを持つ DNS レコードは、Azure Cosmos DB for PostgreSQL サービスによって管理されます。 クラスターに使用されているプライベート DNS ゾーンを削除しないようにしてください。
制限と制限事項
Azure Cosmos DB for PostgreSQL 制限と制限事項ページをご覧ください。
次のステップ
- プライベート アクセスを有効にし、管理する方法を学習する
- チュートリアルに従って、プライベート アクセスの動作を確認する。
- プライベート エンドポイントについて学習する
- 仮想ネットワークについて学習する
- プライベート DNS ゾーンについて学習する