VPN だけでは Cosmos DB をプライベートにできない
VPN はノート PC をネットワークに載せるだけで、データベースの内側に入れるわけではありません。プライベート エンドポイント、DNS ゾーン、接続モード、アカウント アクセスが何をすべきかを確認します。
ノート PC を VPN 経由で VNet に接続し、Cosmos DB アカウントの URL を開いても、要求は依然としてパブリック インターネット経由で出ていきます。トンネルは役割を果たしました。果たさなかったのは、プライベート エンドポイントの作成、プライベート DNS レコードの公開、パブリック アクセスの無効化であり、これらはアカウントに対する三つの別個の変更で、ネットワーク接続の性質ではありません。この例では、NoSQL 用の Azure Cosmos DB、VNet 内のプライベート エンドポイント、VPN でその VNet に接続したノート PC を使用し、アプリケーションのアドレスは変えません。
神話: VPN 上にいればデータベースがプライベートになる
VNet 上にいることは、パケットがその VNet 内のプライベート アドレスに到達できるというだけです。アカウント名がどこで解決されるかについては何も語らず、アカウントがまだパブリック トラフィックを受け入れるかどうかについても何も語りません。
プライベート エンドポイントは、独自のアドレス、独自の承認手順、独自の DNS 配線を持つ別個のリソースです。それが存在して承認されるまで、名前はパブリック エンドポイントに解決され、トンネルに関係なくトラフィックはそこへ向かいます。
実際に名前をプライベートに解決させるもの
SDK の通常のアカウント エンドポイント(https://ACCOUNT.documents.azure.com のようなもの)を維持します。プライベート DNS は、その名前を Private Link チェーン経由でエンドポイントのプライベート アドレスに解決する必要があります。数値 URL に置き換えて証明書チェックを無効にすると、DNS の問題をセキュリティの問題と引き換えることになるため、避けてください。
| Example choice | Value |
|---|---|
| Cosmos API | NoSQL |
| Private endpoint subresource | Sql |
| Private DNS zone | privatelink.documents.azure.com |
| SDK connection mode | Gateway |
これらの値は NoSQL API に固有です。他の Cosmos API は同じ例で交換可能な項目ではなく、別の API からサブリソース名をコピーすると、決して解決されないエンドポイントができます。
承認された Azure ワークフローでエンドポイントを作成して承認し、そのプライベート DNS ゾーン グループ統合を使用します。ノート PC には そのゾーンに応答できるリゾルバー が直接または承認された転送経由で必要で、関連する各エンドポイント アドレスへの VPN クライアント ルートも必要です。
プライベート エンドポイントは、グローバルおよびリージョンのエントリを含め、複数のアドレスを持つことができます。アカウントのリージョンが変わったら hosts ファイルに一つのアドレスを固定するのではなく DNS 統合を維持し、無関係なパブリック リゾルバーからの応答はプライベート パスについて何も証明しないことを覚えておいてください。ハブ経由で DNS を転送する場合は、クライアントをデバッグする前にフォワーダーが応答することを確認してください。古いフォワーダーはパブリックの応答を返し、それは存在しないエンドポイントとまったく同じに見えます。
Gateway モードと Direct モードは交換できません
Gateway モードはサービス要求を TCP 443 の HTTPS で送信します。そのため 443 のみのファイアウォール ポリシーが機能し、この例はそれを意図的に選んでいます。
Private Link 経由の Direct モードには異なる接続要件があり、アカウントのドキュメントに記載されているより広い TCP ポート範囲が含まれます。Gateway モード用に書かれたポリシーを Direct モードのクライアントに黙って再利用すると、SDK は接続した後、最初のデータ操作でハングします。
一つのモードを選び、アカウントと一緒に記録し、ネットワーク ポリシーをそれに合わせます。トラブルシューティング中にモードを切り替えるチームは、通常どちらも満たさないファイアウォール ルール セットに行き着きます。
パブリック アクセスの無効化は別のスイッチです
アカウントをプライベート専用にする場合は、アカウントのサポートされている設定でパブリック ネットワーク アクセスを無効にし、結果を確認します。プライベート エンドポイントがありパブリック アクセスが有効なアカウントは依然としてインターネット上で応答するため、その存在を完全なアクセス判断と見なさないでください。
VPN の外側からも内側からも確認します。除外されるべきネットワークからの要求が、設定が有効になったことを証明するテストであり、ほとんどの変更ウィンドウが省略するテストです。
到達可能性は許可ではありません
VPN ノート PC からの許可された SDK 操作が受け入れテストで、通常のアカウント URL と想定された ID を使用します。VPN の到達可能性は Cosmos のデータ権限を与えません;データ プレーンは独自のロールまたはキーを確認します。
次に、別の ID と、もうアカウントに到達すべきでないネットワーク パスという拒否を実行します。どちらかが成功したら、文書化した境界は構築した境界ではありません。
終了時に、エンドポイントのプライベート アドレス、アカウント名に応答する DNS ゾーン、ポート要件を含む接続モード、パブリック アクセスが無効かどうかという四つの事実を書き留めます。この四つが次の人に構成を説明し、それぞれが独立して失敗します。