Atlas は、データベース配置用に次のような安全なネットワーク構成のデフォルトを提供します。
必須の TLS/SSL 接続暗号化
1 つ以上の専用クラスターを持つすべてのプロジェクトのVPC
IPアクセスリストを使用し、明示的に宣言したソースからのデータベース接続のみを受け入れる認証
これらの保護を、独自のセキュリティ ニーズと設定に合わせてさらに構成できます。
このページの推奨事項を使用して、クラスターのネットワークセキュリティ構成を計画します。
Atlas ネットワークセキュリティに関する機能
Atlas は、データベースへのすべての接続に TLS/SSL 暗号化を強制します。
M10+ 専有クラスターを使用することを推奨します。その理由は、1 つ以上の M10+ 専有クラスターを持つすべての Atlas プロジェクトが次の専用リソースを取得するためです。
AWS または Google Cloud 上の VPC。
Azure 上の VNet。
MongoDB Atlasはすべての専有クラスターをこの VPC または VNet 内に配置します。
デフォルトでは、すべてのクラスターへのアクセスがブロックされます。次のいずれかの方法で、受信接続を明示的に許可する必要があります。
プライベートエンドポイントを追加します 。これは Atlas によってIP アクセス リストに自動的に追加されます。他のアクセスは自動的に追加されません。
VPC / VNet ピアリングを使用して、プライベート IP アドレスを追加します。
パブリックIPアドレスをIP アクセス リストに追加します。
また、セキュリティを強化するために、複数の方法を併用することもできます。
TLS
Atlas は、データベースへの接続に必須の TLS 暗号化を強制します。TLS 1.2 はデフォルトのプロトコルです。詳しくは「追加設定の構成」の「Set Minimum TLS Protocol Version」セクションを参照してください。
IP アクセス リスト
Atlas 管理者として、次の操作を行うことができます。
IPアクセスリストを設定して、データベースへの認証を試行できるIPアドレスを制限することができます。
Atlas クラスターは、 IP アクセス リストに追加したIPアドレスと CIDR ブロックIP範囲からのアクセスのみを許可します。アプリケーション サーバーや他のクライアントは、IPIP アクセス リストにIPアドレスが含まれていない場合、Atlas クラスターにアクセスできません。
ファイアウォール構成
クライアントアプリケーションサーバーから Atlas に接続し、アウトバウンド ネットワーク接続をブロックするファイアウォールを経由する場合は、アプリケーションが Atlas ホスト上の TCP トラフィックにアウトバウンド接続を行えるようにファイアウォールも構成する必要があります。これにより、アプリケーションはクラスターにアクセスできるようになります。
Atlas クラスターのパブリック IP は、垂直スケーリング、トポロジーの変更、またはメンテナンス イベントなどのクラスター変更において、過半数の場合変更しません。ただし、レプリカセットからシャーディングされたクラスターへの変換、シャードの追加、またはリージョンの変更など、特定のトポロジーの変更では新しい IP アドレスを使用する必要があります。
レプリカセットからシャーディングされたクラスターへの変換の場合、アプリケーションクライアントの再接続に失敗すると、アプリケーションにデータが停止する可能性があります。DNSシードリスト接続文字列を使用すると、アプリケーションはシャーディングされたクラスターの mongosに自動的に接続されます。標準の接続文字列を使用する場合は、新しい クラスタートポロジー を反映するように接続文字列を更新する必要があります。
新しいシャードを追加する場合、アプリケーションクライアントの再接続に失敗するとアプリケーションがデータ停止時を引き起こす可能性があります。
プライベートエンドポイント
プライベートエンドポイントは、Atlas が相互接続を開始することを許可せずに、自分のVPCから Atlas VPCへの一方向接続を容易にします。これにより、ネットワーク信頼境界を拡張することなく、Atlas への安全な接続を使用できるようになります。次のプライベートエンドポイントが利用可能です。
Amazon Web Services PrivateLink、Amazon Web Services VPCからの接続用
Microsoft Azure Private Link ( Microsoft Azure VNet からの接続用)
Private Service Connect、Google Cloud VPC からの接続用
VPC/VNet ピアリング
ネットワークピアリングを使用すると、独自のVPCを Atlas VPCに接続してトラフィックをプライベートにルーティングし、パブリック インターネットからデータ フローを分離できます。Atlas はVPCを 1 対 1 で Atlas プロジェクトにマッピングします。
VPC接続経由で実行されるほとんどの操作はアプリケーション環境から発生するため、Atlas がピアVPCへのアウトバウンド アクセス リクエストを行う必要が最小限に抑えられます。ただし、 LDAP 認証を使用するように Atlas を構成する場合は、Atlas が LDAP プロトコル経由でピア VPC の認証エンドポイントにアウトバウンドで接続するように有効にする必要があります。Atlas8 では. を使用して LDAP認証が非推奨になっていることに注意してください。0代わりに Workforce IdP と Workload Identity Federation を使用することをお勧めします。
最初のクラスターを配置する前に、 VPC ピアリング ウィザードを使用して Atlas CIDR ブロックを選択できます。Atlas VPC CIDR ブロックは、ピアリングする VPC の CIDR ブロックと重複してはなりません。Atlas は、 CIDR ブロックに基づいて、 VPC あたりのMongoDBインスタンスの数を制限します。例、CIDR ブロックが /24 のプロジェクトは、27 3-ノードレプリカセットと同等に制限されます。
Atlas ネットワークセキュリティに関する推奨事項
プライベートエンドポイント
ネットワークの信頼境界の拡大を制限するために、すべての新しいステージングおよび本番プロジェクトにはプライベート エンドポイントを設定することを推奨します。
一般的に、すべての Atlas プロジェクトにプライベートエンドポイントを使用することを推奨します。これにより、最も細かいセキュリティが提供され、クラウドネットワークの拡大に伴う IP アクセスリストや大規模な IP アドレスブロックの管理負担が軽減されます。各エンドポイントにはコストがかかるため、下位環境ではプライベート エンドポイントを要求しないことを検討されるかもしれませんが、ネットワークの信頼境界の拡大を制限するために、上位環境ではそれらを活用することを推奨します。
制限や考慮事項を含む Atlas のプライベートエンドポイントの詳細については、「 Atlas のプライベートエンドポイントの詳細 」を参照してください。クラスターのプライベートエンドポイントを設定する方法については、「 専用クラスターのプライベートエンドポイントの設定 」を参照してください。
IP アクセス リスト
APIキーとプログラムによるアクセスのIP アクセス リストを設定して、CI/CDパイプラインやオーケストレーション システムなどの信頼できるIPアドレスからのアクセスのみを許可することをお勧めします。これらのIPアクセス リストは、サービス アカウントのプロビジョニング時に Atlas コントロール プレーンに設定され、クラスターへの接続用に Atlasプロジェクトデータ プレーンで設定できるIPアクセス リストとは別です。
IP アクセス リストを設定するときは、以下を行うことをお勧めします。
一時的なアクセスリストエントリは、チームメンバーが一時的な作業場所から環境にアクセスする必要がある場合や、本番環境のダウンタイムを解決するために人間による本番環境へのアクセスが必要な緊急時に使用します。これらのインシデントに備えるために、一時的なアクセスを迅速に追加するオートメーション スクリプトをビルドすることをお勧めいたします。
可能な最小のネットワーク セグメントをカバーするIP アクセス リストエントリを定義します。そのためには、可能な限り個々のIPアドレスを優先し、大きな CIDR ブロックを避けます。
VPC/VNet ピアリング
VPCまたは VNet ピアリングを構成する場合は、次のことをお勧めします。
厳格なネットワーク信頼境界を維持するには、セキュリティ グループとネットワーク ACL を設定して、Atlas 側VPCからアプリケーションVPC内のシステムへの受信アクセスを防止します。
機密性の高いアプリケーションインフラストラクチャと Atlas VPC間の中間者として機能する新しいVPCを作成します。VPCは推移的であるため、Atlas へのアクセスが必要なアプリケーションのコンポーネントのみを公開できます。
オートメーションの例: Atlas ネットワーク セキュリティ
Github のすべての柱にわたるステージングおよび本番環境における推奨事項を実行するための Terraform の例を参照してください。
次の例では、 IPアクセス リスト、 VPCピアリング、プライベートエンドポイントを使用して、アプリケーション環境と Atlas クラスター間の接続を構成します。
これらの例では、次のようなその他の推奨される構成も適用されます。
開発およびテスト環境用にクラスター階層が
M10に設定されました。 クラスター サイズ ガイドを使用して、アプリケーションのサイズに合った推奨クラスター階層をご確認ください。単一リージョン、3 ノード レプリカ セットまたはシャード配置トポロジー。
当社の例では、AWS、Azure、および Google Cloud を互換的に使用します。これら 3 つのクラウド プロバイダーのいずれかを使用できますが、クラウド プロバイダーに一致するようにリージョン名を変更する必要があります。クラウドプロバイダーとそのリージョンに関する詳細は、「クラウドプロバイダー」をご覧ください。
中規模アプリケーション用のクラスター階層が
M30に設定されました。クラスター サイズ ガイドを使用して、アプリケーションのサイズに合った推奨クラスター階層を確認してください。単一リージョン、3 ノード レプリカ セットまたはシャード配置トポロジー。
当社の例では、AWS、Azure、および Google Cloud を互換的に使用します。これら 3 つのクラウド プロバイダーのいずれかを使用できますが、クラウド プロバイダーに一致するようにリージョン名を変更する必要があります。クラウドプロバイダーとそのリージョンに関する詳細は、「クラウドプロバイダー」をご覧ください。
注意
Atlas CLI で接続を設定する前に、次のことを行う必要があります。
IP アクセス リスト エントリを作成する
許可したい各接続ごとに、次のコマンドを実行します。適切なオプションと実際の値を使用するようにエントリを変更します。
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 アクセスリストエントリを作成する方法については、「専用クラスターのプライベート エンドポイントの設定」を参照してください。
VPCピアリング接続を作成する
自分の Atlas VPC とピアリングしたい VPC それぞれに対して、次のコマンドを実行します。aws を azure または 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
この例に関する詳細と構成オプションについては、以下を参照してください。
Atlas networking peering create Amazon Web Services、Amazon Web Services VPC用
Atlas ネットワーク ピアリング作成Azure ( Microsoft Azure VNets 向け)
Atlas ネットワークピアリング作成GCP (GCP VPC用)
プライベートエンドポイントの作成
作成するプライベートエンドポイントごとに次のコマンドを実行します。必要に応じて、aws を azure または gcp に置き換え、オプションと値をVPCまたは VNet に適したものに変更します。
atlas privateEndpoints aws create --region us-east-1 --projectId 5e2211c17a3e5a48f5497de3 --output json
この例に関する詳細と構成オプションについては、以下を参照してください。
Atlas privateEndpoints Amazon Web Services create、Amazon Web Services VPCからの接続用
atlas privateEndpoints azure create、Microsoft Azure VNet からの接続用
atlas privateEndpoints gcp create、GCP Private Service Connect からの接続用
注意
IP アクセス リスト エントリを作成する
IP アクセス リストにエントリを追加するには、次のファイルを作成し、アクセス権を付与するプロジェクトのディレクトリに配置します。ID と名前を変更して、 値を使用します。
accessEntryForAddress1.tf
# 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ピアリング接続を作成する
アプリケーションVPCと Atlas VPCの間でピアリング接続を作成するには、次のファイルを作成し、アクセス権を付与するプロジェクトのディレクトリに配置します。ID と名前を変更して、 値を使用します。
vpcConnection.tf
# 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を押して設定を適用してください。
Private Link を作成する
アプリケーションのVPCから Atlas VPCへの PrivateLink を作成するには、次のファイルを作成し、接続するプロジェクトのディレクトリに配置します。ID と名前を変更して、 値を使用します。
privateLink.tf
resource "mongodbatlas_privatelink_endpoint" "test" { project_id = "<project-id>" provider_name = "AWS/AZURE" region = "US_EAST_1" timeouts { create = "30m" delete = "20m" } }
ファイルを作成したら、プロジェクトディレクトリに移動し、次のコマンドを実行して Terraform を初期化します。
terraform init
Terraform プランを表示するには、次のコマンドを実行します。
terraform plan
次のコマンドを実行して、PrivateLink エンドポイントをアプリケーションからプロジェクトに追加します。コマンドは、ファイルと MongoDB & HashiCorp Terraform を使用してエントリを追加します。
terraform apply
プロンプトが表示されたら、yesと入力し、Enterを押して設定を適用してください。