AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

Atlas ネットワークセキュリティに関するガイダンス

Atlas は、データベース配置用に次のような安全なネットワーク構成のデフォルトを提供します。

  • 必須の TLS 接続暗号化

  • VPCs for all projects with one-or-more Dedicated clusters

  • IPアクセスリストを使用し、明示的に宣言したソースからのデータベース接続のみを受け入れる認証

これらの保護を、独自のセキュリティ ニーズと設定に合わせてさらに構成できます。

このページの推奨事項を使用して、クラスターのネットワークセキュリティ構成を計画します。

注意

MongoDB Atlas共有責任モデルは、安全で回復力のあるデータ環境を維持するためのMongoDBとそのカスタマーの補完的な役割を定義します。このフレームワークの下、 MongoDB は基礎のプラットフォームのセキュリティと運用上の整合性を管理しますが、カスタマーは特定の配置の構成、管理、データ ポリシーに責任を負います。所有者のセキュリティと運用の優れ性の詳細な内訳については、共有責任モデルを参照してください。

Atlas はデータベースへのすべての接続に対して TLS暗号化を強制します。

当社は M10+ 専有クラスターの使用を推奨しています。Atlas プロジェクトに M10+ 専有クラスターが 1 つ以上含まれていると、次の専用リソースが取得されるためです。

  • AWS または Google Cloud 上の VPC 。

  • Azure 上の VNet。

MongoDB Atlas ではすべての専有クラスターが上記の VPC または VNet 内に配置されます。

デフォルトでは、すべてのクラスターへのアクセスがブロックされます。次のいずれかの方法で、受信接続を明示的に許可する必要があります。

  • プライベートエンドポイントを追加します 。これは Atlas によってIP アクセス リストに自動的に追加されます。他のアクセスは自動的に追加されません。

  • VPC または VNet ピアリングを使用して、プライベート IP アドレスを追加します。

  • パブリックIPアドレスをIP アクセス リストに追加します。

また、セキュリティを強化するために、複数の方法を併用することもできます。

Atlas は、データベースへの接続に対して必須の TLS 暗号化を強制します。TLS 1.2 はデフォルトのプロトコルです。詳しくは、「Set Minimum TLS Protocol Version 追加設定の構成 」の セクションを参照してください。

Atlas 管理者として、次の操作を行うことができます。

データベースへの認証を試行できる IP アドレスが制限されるように IP アクセス リストを設定できます。

IP アクセス リストに追加したIPアドレスと CIDR ブロックIP範囲からのアクセスのみを許可します。個々の アドレスなど、可能な限り最小のネットワーク/32 セグメントへのアクセスを許可することをお勧めします。

IP アドレスが IP アクセス リストに含まれていない場合、アプリケーション サーバーなどのクライアントによる Atlas クラスターへのアクセスを拒否できます。

ユーザーが定義した期間を過ぎると自動的に期限が切れる一時的なアクセス リスト エントリを設定できます。

クライアント アプリケーション サーバーから Atlas に接続し、アウトバウンド ネットワーク接続をブロックするファイアウォールを通過する場合、Atlas ホストの TCP トラフィックへのアウトバウンド接続をアプリケーションに許可するようにファイアウォールを設定する必要があります。この設定により、アプリケーションにクラスターへのアクセス権が付与されます。

Atlas クラスターのパブリック IP は、垂直スケーリング、トポロジーの変更、またはメンテナンス イベントなどのクラスター変更において、過半数の場合変更しません。ただし、レプリカセットからシャーディングされたクラスターへの変換、シャードの追加、またはリージョンの変更など、特定のトポロジーの変更では新しい IP アドレスを使用する必要があります。

レプリカセットからシャーディングされたクラスターへの変換の場合、アプリケーションクライアントの再接続に失敗すると、アプリケーションにデータが停止する可能性があります。 DNSシードリスト接続文字列を使用すると、アプリケーションがシャーディングされたクラスターの mongosに自動的に接続されます。標準の接続文字列を使用する場合は、新しい クラスタートポロジーを反映するように接続文字列を更新する必要があります。

新しいシャードを追加する場合、アプリケーションクライアントの再接続に失敗するとアプリケーションがデータ停止時を引き起こす可能性があります。

プライベートエンドポイントを使用すると、相互接続の開始を Atlas に許可する必要がなくなり、ユーザーが直接管理する VPC から Atlas VPC への一方向接続が容易になります。そのため、ネットワークの信頼境界を拡張せずに、Atlas への安全な接続を活用できます。利用可能なプライベートエンドポイントには以下のものがあります。

「 MongoDB Atlasプライベートエンドポイントの動作方法を表すイメージ。」
クリックして拡大します

ネットワークピアリングを使用すると、独自の VPC を Atlas の VPC に接続し、トラフィックをプライベートにルーティングして、データフローをパブリックインターネットから分離できます。Atlas は VPC を 1 対 1 で Atlas プロジェクトにマッピングします。

VPC接続経由で実行されるほとんどの操作はアプリケーション環境から発生するため、Atlas がピアVPCへのアウトバウンド アクセス リクエストを行う必要が最小限に抑えられます。ただし、 LDAP認証 を使用するように Atlas を構成する場合は、Atlas が LDAPプロトコル経由でピアVPCの認証エンドポイントにアウトバウンドで接続するように有効にする必要があります。 Atlas では8.0 を使用して LDAP認証が非推奨になっていることに注意してください。代わりに Workforce IdP と Workload Identity Federation を使用することをお勧めします。

最初のクラスターを配置する前に、 VPCピアリング ウィザードを使用して Atlas CIDR ブロックを選択できます。 Atlas VPC CIDR ブロックは、ピアリングするVPCの CIDR ブロックと重複してはなりません。 Atlas は、 CIDR ブロックに基づいて、 VPCあたりのMongoDBインスタンスの数を制限します。例、 CIDR ブロックが/24 のプロジェクトは、273 -ノードレプリカセットと同等に制限されます。

「 MongoDB Atlas VPC/VNet ピアリングの仕組みを表す画像」。
クリックして拡大します

シングルリージョンでの配置にのみ適用される推奨事項

単一リージョンの配置では、Atlas ネットワーク セキュリティに関して特に考慮すべき事項はありません。

複数リージョンまたは複数クラウドプロバイダーにわたる配置にのみ適用される推奨事項

プライベートエンドポイントで保護されたマルチリージョンの配置には、次の独自の考慮事項があります。

  • グローバル プライベートエンドポイントでは、すべての Atlas クラスター ノードをポイントする SRV レコードが Atlas で自動生成されます。MongoDB ドライバーがアプリケーションから各 SRV レコードへの接続を試みます。この仕組みによりドライバーは、DNS レプリケーションを待つことなく、かつドライバーの接続文字列の更新を必要とせずに、フェイルオーバー イベントを取り扱うことができます。

  • Atlas クラスター内のすべてのノードで SRV レコードがスムーズに自動生成されるようにするには、VPC ピアリング接続を、アプリケーション VPC 間に確立する必要があります。また、PrivateLink または同等のツールを使用して、アプリケーション VPC を MongoDB VPC に接続する必要もあります。

  • Atlas クラスターが配置されているすべてのリージョンでプライベートエンドポイントを有効にする必要があります。

  • Google Cloud Private Service Connect はリージョン固有です。ただし、グローバル アクセスを設定して、異なるリージョンからプライベートエンドポイントにアクセスすることは可能です。

    詳しくは、「マルチリージョン サポート」を参照してください。

以下の推奨事項は、すべての配置パラダイムに適用されます。

ネットワークの信頼境界の拡大を制限するために、すべての新しいステージングおよび本番プロジェクトにはプライベート エンドポイントを設定することを推奨します。

当社では一般的に、すべての Atlas プロジェクトでプライベートエンドポイントの使用を推奨しています。セキュリティの粒度が最大限に高まるうえ、クラウド ネットワークの拡大に伴う IP アクセスリストや大規模な IP アドレス ブロックの管理負担が軽減されるためです。各エンドポイントにはコストがかかるため、下位環境ではプライベートエンドポイントが不要な場合もありますが、上位環境ではネットワークの信頼境界の拡大を制限するために、利用した方がよいでしょう。

オンプレミスとクラウドの配置の組み合わせが原因で、アプリケーションが配置されている VPC または VNet を相互にピアリングできない場合は、リージョン固有のプライベートエンドポイントの導入を検討することをお勧めします。

リージョン固有のプライベートエンドポイントを使用すると、次の操作が可能になります。

  • 単一プライベートエンドポイントを複数の VNet または VPC に接続する場合は、相互を直接ピアリングする必要がありません。

  • リージョン内で単一または複数のサービスが停止する、部分的なリージョン障害を緩和できます。

リージョン固有のエンドポイントとネットワークを構築するには、以下の手順を実行する必要があります。

  • 厳密なヘルスチェックを定期的に実行して、クラスターとアプリケーション間の接続と連携に問題がないかを検証します。db.runCommand("ping") コマンドでクラスターをピン付けしておいて接続をすばやく確認したり、rs.conf() を実行してクラスター内の各ノードに関する詳細な情報を取得したりできます。

  • リージョンごとに異なる接続文字列を使用します。

  • Atlas VPC が切断された場合に可用性を維持するには、Atlas へのクロスリージョンルーティングを使用します。

制限や考慮事項を含む Atlas のプライベートエンドポイントの詳細については、「 Atlas のプライベートエンドポイントの詳細 」を参照してください。クラスターのプライベートエンドポイントを設定する方法については、「 専用クラスターのプライベートエンドポイントの設定 」を参照してください。

  • AWS: Atlas への接続が必要なすべての自己管理型 VPC で VPC ピアリングが推奨されます。これによりグローバル プライベートエンドポイントを活用できます。

  • Azure: Atlas への接続が必要なすべての自己管理型 VNet で VNet ピアリングが推奨されます。これによりグローバル プライベートエンドポイントを活用できます。

  • GCP: GlobalConnect を使用する場合、自己管理型 VPC 間でピアリングは必要ありません。すべての Atlas リージョンでプライベートエンドポイントを使用して自己管理型 VPC にネットワーク接続される必要があります。

Atlas サービスには、1024 以降のポートのGCP Private Service Connect エンドポイントを介してアクセスします。ポートはクラスターの変更など、いくつかの特定状況下で変更可能です。

  • GCP Private Service Connect は、マルチリージョンクラスターを配置するすべてのリージョンでアクティブである必要があります。GCP Private Service Connect が、全リージョンでなく一部のターゲット リージョンでアクティブになっている場合は、エラーが表示されます。

  • 次のいずれかを実行すると、マルチリージョンクラスター内のすべてのノードにドライバーを接続可能にする接続文字列のうち内部に保存されるものの数を管理可能な範囲に維持できます。その結果、ドライバーは動的に割り当てられたクラスター内のプライマリ ノードに確実に接続され、データベースに対するすべての操作を実行できるようになります。

    • 複数のリージョンにノードを配置し、リージョンごとに 1 つのプライベートエンドポイントを含めます。

    • 1 つのリージョンに複数のプライベートエンドポイントがあり、他のプライベートエンドポイントはありません。

      重要

      この制限は、クラウドプロバイダー全体に適用されます。たとえば、GCP のあるリージョンに複数のプライベートエンドポイントを作成した場合、AWS にも他の GCP リージョンにもプライベートエンドポイントは作成できません。

    詳細については、「リージョン別エンドポイントがシャーディングされたクラスターでのみ使用可能な理由」をご覧ください。

    シャーディングされたクラスターでは、ノード間のトラフィックは、デフォルトでクラスター内のすべてのノードに接続されている mongos プロセスを通じてルーティングされます。そのため、特定のリージョンに任意の数のプライベートエンドポイントを作成できます。詳細については、「(任意)マルチリージョンのシャーディングされたクラスターのリージョン別プライベートエンドポイント」をご覧ください。

  • GCP Private Service Connect を使用する Atlas プロジェクトを複数のリージョンにわたって配置する場合、最大 40 ノードを使用できます。この合計数には次のインスタンスは含まれません。

    • 相互に通信する GCP リージョン

    • 無料クラスターまたは共有クラスター

  • アドレス指定可能なターゲットには、以下のものがあります。

    • レプリカセット配置内の各 mongod インスタンス(シャーディングされたクラスターは除く)。

    • シャーディングされたクラスター配置内の各 mongos インスタンス。

    • プロジェクト内のすべての専用クラスターにわたる Atlas 用 BI Connector の各インスタンス。

  • GCP Private Service Connect1024 は、仮想マシンごとに最大1024 の送信接続をサポートします。そのため、単一のGCP仮想マシンから Atlas クラスターへの接続は までしか確立できません。

    詳細については、GCP Cloud NAT のドキュメントをご覧ください。

  • GCP Private Service Connect はリージョン固有です。ただし、グローバル アクセスを設定して、異なるリージョンからプライベートエンドポイントにアクセスすることは可能です。

    詳しくは、「マルチリージョン サポート」を参照してください。

APIキーとプログラムによるアクセスのIP アクセス リストを設定して、CI/CDパイプラインやオーケストレーション システムなどの信頼できるIPアドレスからのアクセスのみを許可することをお勧めします。これらのIPアクセス リストは、サービス アカウントのプロビジョニング時に Atlas コントロール プレーンに設定され、クラスターへの接続用に Atlasプロジェクトデータ プレーンで設定できるIPアクセス リストとは別です。

IP アクセス リストを設定するときは、以下を行うことをお勧めします。

  • 一時的なアクセスリストエントリは、チームメンバーが一時的な作業場所から環境にアクセスする必要がある場合や、本番環境のダウンタイムを解決するために人間による本番環境へのアクセスが必要な緊急時に使用します。これらのインシデントに備えるために、一時的なアクセスを迅速に追加するオートメーション スクリプトをビルドすることをお勧めいたします。

  • 可能な限り小さなネットワークセグメントをカバーする IP アクセス リスト エントリを定義してください。これを行うには、可能な限り個々の IP アドレスを優先し、大きな CIDR ブロックを避けてください。

VPC または VNet のピアリングを設定する場合、次のことをお勧めします。

  • 厳密なネットワーク信頼境界を維持するために、セキュリティグループとネットワーク ACL を構成し、Atlas 側の VPC からアプリケーション VPC 内のシステムへのインバウンドアクセスを防止します。

  • Create new VPCs to act as intermediaries between sensitive application infrastructure and your Atlas VPCs. VPCs are intransitive, allowing you to only expose those components of your application that need access to Atlas.

次の例では、 IPアクセス リスト、 VPCピアリング、プライベートエンドポイントを使用して、アプリケーション環境と Atlas クラスター間の接続を構成します。

これらの例では、次のようなその他の推奨される構成も適用されます。

  • 開発およびテスト環境用にクラスター階層が M10 に設定されました。クラスター サイズ ガイドを使用して、アプリケーションのサイズに合った推奨クラスター階層を確認してください。

  • 単一リージョン、3 ノード レプリカ セットまたはシャード配置トポロジー。

この例では、 AWS、 Azure、Google Cloud をどちらも使用しています。これら 3 つのクラウドプロバイダーのいずれかを使用できますが、クラウドプロバイダー と一致するようにリージョン名を変更する必要があります。クラウドプロバイダーとそのリージョンの詳細については、「 クラウドプロバイダー 」を参照してください。

  • 中規模アプリケーション用のクラスター階層が M30 に設定されました。クラスター サイズ ガイドを使用して、アプリケーションのサイズに合った推奨クラスター階層を確認してください。

  • 単一リージョン、3 ノード レプリカ セットまたはシャード配置トポロジー。

この例では、 AWS、 Azure、Google Cloud をどちらも使用しています。これら 3 つのクラウドプロバイダーのいずれかを使用できますが、クラウドプロバイダー と一致するようにリージョン名を変更する必要があります。クラウドプロバイダーとそのリージョンの詳細については、「 クラウドプロバイダー 」を参照してください。

注意

Atlas CLI で接続を設定する前に、次のことを行う必要があります。

許可したい各接続ごとに、次のコマンドを実行します。適切なオプションと実際の値を使用するようにエントリを変更します。

atlas accessList create 192.0.2.15 --type ipAddress --projectId 5e2211c17a3e5a48f5497de3 --comment "IP address for app server 2" --output json

この例に関する詳細については、「 Atlas accessLists create 」を参照してください。

AWS、GCP、Azure を使用して IP アクセスリストエントリを作成する方法については、「専用クラスターのプライベート エンドポイントの設定」を参照してください。

Atlas VPCにピアリングするVPCごとに次のコードを実行します。必要に応じて、 awsazureを またはgcp に置き換え、オプションと値をVPCまたは VNet に適したものに変更します。

atlas networking peering create aws --accountId 854333054055 --atlasCidrBlock 192.168.0.0/24 --region us-east-1 --routeTableCidrBlock 10.0.0.0/24 --vpcId vpc-078ac381aa90e1e63

この例に関する詳細と構成オプションについては、以下を参照してください。

作成するプライベートエンドポイントごとに次のコマンドを実行します。必要に応じて、aws を azure または gcp に置き換え、オプションと値をVPCまたは VNet に適したものに変更します。

atlas privateEndpoints aws create --region us-east-1 --projectId 5e2211c17a3e5a48f5497de3 --output json

この例に関する詳細と構成オプションについては、以下を参照してください。

注意

Terraform でリソースを作成する前に、次の手順を実行する必要があります。

  • 支払い組織を作成し、その支払い組織の API キーを作成します。ターミナルで次のコマンドを実行し、API キーを環境変数として保存します。

    export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>"
    export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"

また、環境用のワークスペースを作成することもおすすめします。

IP アクセス リストにエントリを追加するには、次のファイルを作成し、アクセス権を付与するプロジェクトのディレクトリに配置します。ID と名前を変更して、 値を使用します。

# Add an entry to your IP Access List
resource "mongodbatlas_access_list_api_key" "address_1" {
org_id = "<org-id>"
ip_address = "2.3.4.5"
api_key_id = "a29120e123cd"
}

ファイルを生成した後、プロジェクト ディレクトリに移動し、次のコマンドを実行して Terraform を初期化します。

terraform init

Terraform プランを表示するには、次のコマンドを実行します。

terraform plan

次のコマンドを実行して、プロジェクトのIP アクセス リストに 1 件のエントリを追加します。コマンドは、ファイルとMongoDB & HashiCorp Terraform を使用してエントリを追加します。

terraform apply

プロンプトが表示されたら、yesと入力し、Enterを押して設定を適用してください。

アプリケーションVPCと Atlas VPCの間でピアリング接続を作成するには、次のファイルを作成し、アクセス権を付与するプロジェクトのディレクトリに配置します。ID と名前を変更して、 値を使用します。

# Define your application VPC
resource "aws_default_vpc" "default" {
tags = {
Name = "Default VPC"
}
}
# Create the peering connection request
resource "mongodbatlas_network_peering" "mongo_peer" {
accepter_region_name = "us-east-2"
project_id = local.project_id
container_id = one(values(mongodbatlas_advanced_cluster.test.container_id))
provider_name = "AWS"
route_table_cidr_block = "172.31.0.0/16"
vpc_id = aws_default_vpc.default.id
aws_account_id = local.AWS_ACCOUNT_ID
}
# Accept the connection
resource "aws_vpc_peering_connection_accepter" "aws_peer" {
vpc_peering_connection_id = mongodbatlas_network_peering.mongo_peer.connection_id
auto_accept = true
tags = {
Side = "Accepter"
}
}

ファイルを作成したら、プロジェクトディレクトリに移動し、次のコマンドを実行して Terraform を初期化します。

terraform init

Terraform プランを表示するには、次のコマンドを実行します。

terraform plan

以下のコマンドを実行して、アプリケーションからプロジェクトに VPC ピアリング接続を追加します。コマンドは、ファイルと MongoDB & HashiCorp Terraform を使用してエントリを追加します。

terraform apply

プロンプトが表示されたら、yesと入力し、Enterを押して設定を適用してください。

アプリケーションのVPCから Atlas VPCへの PrivateLink を作成するには、次のいずれかのクラウドプロバイダー固有のモジュールを使用します。次のファイルを作成し、接続するプロジェクトのディレクトリに配置します。 ID と名前を変更して、 値を使用します。

AWSの場合:

module "atlas_aws" {
source = "terraform-mongodbatlas-modules/atlas-aws/mongodbatlas"
version = "~> 0.3"
project_id = "<project-id>"
privatelink_endpoints = [
{
region = "<aws-region>"
subnet_ids = ["<subnet-id>"]
}
]
}

Azureの場合は、 属性を持つ atlas- azure privatelink_endpointsモジュールを使用します。完全な例については、「 atlas- azure privatelink の例 」を参照してください。

ファイルを作成したら、プロジェクトディレクトリに移動し、次のコマンドを実行して Terraform を初期化します。

terraform init

Terraform プランを表示するには、次のコマンドを実行します。

terraform plan

次のコマンドを実行して、PrivateLink エンドポイントをアプリケーションからプロジェクトに追加します。コマンドは、ファイルと MongoDB & HashiCorp Terraform を使用してエントリを追加します。

terraform apply

プロンプトが表示されたら、yesと入力し、Enterを押して設定を適用してください。