Docs Menu
Docs Home
/
MongoDB 매뉴얼
/

필드 레벨 편집 구현

이 페이지의 내용

  • 절차

$redact 파이프라인 연산자 는 문서 자체에 저장된 정보를 기반으로 문서의 내용을 제한합니다.

미들웨어와 편집이 탑재된 보안 아키텍처 다이어그램.

액세스 기준 데이터를 저장하려면 문서 및 내장된 문서에 필드를 추가하세요. 동일한 데이터에 대한 액세스 수준의 여러 조합을 허용하려면 액세스 필드를 여러 배열 중 한 배열로 설정하는 것이 좋습니다. 각 배열 요소에는 해당 세트를 가진 사용자가 데이터에 액세스할 수 있도록 허용하는 필수 세트가 포함됩니다.

그런 다음 db.collection.aggregate() 작업에 $redact 단계를 포함하여 데이터를 보는 데 필요한 액세스 권한에 따라 결과 데이터의 콘텐츠를 제한합니다.

구문 및 관련 시스템 변수, 추가 예시 등 $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" ] ]
}
]
}

다음도 참조하세요.

돌아가기

제한 사항

이 페이지의 내용