Docs Menu
Docs Home
/
MongoDBマニュアル
/

フィールド レベル リダクションを実装する

項目一覧

  • 手順

$redactパイプライン演算子は、ドキュメント自体に保存されている情報に基づいてドキュメントの内容を制限します。

ミドルウェアと編集機能を備えたセキュリティ アーキテクチャの図。

アクセス条件データを保存するには、 ドキュメントと 埋め込みドキュメントに フィールドを追加します。 同じデータに対してアクセス レベルの複数の組み合わせを可能にするには、アクセス フィールドを配列の配列に設定することを検討してください。 各配列要素には、そのセットを持つユーザーがデータにアクセスできるようにする必須セットが含まれています。

次に、データの表示に必要なアクセスに基づいて結果セットの内容を制限するために、 操作に$redact db.collection.aggregate()ステージを含めます。

構文や関連するシステム変数、その他の例など、 $redactパイプライン演算子の詳細については、 $redactを参照してください。

たとえば、 forecastsコレクションには次の形式のドキュメントが含まれており、 tagsフィールドによってデータの表示に必要なアクセスレベルが決定されます。

{
_id: 1,
title: "123 Department Report",
tags: [ [ "G" ], [ "FDW" ] ],
year: 2014,
subsections: [
{
subtitle: "Section 1: Overview",
tags: [ [ "SI", "G" ], [ "FDW" ] ],
content: "Section 1: This is the content of section 1."
},
{
subtitle: "Section 2: Analysis",
tags: [ [ "STLW" ] ],
content: "Section 2: This is the content of section 2."
},
{
subtitle: "Section 3: Budgeting",
tags: [ [ "TK" ], [ "FDW", "TGE" ] ],
content: {
text: "Section 3: This is the content of section3.",
tags: [ [ "HCS"], [ "FDW", "TGE", "BX" ] ]
}
}
]
}

各ドキュメントごとに、 tagsフィールドには、データを表示するために必要なさまざまなアクセス グループが含まれています。 たとえば、値[ [ "G" ], [ "FDW", "TGE" ] ]は、ユーザーがデータを表示するためにアクセスレベル["G"]または[ "FDW", "TGE" ]の両方が必要であることを指定できます。

"FDW"または"TGE"のいずれかでタグ付けされた情報を表示するアクセス権を持つユーザーを考えてみましょう。 このユーザーの年が2014であるすべてのドキュメントに対してクエリを実行するには、次のように$redactステージを含めます。

var userAccess = [ "FDW", "TGE" ];
db.forecasts.aggregate(
[
{ $match: { year: 2014 } },
{ $redact:
{
$cond: {
if: { $anyElementTrue:
{
$map: {
input: "$tags" ,
as: "fieldTag",
in: { $setIsSubset: [ "$$fieldTag", userAccess ] }
}
}
},
then: "$$DESCEND",
else: "$$PRUNE"
}
}
}
]
)

集約操作により、ユーザーには次の「編集済み」ドキュメントが返されます。

{ "_id" : 1,
"title" : "123 Department Report",
"tags" : [ [ "G" ], [ "FDW" ] ],
"year" : 2014,
"subsections" :
[
{
"subtitle" : "Section 1: Overview",
"tags" : [ [ "SI", "G" ], [ "FDW" ] ],
"content" : "Section 1: This is the content of section 1."
},
{
"subtitle" : "Section 3: Budgeting",
"tags" : [ [ "TK" ], [ "FDW", "TGE" ] ]
}
]
}

Tip

以下も参照してください。

戻る

FIPS 用の構成

項目一覧