MongoDB 構成ガイド
MongoDB 専用の詳細な設定ガイドは こちら を参照ください。
MongoDB 接続の登録
MongoDB は、シングルホストではなく Replica Set や Sharded Cluster (シャーディング) を使ってマルチホストで構成することがよくあります。そのような場合は、マルチホスト接続を作成する必要があります。
1.MongoDB 接続文字列の構造を理解する
MongoDB では、標準と +srv の 2 種類の接続文字列を使います。
< 標準の接続文字列の構造
mongodb://[Hostname or IP]:[port],[Hostname or IP]:[port],[Hostname or IP]:[port]..../?[options]
mongodb://
:標準の接続文字列スキームホスト名あるいは IP: MongoDB クラスタメンバーの完全修飾ドメイン名あるいは IP アドレス。
オプション:オプション
:
接続に関連するオプション。複数のオプションを区切るには&
を使います。
例:/authSource=admin%26replicaSet=rs0 とします。
レプリカセットを使用する場合は、オプションにreplicaSet=[レプリカセット名]
を含める。(例:/?replicaSet=rs0
)
< +srv 接続文字列構造 >.
$body
mongodb+srv://
: +srv 接続文字列スキームFQDN: ホスト名とドメインを組み合わせた完全修飾ドメイン名(例:
server1.example.com
)。オプション:接続関連のオプションは
/?
を使います。
例:
例:/?authSource=admin%26replicaSet=rs0
srv を使用するクラスタ内のホストのアドレスは動的に変更される可能性があるため、QueryPie は接続に +srv を直接使用することはできません。代わりに、+srv を標準的な接続文字列に変換します。しかし、この変換処理は、+srv 接続内のサブインスタンスへの直接アクセスがサポートされていないことを意味します。srv 環境でのサブホストへの直接アクセスが必要な場合は、nslookup コマンドを使用して DNS クエリで各ホストの情報を検索し、標準の接続文字列を使用して接続を作成してください。
2.MongoDB接続の作成

管理者 > データベース > 接続管理 > DB接続 > 接続の作成
Administrator > Databases > Connection Management > DB Connections > Create Connection メニューに移動します。
右上の
接続の作成
ボタンをクリックします。データソースとして mongoDB を選択します。
3.レプリカセットの構成
標準接続

Allowed Zone に適切なネットワークゾーンを設定します。
Connection Name を指定します。
クラスタ入力を有効にするためにクラスタスイッチを有効にし、以下の情報を入力します:
Type (タイプ):プライマリの役割は動的に変更される可能性があるため、プライマリ(デフォルト)を選択します。
Expose:クラスタのサブノード(ホストまたはインスタンス)の表示方法を決定します:
Expandable(展開可能):接続情報またはエージェントの接続リストでサブノードを展開します。
展開不可:サブノードは展開されず、クラスタのみが表示されます。
非表示:サブノードのみが表示され、クラスタ自体は非表示になります。
接続文字列:
スキームオプションから
mongodb://を
選択します。ホスト名とポートをカンマで区切って入力します。
Add Instance
をクリックして、各メンバーホストをインスタンスとして追加します。インスタンス名:各ホストを区別するための名前を入力します。
接続文字列:
ホスト名(ドメインアドレスまたはIP): ポート
の形式で各ホストを入力します。Expose:このオプションは、個々のインスタンスを接続情報で表示するかどうかを決定します。
マルチホスト機能を使用するには、各インスタンスを公開する必要があります。したがって、 Expose オプションを有効にすることが不可欠です。

Authentication DB:認証データベース(authSource)の値を入力します。
その他のオプション: authSource 以外の接続文字列オプションを入力します。
例 1:単一のオプションの場合、[Key]=[Value]
の形式を使用します (例:replicaSet=rs0
)。
例 2:複数のオプションを指定する場合は、[Key]=[Value]&[Key]=[Value]
の形式を使用する(例:replicaSet=rs0%26tls=true
)。
注意:レプリカセットを設定する場合は、replicaSet=[レプリカセット名]の
オプションを含める必要がある。シークレットストア:パスワードと鍵を管理する場所を選択します。デフォルトのQueryPieでは、これらは内部で管理されます。
User Name & Password:データベースのユーザ名とパスワードを入力します。
接続の詳細を確認するには、
Test Connection
をクリックします。Next
をクリックして接続を完了し、保存します。
クラスタモードの詳細については DB 接続ドキュメントを参照してください。
< +srv 接続 >をクリックします。

Allowed Zone で適切なネットワーク・ゾーンを設定します。
Connection Name を指定します。
クラスタ
入力を有効にするためにクラスタ・
スイッチを有効にしてから、以下の情報を入力します:タイプ:プライマリの役割は動的に変更される可能性があるため、プライマリ(デフォルト)を選択します。
Expose: クラスタのサブノード(ホストまたはインスタンス)の表示方法を決定します:
Expandable(展開可能):Expandable: 接続情報またはエージェントの接続リストでサブノードを展開します。
展開不可:サブノードは展開されず、クラスタのみが表示されます。
非表示:サブノードのみが表示され、クラスタ自体は非表示になります。
接続文字列:
スキームオプションから
mongodb+srv://を
選択します。ホスト名とポートをカンマ区切りで入力します。
接続文字列:
Scheme ドロップダウンメニューから
mongodb+srv://
を選択します。ホスト名を FQDN 形式で入力します。
Lookup
をクリックして DNS クエリを実行します。成功すると、クラスタ内のノードが自動的にインスタンスとして追加されます。
認証 DB とその他のオプション:
値は DNS TXT レコードから自動的に入力されます。
srvの場合、
tls=true
オプションは TXT レコードに含まれていないため、Other Optionsで変換した後、標準文字列に手動で追加する必要があります。
シークレットストア:パスワードとキーの管理場所を選択します。デフォルトの QueryPie では、これらは内部で管理されます。
User Name&Password: データベースのユーザ名とパスワードを入力します。
Test Connection
をクリックして、接続の詳細を確認します。Next
をクリックして接続を完了し、保存します。
4.シャーデッドクラスタの構成
シャーデッド・クラスタの設定は、接続文字列オプションにおいてのみレプリカ・セットと異なります。Sharded Cluster ではreplicaSet
オプションは必要ありません。

標準接続
クラスタ入力を有効にするためにクラスタスイッチを有効にしてから、以下の情報を入力します:
Type:プライマリの役割は動的に変更される可能性があるため、デフォルト値のPrimaryのままにします。
接続文字列:
スキーム・オプションから
mongodb://
を選択します。mongos インスタンスのホスト名とポートをカンマ区切りで入力します。
Add Instance
をクリックして各 mongos インスタンスを追加します。mongodb://[ホスト名]:[ポート]
の形式で接続文字列を入力し、適切なインスタンス名を割り当てます。Expose:接続情報でインスタンスの可視性を決定します。
Authentication DB: 認証データベース(authSource)の値を入力します。
その他のオプション:Shardedクラスタでは、追加のオプションは必要ない場合があります。
シークレットストア:パスワードと鍵を管理する場所を選択します。デフォルトの QueryPie では、これらは内部で管理されます。
User Name&Password:データベースのユーザ名とパスワードを入力します。
Test Connection
をクリックして、接続の詳細を確認します。Next
をクリックして接続を完了し、保存します。< +srv 接続 >をクリックします。
標準文字列に変換した後、[Other Options(その他のオプション)]にtls=true
オプションが正しく追加されていることを確認します。レプリカ・セット構成からの追加の違いはありません。
クラスタモードの詳細については DBコネクションドキュメントを参照してください。
プロキシTLS (SSL) 構成
QueryPie SQL エディタを使用して接続する場合、接続文字列にtls=true
を含める必要があります。
srv
スキームを使用する接続では、TLS オプションは自動的にtrue
に設定されます。ただし、標準接続文字列に変換する場合は、TX Tレコードに TLS オプションが含まれていないため、手動でその他のオプション
フィールドにtls=true
を追加する必要があります。したがって、例に示すように、Otherオプション
・フィールドに&tls=trueを
追加します。
DataGrip のような SQL クライアントで Proxy を使用する場合は、QueryPie で別途 SSL を設定する必要があります。詳細は SSL設定ドキュメントを参照してください。

MongoDB データポリシーとルールの設定
MongoDB では、個人情報や機密情報などアクセス制限が必要なデータは、 コレクションや JSON 値のレベルでマスクしたり閲覧を制限したりできます。MongoDB はデータを JSON 形式で保存するので、QueryPie ではこれらのポリシーを処理するために特定のフォーマットロジックが適用されます。
初期ポリシーを作成するには、以下のリンクを参照してください:
マスキングポリシーの登録

管理者 > データベース > ポリシー > データマスキング > ルールリストの追加
ポリシーを作成したら、ポリシーが適用されるデータへのパスを登録します:
データマスキングメニューで作成したポリシーをクリックします。
ポリシーの詳細とルールの登録画面が表示されます。右側の「
ルールリストの追加
」ボタンをクリックします。以下の詳細を選択します:
データベース名:データベース名を入力します。
テーブル名:MongoDB の場合は、コレクション名を入力します。
カラム名:MongoDB の場合は、マスキングを適用する JSON 属性名を入力します。
データマスキングを適用します:
選択したカラムに、必要なマスキングパターンを適用します。
QueryPie には、個人情報や機密情報をマスキングするための 20以上の組み込みパターンが用意されています。
また、マスキングパターンメニューで正規表現を使用して、カスタムの検出およびマスキングパターンを作成することもできます。
必要に応じて、特定のユーザーまたはグループをアクセス制限ルールから除外することができます。
許可されたユーザー:ルールから除外するユーザーまたはグループを選択します。
OK]を
クリックして設定を保存します。
ルールがルール一覧タブに表示されるようになります。ポリシーが適用された MongoDB コレクションにユーザーがアクセスすると、指定した JSON 属性値は、
*****@gmail.com を
表示するなどのパターンに従ってマスクされます。
コレクション / JSON 値のアクセス制限ポリシーの登録
ポリシーを作成したら、ポリシーを適用するデータへのパスを登録します:

管理者 > データベース > ポリシー > データアクセス > ルールリストの追加
データアクセスメニューで作成したポリシーをクリックします。
ポリシーの詳細とルールの登録画面が表示されます。右側の
ルールリストの追加
ボタンをクリックします。以下の詳細を選択します:
データベース名:データベース名: データベース名を入力します(必須)。
テーブル名:テーブル名を入力します (必須)。MongoDB では、コレクション名に対応します。テーブルのみを選択すると、テーブル (またはコレクション) 全体の閲覧が制限されます。
カラム名:MongoDB では、ドキュメント内の特定の値へのアクセスを制限したい場合は、JSON 属性名を入力します。
必要に応じて、特定のユーザーやグループをアクセス制限ルールから除外できます。
許可するユーザー:ルールから除外するユーザーまたはグループを選択します。
OK
をクリックして設定を保存します。
ルールが ルール リスト タブに表示されます。ユーザがこれらのポリシーでデータにアクセスすると、ポリシーがテーブルレベルで適用されている場合はテーブル自体にアクセスできなくなり、列レベルで適用されている場合は制限された列/値に{RESTRICTED}
が表示されます。
JSON PATH の例
以下に、MongoDB のデータにポリシーを適用する例を示します。
$body
例 1.項目属性へのアクセスを制限する

管理者 > データベース > ポリシー > データアクセス > ルールリストの追加
ひとつの属性へのアクセスを制限するには、カラム名フィールドに item と入力してOK
をクリックします。

item("T_PWD")属性の値が "Restricted Column "として表示されているのがわかるでしょう。
ケース2.size.h属性へのアクセス制限
sizeの下にあるh属性へのアクセスを制限するには、列名フィールドに$.size.hと
入力し、OK
をクリックします。

管理者 > データベース > ポリシー > データアクセス > ルールリストの追加

sizeの下にあるh属性の値が、スクリーンショットでは "Restricted Column "と表示されていることがわかります。
ケース3. size 属性配下の全属性へのアクセス制限
size 以下の全ての属性へのアクセスを制限するには、Column Nameフィールドに$.sizeと
入力し、OKを
クリックします。

管理者 > データベース > ポリシー > データアクセス > ルールリストの追加

スクリーンショットでは、size 以下のすべての属性値が "Restricted Column "として表示されていることがわかります。
ケース4.タグリストの2番目の値へのアクセスを制限する
タグリストの2番目の値へのアクセスを制限するには、列名 フィールドに $.tags[1]
と入力し、OK
をクリックします。

管理者 > データベース > ポリシー > データアクセス > ルールリストの追加

タグリストの2番目の値が、スクリーンショットの "Restricted Column "として表示されていることがわかります。