자체 관리형 배포서버에서 감사 필터 구성
참고
MongoDB Atlas에서의 감사
MongoDB Atlas는 모든 M10
및 대규모 클러스터에 대한 감사를 지원합니다. Atlas는 아래에 설명된 대로 JSON 형식의 감사 필터를 지정하고 Atlas 감사 필터 빌더를 사용하여 감사 구성을 간소화할 수 있도록 지원합니다. 자세한 내용은 데이터베이스 감사 설정 및 사용자 지정 감사 필터 구성에 대한 Atlas 설명서를 참조하세요.
MongoDB Enterprise는 감사를 지원합니다. 감사 기능을 활성화하면 기본적으로 감사 이벤트 작업, 세부 정보 및 결과에 자세히 설명된 대로 모든 감사 작업이 기록됩니다. 이벤트 필터를 지정하여 기록되는 이벤트를 제한할 수 있습니다.
시작 시 감사 필터를 구성하거나 런타임시 필터 구성을 허용하도록 MongoDB를 구성할 수 있습니다.
감사 필터 구문
감사 필터는 find
명령에 지정된 쿼리 조건자 문서와 동일한 형식을 갖습니다. 감사 필터의 예시를 보려면 예시를 참조하세요.
런타임에 필터 구성
MongoDB 5.0부터 mongod
및 mongos
노드에 대한 감사 구성은 런타임에 구성할 수 있습니다. 이러한 노드 그룹은 분산 감사 구성에 참여할 수 있습니다.
분산 감사 구성에 노드를 포함하려면 다음과 같이 노드의 구성 파일을 업데이트하고 서버를 다시 시작합니다.
Parameter | 값 |
---|---|
true | |
Unset | |
Unset |
다음과 같은 경우 서버는 오류를 기록하고 시작되지 않습니다.
runtimeConfiguration
는true
이고auditLog.filter
2} 또는auditAuthorizationSuccess
가 설정됩니다.
런타임에 감사 필터 및 auditAuthorizationSuccess
매개 변수를 수정하려면 setAuditConfig
를 참조하세요.
시스템 시작 시 필터 구성
감사 필터는 명령줄에서 지정하거나 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 }
최상위 쿼리 연산자 지정($or)
여러 감사 메시지 필드를 필터링하려면 $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 매개 변수를 활성화할 수 있지만, 모든 작업이 권한 확인에 대해 성공을 반환합니다. |