Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

자체 관리형 배포서버에서 감사 필터 구성

이 페이지의 내용

  • 감사 필터 구문
  • 런타임에 필터 구성
  • 시스템 시작 시 필터 구성
  • 예시
  • 자세히 알아보기

참고

MongoDB Atlas에서의 감사

MongoDB Atlas는 모든 M10 및 대규모 클러스터에 대한 감사를 지원합니다. Atlas는 아래에 설명된 대로 JSON 형식의 감사 필터를 지정하고 Atlas 감사 필터 빌더를 사용하여 감사 구성을 간소화할 수 있도록 지원합니다. 자세한 내용은 데이터베이스 감사 설정사용자 지정 감사 필터 구성에 대한 Atlas 설명서를 참조하세요.

MongoDB Enterprise감사를 지원합니다. 감사 기능을 활성화하면 기본적으로 감사 이벤트 작업, 세부 정보 및 결과에 자세히 설명된 대로 모든 감사 작업이 기록됩니다. 이벤트 필터를 지정하여 기록되는 이벤트를 제한할 수 있습니다.

시작 시 감사 필터를 구성하거나 런타임시 필터 구성을 허용하도록 MongoDB를 구성할 수 있습니다.

감사 필터는 find 명령에 지정된 쿼리 조건자 문서와 동일한 형식을 갖습니다. 감사 필터의 예시를 보려면 예시를 참조하세요.

MongoDB 5.0부터 mongodmongos 노드에 대한 감사 구성은 런타임에 구성할 수 있습니다. 이러한 노드 그룹은 분산 감사 구성에 참여할 수 있습니다.

분산 감사 구성에 노드를 포함하려면 다음과 같이 노드의 구성 파일을 업데이트하고 서버를 다시 시작합니다.

Parameter

true

Unset

Unset

다음과 같은 경우 서버는 오류를 기록하고 시작되지 않습니다.

런타임에 감사 필터 및 auditAuthorizationSuccess 매개 변수를 수정하려면 auditConfig를 참조하세요.

감사 필터는 명령줄에서 지정하거나 mongod 또는 mongos 인스턴스를 시작하는 데 사용되는 구성 파일에서 지정할 수 있습니다.

필터는 구성 파일auditLog 세션 아래에 있는 YAML에서 지정할 수 있습니다. 샘플 구성은 아래 예시를 참조하세요.

참고

runtimeConfiguration이 활성화된 경우 구성 파일을 사용하여 감사 필터를 지정할 수 없습니다.

감사 가능한 모든 이벤트를 기록 하려면 감사 필터를 지정하지 마세요. 기본값 감사 기능은 감사 가능한 모든 작업을 기록합니다.

다음 예에서는 필터를 사용하여 createCollectiondropCollection 작업만 감사합니다:

{ atype: { $in: [ "createCollection", "dropCollection" ] } }

감사 필터를 지정하려면 필터 문서를 작은따옴표 안에 입력하고 문서를 문자열로 전달합니다.

mongod --dbpath data/db --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip 를 지정합니다.

구성 파일에서 감사 필터를 지정하려면 구성 파일의 YAML 형식을 사용해야 합니다.

storage:
dbPath: data/db
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] } }'

<field>에는 감사 메시지의 모든 필드가 포함될 수 있습니다. 인증 작업의 경우(예: atype: "authenticate"), 감사 메시지에는 param 문서에 db 필드가 포함됩니다.

다음 예에서는 필터를 사용하여 test 데이터베이스에 대해 발생하는 authenticate 작업만 감사합니다.

{ atype: "authenticate", "param.db": "test" }

감사 필터를 지정하려면 필터 문서를 작은따옴표 안에 입력하고 문서를 문자열로 전달합니다.

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: "authenticate", "param.db": "test" }' --auditFormat BSON --auditPath data/db/auditLog.bson

구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip 를 지정합니다.

구성 파일에서 감사 필터를 지정하려면 구성 파일의 YAML 형식을 사용해야 합니다.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: "authenticate", "param.db": "test" }'

데이터베이스의 모든 authenticate 작업을 필터링하려면 "param.db": "test"를 생략하고 { atype: "authenticate" } 필터를 사용합니다.

<field>에는 감사 메시지의 모든 필드가 포함될 수 있습니다. 컬렉션 생성 및 제거 작업의 경우(예: atype: "createCollection"atype: "dropCollection"), 감사 메시지에 param 문서의 네임스페이스 ns 필드가 포함됩니다.

다음 예에서는 필터를 사용하여 test 데이터베이스에 대해 발생하는 createCollectiondropCollection 작업만 감사합니다.

참고

정규 표현식에는 점(.)을 이스케이프하기 위해 두 개의 백슬래시(\\)가 필요합니다.

{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }

감사 필터를 지정하려면 필터 문서를 작은따옴표 안에 입력하고 문서를 문자열로 전달합니다.

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }' --auditFormat BSON --auditPath data/db/auditLog.bson

구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip 를 지정합니다.

구성 파일에서 감사 필터를 지정하려면 구성 파일의 YAML 형식을 사용해야 합니다.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ }'

다음 예에서는 필터를 사용하여 readWrite에서 상속한 역할을 가진 사용자를 포함하여 test 데이터베이스에서 readWrite 역할이 있는 사용자의 작업을 감사합니다:

{ roles: { role: "readWrite", db: "test" } }

감사 필터를 지정하려면 필터 문서를 작은따옴표 안에 입력하고 문서를 문자열로 전달합니다.

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ roles: { role: "readWrite", db: "test" } }' --auditFormat BSON --auditPath data/db/auditLog.bson

구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip 를 지정합니다.

구성 파일에서 감사 필터를 지정하려면 구성 파일의 YAML 형식을 사용해야 합니다.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ roles: { role: "readWrite", db: "test" } }'

감사에서 읽기 및 쓰기 작업을 캡처하려면 감사 시스템이 auditAuthorizationSuccess 매개 변수를 사용하여 인증 성공을 기록하도록 설정해야 합니다. [1]

참고

auditAuthorizationSuccess를 사용하도록 설정하면 인증 실패만 기록하는 것보다 성능이 더 저하됩니다.

이 필터는 여러 읽기 및 쓰기 작업을 감사합니다:

{
atype: "authCheck",
"param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] }
}

감사 대상 작업에는 다음이 포함됩니다:

감사 필터를 지정하려면 필터 문서를 작은따옴표 안에 입력하고 문서를 문자열로 전달합니다.

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip 를 지정합니다.

구성 파일에서 감사 필터를 지정하려면 구성 파일의 YAML 형식을 사용해야 합니다.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }'
setParameter: { auditAuthorizationSuccess: true }

감사에서 읽기 및 쓰기 작업을 캡처하려면 감사 시스템이 auditAuthorizationSuccess 매개 변수를 사용하여 인증 성공을 기록하도록 설정해야 합니다. [1]

참고

auditAuthorizationSuccess를 사용하도록 설정하면 인증 실패만 기록하는 것보다 성능이 더 저하됩니다.

이 필터는 test 데이터베이스의 orders 컬렉션에 대한 여러 읽기 및 쓰기 작업을 감사합니다.

{
atype: "authCheck",
"param.ns": "test.orders",
"param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] }
}

감사 대상 작업에는 다음이 포함됩니다:

감사 필터를 지정하려면 필터 문서를 작은따옴표 안에 입력하고 문서를 문자열로 전달합니다.

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip 를 지정합니다.

구성 파일에서 감사 필터를 지정하려면 구성 파일의 YAML 형식을 사용해야 합니다.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findAndModify" ] } }'
setParameter: { auditAuthorizationSuccess: true }

MongoDB 8.0부터 MongoDB는 OCSF 형식으로 로그 메시지를 작성할 수 있습니다. OCSF 스키마에는 기본 mongo 스키마와 다른 필드가 포함되어 있습니다.

다음 감사 필터는 OCSF 스키마에 기록된 네트워크 활동 조치를 캡처합니다.

{ category_uid: 4 }

감사 필터를 지정하려면 필터 문서를 작은따옴표 안에 입력하고 문서를 문자열로 전달합니다.

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ category_uid: 4 }' --auditFormat JSON --auditSchema OCSF --auditPath data/db/auditLog.json

구성 파일에서 감사 필터를 지정하려면 구성 파일의 YAML 형식을 사용해야 합니다.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: JSON
path: data/db/auditLog.json
filter: '{ category_uid: 4 }'
schema: OCSF
setParameter: { auditAuthorizationSuccess: true }

OCSF 로그 메시지에 대한 자세한 내용은 OCSF 스키마 감사 메시지를 참조하세요.

여러 감사 메시지 필드를 필터링하려면 $or 같은 최상위 쿼리 연산자를 지정할 수 있습니다. 예를 들어 다음 필터는 atype 중 하나가 authenticate이거나 readWrite 역할을 가진 사용자가 작업을 수행한 작업을 캡처합니다.

{
$or: [
{ atype: "authenticate" },
{ "roles.role": "readWrite" }
]
}

감사 필터를 지정하려면 필터 문서를 작은따옴표 안에 입력하고 문서를 문자열로 전달합니다.

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }' --auditFormat BSON --auditPath data/db/auditLog.bson

구성에 필요한 추가 옵션을 포함합니다. 예를 들어 원격 클라이언트를 배포에 연결하거나 배포 구성원이 다른 호스트에서 실행되도록 하려면 --bind_ip 를 지정합니다.

구성 파일에서 감사 필터를 지정하려면 구성 파일의 YAML 형식을 사용해야 합니다.

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }'
[1](1, 2) --auth를 활성화하지 않고 auditAuthorizationSuccess 매개 변수를 활성화할 수 있지만, 모든 작업이 권한 확인에 대해 성공을 반환합니다.

돌아가기

구성