Azure Cosmos DBプライベートエンドポイント設定
Azure Cosmos DBのプライベートエンドポイントは、Azure Virtual Network (VNet)内からのプライベート接続を実現する重要なセキュリティ機能です。 この記事では、プライベートエンドポイントの設定方法をAzure Portal、Azure CLI、Terraformを使用して詳しく解説します。
ポリシーの説明
Azure Cosmos DBアカウントでプライベートエンドポイントが設定されていない場合、データベースへのアクセスはパブリックインターネット経由で行われます。これにより、ネットワークレベルでのアクセス制御が不十分となり、セキュリティリスクが高まります。プライベートエンドポイントを使用することで、Azure Virtual Network (VNet)経由でのプライベートな接続を確立し、Azure Private Linkテクノロジーを活用してデータの安全性を向上させることができます。
修復方法
コンソールでの修復手順
Azure コンソールを使用して、Cosmos DBアカウントにプライベートエンドポイントを設定します。
事前準備
- 必要な権限の確認:
- Cosmos DBアカウントへの共同作成者以上の権限
- VNetへのネットワーク共同作成者以上の権限
- プライベートDNSゾーンへの共同作成者権限
- ネットワーク設計の確認:
- プライベートエンドポイント用のサブネット(推奨:/27以上)
- NSGルールの計画
- DNS構成の確認
プライベートエンドポイントの作成手順
- Azure Portalにログイン
- Azure Portal (https://portal.azure.com) にアクセスし、管理者権限を持つアカウントでログインします
- Cosmos DBアカウントの選択
- ナビゲーションメニューから「Azure Cosmos DB」を選択
- プライベートエンドポイントを設定したいCosmos DBアカウントを選択します
- プライベートエンドポイントの作成

- 左側のメニューから「設定」セクションの「プライベートエンドポイント接続」を選択
- 「+ プライベートエンドポイント」ボタンをクリックします
- 基本設定の構成

- プロジェクトの詳細:
- サブスクリプション:適切なサブスクリプションを選択
- リソースグループ:プライベートエンドポイント用のリソースグループを選択または作成
- インスタンスの詳細:
- 名前:命名規則に従った名前を入力(例:pe-cosmosdb-prod-japaneast-001)
- ネットワークインターフェイス名:自動生成される名前を使用または変更
- 地域:Cosmos DBアカウントと同じ地域を選択
- リソースの構成

- 接続方法:「マイディレクトリ内のAzureリソースに接続します」を選択
- サブスクリプション:Cosmos DBアカウントが存在するサブスクリプションを選択
- リソースの種類:「Microsoft.DocumentDB/databaseAccounts」を選択
- リソース:対象のCosmos DBアカウントを選択
- ターゲットサブリソース:使用するAPIに応じて選択
- SQL API: 「Sql」
- MongoDB API: 「MongoDB」
- Cassandra API: 「Cassandra」
- Gremlin API: 「Gremlin」
- Table API: 「Table」
- 分析ストア: 「Analytical」
- 仮想ネットワークの構成

- ネットワーク:
- 仮想ネットワーク:プライベートエンドポイントを配置するVNetを選択
- サブネット:専用のサブネットを選択(他のリソースと共有しない)
- プライベートIPの構成:
- 動的割り当て(推奨)または静的IPアドレスを指定
- アプリケーションセキュリティグループ:
- 必要に応じてASGを設定(よりきめ細かなアクセス制御用)
- DNS統合の構成

- プライベートDNSゾーンと統合する:「はい」を選択
- サブスクリプション:プライベートDNSゾーンのサブスクリプションを選択
- リソースグループ:DNSゾーンのリソースグループを選択
- プライベートDNSゾーン:
- 新規作成または既存のゾーンを選択
- Cosmos DB API別のDNSゾーン名:
- SQL API:
privatelink.documents.azure.com - MongoDB API:
privatelink.mongo.cosmos.azure.com - Cassandra API:
privatelink.cassandra.cosmos.azure.com - Gremlin API:
privatelink.gremlin.cosmos.azure.com - Table API:
privatelink.table.cosmos.azure.com
- SQL API:
- タグの設定(組織のポリシーに従う)
- Environment: Production/Staging/Development
- Owner: TeamName
- CostCenter: 部門コード
- Purpose: Database-PrivateEndpoint
- 確認と作成
- すべての設定を確認
- 検証が成功したら「作成」ボタンをクリック
- デプロイには5〜10分程度かかります
- 接続の承認(自動承認が有効でない場合)

- Cosmos DBアカウントの「プライベートエンドポイント接続」に戻る
- 作成したプライベートエンドポイントの状態を確認
- 「保留中」の場合、選択して「承認」をクリック
- 接続の説明を入力し、承認を完了
- 接続の検証
- VNet内のVMまたはAzure Bastionから以下を実行:
# DNS解決の確認 nslookup <cosmos-account-name>.documents.azure.com # プライベートIPアドレス(10.x.x.x)が返されることを確認 # 接続テスト curl -I https://<cosmos-account-name>.documents.azure.com:443
最後に
この記事では、Azure Cosmos DBアカウントのプライベートエンドポイント設定手順について、詳細な技術実装方法を解説しました。
プライベートエンドポイントの実装は、ゼロトラストネットワークアーキテクチャの基礎となり、データベースセキュリティを大幅に向上させます。特に、適切なDNS設定、ネットワークセキュリティグループ、監視設定を組み合わせることで、エンタープライズレベルのセキュリティを実現できます。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。