Azure Cosmos DBアカウントのネットワークセキュリティ設定
Azure Cosmos DBは、Microsoft Azureが提供するマルチモデル対応のNoSQLデータベースサービスです。 この記事では、企業のセキュリティ要件に対応するため、Cosmos DBアカウントのパブリックネットワークアクセスを適切に制限する設定方法を詳しく解説します。
ポリシーの説明
Azure Cosmos DBアカウントは、既定でパブリックネットワークからのアクセスが許可されています。これは、インターネット上のどこからでもデータベースにアクセスできることを意味し、適切なネットワーク制御を実装しない場合、重大なセキュリティリスクとなります。本ポリシーは、Cosmos DBアカウントへのアクセスを制限し、プライベートエンドポイントや特定のネットワークからのみアクセスを許可することを要求します。
修復方法
コンソールでの修復手順
Azure コンソールを使用して、Cosmos DBアカウントのネットワークアクセスを制限する設定を行います。
事前準備
- 既存接続の確認:現在Cosmos DBに接続しているアプリケーションのIPアドレスを確認
- VNetの準備:アプリケーションが配置されているVNetを特定
- DNS設定の確認:カスタムDNSを使用している場合は設定を確認
プライベートエンドポイントの設定
- Azure Portalにログインし、対象のCosmos DBアカウントを選択します
- 左側のメニューから「設定」セクションの「ネットワーク」を選択します
- 「プライベートエンドポイント」タブを選択し、「+ プライベートエンドポイント」をクリックします

- 基本設定で以下を入力:
- サブスクリプション:適切なサブスクリプションを選択
- リソースグループ:プライベートエンドポイント用のリソースグループを選択
- 名前:プライベートエンドポイントの名前(例:pe-cosmosdb-prod-japaneast)
- ネットワークインターフェイス名:自動生成される名前をそのまま使用
- 地域: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

- 仮想ネットワークタブで以下を設定:
- 仮想ネットワーク:プライベートエンドポイントを配置するVNetを選択
- サブネット:プライベートエンドポイント専用のサブネットを選択(推奨:/27以上のサイズ)
- アプリケーションセキュリティグループ:必要に応じて設定
- プライベートIPの構成:「IPアドレスを動的に割り当てる」を選択

- DNSタブで以下を設定:
- プライベートDNSゾーンと統合する:「はい」を選択
- サブスクリプション:DNSゾーンのサブスクリプション
- リソースグループ:DNSゾーンのリソースグループ(新規作成可)
- プライベートDNSゾーン:privatelink.documents.azure.com(SQL API の場合)
- タグを必要に応じて設定(例:Environment=Production, Owner=TeamName)
- 「確認および作成」をクリックし、検証後「作成」をクリックします

サービスエンドポイントの設定(補完的なセキュリティ層)
- Cosmos DBアカウントの「ネットワーク」設定で「ファイアウォールと仮想ネットワーク」タブを選択
- 「選択したネットワーク」を選択
- 仮想ネットワークセクションで「+ 既存の仮想ネットワークを追加」をクリック
- 以下を設定:
- サブスクリプション:VNetのサブスクリプション
- 仮想ネットワーク:アプリケーションのVNet
- サブネット:アプリケーションのサブネット(サービスエンドポイントが自動的に有効化される)
- 「追加」をクリック
パブリックネットワークアクセスの無効化

- Cosmos DBアカウントの「ネットワーク」設定に戻ります
- 「パブリックネットワークアクセス」セクションで設定を行います:
- 開発環境:「選択したネットワーク」を選択し、必要なIPアドレスのみ許可
- 本番環境:すべてのプライベートエンドポイント設定完了後、「無効」を選択
- IPファイアウォールで以下を検討:
- Azure Portalからのアクセスを許可:管理作業用(一時的に有効化)
- Azure データセンターからのアクセスを許可:Azure サービス間の通信が必要な場合のみ
- 現在のIPアドレスを追加:管理者のIPアドレス(緊急時用)
- 「保存」をクリックして変更を適用します(適用には最大15分かかる場合があります)
接続の検証
- 接続文字列の更新:アプリケーションでプライベートエンドポイントのFQDNを使用
- DNS解決の確認:
nslookup <cosmos-account-name>.documents.azure.comでプライベートIPが返されることを確認 - 接続テスト:Data Explorerまたはアプリケーションから接続を確認
最後に
この記事では、Azure Cosmos DBアカウントのパブリックネットワークアクセス制限設定手順について、詳細な技術実装方法を解説しました。
適切なネットワークアクセス制限の実装は、データ漏洩リスクの大幅な低減とコンプライアンス要件の充足に直結します。特に、プライベートエンドポイント、サービスエンドポイント、ファイアウォールルールを組み合わせた多層防御により、エンタープライズレベルのセキュリティを実現できます。
この問題の検出は弊社が提供するSecurifyのCSPM機能で簡単に検出及び管理する事が可能です。 運用が非常に楽に出来る製品になっていますので、ぜひ興味がある方はお問い合わせお待ちしております。 最後までお読みいただきありがとうございました。この記事が皆さんの役に立てば幸いです。