문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
감사 필터 구성
이 페이지의 내용
참고
MongoDB Atlas에서의 감사
MongoDB Atlas는 모든 M10
및 대규모 클러스터에 대한 감사를 지원합니다. Atlas는 아래에 설명된 대로 JSON 형식의 감사 필터를 지정하고 Atlas 감사 필터 빌더를 사용하여 감사 구성을 간소화할 수 있도록 지원합니다. 자세한 내용은 데이터베이스 감사 설정 및 사용자 지정 감사 필터 구성에 대한 Atlas 설명서를 참조하세요.
MongoDB Enterprise 는 다양한 작업에 대한 감사 를 지원합니다. 활성화 하면 감사 기능은 기본적으로 감사 이벤트 작업, 세부 정보 및 결과에 자세히 설명된 대로 감사 가능한 모든 작업을 기록합니다. 이벤트 필터를 지정하여 기록되는 이벤트를 제한할 수 있습니다. 시작 시 필터를 구성하거나 런타임 사양을 허용하도록 MongoDB를 구성할 수 있습니다.
런타임에 필터 구성
MongoDB 5.0부터 mongod
및 mongos
노드에 대한 감사 구성은 런타임에 구성할 수 있습니다. 이러한 노드 그룹은 분산 감사 구성에 참여할 수 있습니다.
분산 감사 구성에 노드를 포함하려면 다음과 같이 노드의 구성 파일을 업데이트하고 서버를 다시 시작합니다.
매개변수 | 값 |
---|---|
true | |
Unset | |
Unset |
다음과 같은 경우 서버는 오류를 기록하고 시작되지 않습니다.
runtimeConfiguration
는true
이고auditLog.filter
2} 또는auditAuthorizationSuccess
가 설정됩니다.
런타임에 감사 필터 및 auditAuthorizationSuccess
매개 변수를 수정하려면 auditConfig
를 참조하세요.
시스템 시작 시 필터 구성
감사 필터는 명령줄에서 지정하거나 mongod
또는 mongos
인스턴스를 시작하는 데 사용되는 구성 파일에서 지정할 수 있습니다.
구성 파일 사용량
필터는 구성 파일의 auditLog
세션 아래에 있는 YAML에서 지정할 수 있습니다. 샘플 구성은 아래 예시를 참조하세요.
참고
runtimeConfiguration
이 활성화된 경우 구성 파일을 사용하여 감사 필터를 지정할 수 없습니다.
예제
여러 작업 유형에 대한 필터
다음 예에서는 필터를 사용하여 createCollection
및 dropCollection
작업만 감사합니다:
{ 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
데이터베이스에 대해 발생하는 createCollection
및 dropCollection
작업만 감사합니다.
참고
정규 표현식에는 점(.
)을 이스케이프하기 위해 두 개의 백슬래시(\\
)가 필요합니다.
{ 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 }
팁
다음도 참조하세요.
[1] | (1, 2) --auth 를 활성화하지 않고 auditAuthorizationSuccess 매개 변수를 활성화할 수 있지만, 모든 작업이 권한 확인에 대해 성공을 반환합니다. |