문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

시스템 이벤트 감사 메시지

이 페이지의 내용

  • 감사 메시지
  • 감사 이벤트 작업, 세부 정보 및 결과

참고

MongoDB EnterpriseMongoDB Atlas 에서만 사용할 수 있습니다.

이벤트 감사 기능은 이벤트를 JSON 형식으로 기록할 수 있습니다. 감사 출력을 구성하려면 감사 구성을 참조하세요.

버전 5.0에서 변경됨

기록된 JSON 메시지의 구문은 다음과 같습니다.

{
atype: <string>,
ts : { $date: <timestamp> },
uuid : { $binary: <string>, $type: <string> },
local: { ip: <string>, port: <int> || isSystemUser: <boolean> || unix: <string> },
remote: { ip: <string>, port: <int> || isSystemUser: <boolean> || unix: <string> },
users : [ { user: <string>, db: <string> }, ... ],
roles: [ { role: <string>, db: <string> }, ... ],
param: <document>,
result: <int>
}
필드
유형
설명
atype
문자열
ts
문서
이벤트의 날짜와 UTC 기준 시간이 포함된 ISO 8601 형식의 문서입니다.

uuid

문서

메시지 식별자가 포함된 문서입니다.

UUID는 클라이언트 연결을 식별합니다. UUID를 사용하여 해당 클라이언트에 연결된 감사 이벤트를 추적합니다.

$type 필드의 값은 BSON 유형 04이며, 이는 $binary 필드에 UUID가 포함되어 있음을 나타냅니다.

버전 5.0에 추가.

local

문서

실행 중인 인스턴스의 ip 주소와 port 번호를 포함하는 문서입니다.

MongoDB 5.0부터는 다음의 필드 중 하나가 있는 문서가 될 수도 있습니다.

  • isSystemUser 이벤트를 일으킨 사용자가 시스템 사용자인지 여부를 나타냅니다. 동일한 서버 인스턴스에서 실행되는 백그라운드 프로세스에 의해 시작된 자체 참조 작업에 대해 기록됩니다.

  • unix 클라이언트가 Unix 도메인 소켓을 통해 연결하는 경우 MongoDB 소켓 파일 경로가 포함됩니다.

참고

MongoDB 5 부터 시작.0, local 필드는 더 이상 사용되지 않습니다. 대신 clientMetadata 감사 메시지의 localEndpoint 필드를 사용합니다.

버전 5.0에서 변경됨

remote
문서

이벤트와 관련된 수신 연결의 ip 주소 및 port 번호를 포함하는 문서입니다.

MongoDB 5.0부터는 다음의 필드 중 하나가 있는 문서가 될 수도 있습니다.

  • isSystemUser 이벤트를 일으킨 사용자가 시스템 사용자인지 여부를 나타냅니다. 동일한 서버 인스턴스에서 실행되는 백그라운드 프로세스에 의해 시작된 자체 참조 작업에 대해 기록됩니다.

  • unix 클라이언트가 Unix 도메인 소켓을 통해 연결하는 경우 MongoDB 소켓 파일 경로가 포함됩니다.

버전 5.0에서 변경됨

users
배열
사용자 식별 문서의 배열입니다. MongoDB는 세션이 데이터베이스당 다른 사용자로 로그인할 수 있도록 허용하기 때문에 이 배열에는 둘 이상의 사용자가 있을 수 있습니다. 각 문서에는 사용자 이름에 대한 user 필드와 해당 사용자의 인증 데이터베이스에 대한 db 필드가 포함됩니다.
roles
배열
사용자에게 부여된 역할을 지정하는 문서의 배열입니다. 각 문서에는 역할 이름을 나타내는 role 필드와 역할과 관련된 데이터베이스의 db 필드가 포함됩니다.
param
문서
이벤트에 대한 구체적인 세부 정보입니다. 감사 이벤트 작업, 세부 정보 및 결과를 참조하세요.
result
integer

다음 표에는 각 atype 또는 조치 유형에 관한 관련 param 세부 정보 및 result 값(있는 경우)이 나열되어 있습니다.

atype
param
result

authenticate

{
user: <user name>,
db: <database>,
mechanism: <mechanism>
}

MongoDB 5.0부터 다음을 authenticate:

  • 불완전한 인증 시도에 대해 기록됩니다.

  • x.509 및 AWS-IAM(Amazon Web Services ID 및 액세스 관리)과 같은 외부 인증 메커니즘에 대한 mechanism의 기본 이름 및 식별자를 포함합니다(authMechanism 참고).

버전 5.0에서 변경됨

0 - 성공
18 - 인증 실패
334 - 메커니즘 사용 불가

authCheck

{
command: <name>,
ns: <database>.<collection>,
args: <command object>
}
ns 필드는 선택 사항입니다.
args 필드가 삭제될 수 있습니다.

기본적으로 감사 시스템은 권한 부여 실패만 기록합니다. 시스템에서 인증 성공을 기록할 수 있도록 하려면 auditAuthorizationSuccess 매개 변수를 사용하세요.

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

MongoDB 5.0부터는 내부적으로 생성되는 조치에 대해 authCheck이 기록되지 않습니다.

버전 5.0에서 변경됨

0 - 성공
13 - 작업을 수행할 권한이 없습니다.

clientMetadata

{
localEndpoint : {
ip : <IP address of running instance>,
port : <port of running instance>
} || {
unix : <MongoDB socket file path if connecting through
a Unix domain socket>
},
clientMetadata : {
driver : {
name : <client driver name>,
version : <client driver version>
},
os : {
type : <client operating system type>,
name : <client operating system name>,
architecture : <client operating system architecture>,
version : <client operating system version>
},
platform : <client platform name>,
application : {
name : <client application name>
}
}
}

클라이언트 메타데이터를 포함합니다. 클라이언트가 hello 명령을 실행할 때 기록됩니다.

다음도 참조하세요.

버전 5.0에 추가.

0 - 성공
{
ns: <database>.<collection || view>,
viewOn: <database>.<collection>,
pipeline: [ <pipeline definition> ]
}

다음과 같은 경우에 기록됩니다.

  • 컬렉션이 생성됩니다.

  • 가 생성되고 ns 필드에 뷰 이름이 기록됩니다.

MongoDB 5.0부터 뷰에 대해 다음과 같은 추가 정보가 기록됩니다.

  • viewOn 필드에 뷰의 데이터베이스 및 컬렉션이 있는 경우

  • pipeline 필드에 뷰에 관한 집계 파이프라인 정의가 있는 경우

버전 5.0에서 변경됨

0 - 성공
createDatabase
{ ns: <database> }
0 - 성공
{
ns: <database>.<collection>,
indexName: <index name>,
indexSpec: <index specification>,
indexBuildState: <index build state>
}

indexBuildState의 가능한 값은 다음과 같습니다.

  • IndexBuildStarted

  • IndexBuildSucceeded

  • IndexBuildAborted

MongoDB 5.0부터 createIndex 감사 이벤트는 다음과 같습니다.

  • 인덱스 생성 시작 및 종료 시 기록되며 인덱스가 성공적으로 생성되었는지 여부를 나타내는 메시지가 포함됩니다.

  • createIndex 감사 이벤트를 발생시킨 조치의 원래 사용자에게 귀속됩니다.

  • 컬렉션에 인덱스가 있는 경우 createCollection 이벤트에 대해 기록됩니다.

버전 5.0에서 변경됨

0 - 성공
276 - 인덱스 빌드가 중단되었습니다.

감사 메시지에는 IndexBuildStateIndexBuildAborted 로 설정된 createIndex 감사 이벤트에 대한 결과 코드 276이 포함됩니다. 감사 메시지에는 IndexBuildStateIndexBuildStarted 또는 IndexBuildSucceeded로 설정된 createIndex 감사 이벤트에 대한 결과 코드 0가 포함됩니다.

directAuthMutation

{
document: {
<collection modifications>
},
ns: <database>.<collection>,
operation: <database operation>
}

데이터베이스 작업이 admin.system.users 또는 admin.system.roles 컬렉션의 내용을 직접 수정할 때 기록됩니다.

버전 5.0에 추가.

0 - 성공
renameCollection
{
old: <database>.<collection>,
new: <database>.<collection>
}
0 - 성공
{
ns: <database>.<collection || view>,
viewOn: <database>.<collection>,
pipeline: [ <pipeline definition> ]
}

다음과 같은 경우에 기록됩니다.

  • 컬렉션이 삭제됩니다.

  • 가 삭제되고 ns 필드에 뷰 이름이 기록됩니다.

MongoDB 5.0부터 뷰에 대해 다음과 같은 추가 정보가 기록됩니다.

  • viewOn 필드에 뷰의 데이터베이스 및 컬렉션이 있는 경우

  • pipeline 필드에 뷰에 관한 집계 파이프라인 정의가 있는 경우

또한, MongoDB 5.0부터는 dropDatabase 이벤트가 발생하면 dropCollection 감사 이벤트가 기록됩니다.

버전 5.0에서 변경됨

0 - 성공
26 - NamespaceNotFound

컬렉션이나 뷰가 없으면 감사 메시지에 반환 코드가 result: 26으로 표시됩니다.

{ ns: <database> }
0 - 성공
{
ns: <database>.<collection>,
indexName: <index name>
}
0 - 성공
{
user: <user name>,
db: <database>,
customData: <document>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}

customData 필드는 선택 사항입니다.

0 - 성공
{
user: <user name>,
db: <database>
}
0 - 성공
dropAllUsersFromDatabase
{ db: <database> }
0 - 성공
updateUser
{
user: <user name>,
db: <database>,
passwordChanged: <boolean>,
customData: <document>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}

customData 필드는 선택 사항입니다.

0 - 성공
grantRolesToUser
{
user: <user name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}
0 - 성공
revokeRolesFromUser
{
user: <user name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}
0 - 성공
{
role: <role name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
],
privileges: [
{
resource: <resource document>,
actions: [ <action>, ... ]
},
...
]
}

rolesprivileges 필드는 선택 사항입니다.

리소스 문서에 대한 자세한 내용은 리소스 문서를 참조하세요. 작업 목록은 권한 작업을 참조하세요.

0 - 성공
updateRole
{
role: <role name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
],
privileges: [
{
resource: <resource document>,
actions: [ <action>, ... ]
},
...
]
}

rolesprivileges 필드는 선택 사항입니다.

리소스 문서에 대한 자세한 내용은 리소스 문서를 참조하세요. 작업 목록은 권한 작업을 참조하세요.

0 - 성공
{
role: <role name>,
db: <database>
}
0 - 성공
dropAllRolesFromDatabase
{ db: <database> }
0 - 성공
grantRolesToRole
{
role: <role name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}
0 - 성공
revokeRolesFromRole
{
role: <role name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}
0 - 성공
grantPrivilegesToRole
{
role: <role name>,
db: <database>,
privileges: [
{
resource: <resource document>,
actions: [ <action>, ... ]
},
...
]
}

리소스 문서에 대한 자세한 내용은 리소스 문서를 참조하세요. 작업 목록은 권한 작업을 참조하세요.

0 - 성공
revokePrivilegesFromRole
{
role: <role name>,
db: <database name>,
privileges: [
{
resource: <resource document>,
actions: [ <action>, ... ]
},
...
]
}

리소스 문서에 대한 자세한 내용은 리소스 문서를 참조하세요. 작업 목록은 권한 작업을 참조하세요.

0 - 성공
replSetReconfig
{
old: {
_id: <replicaSetName>,
version: <number>,
...
members: [ ... ],
settings: { ... }
},
new: {
_id: <replicaSetName>,
version: <number>,
...
members: [ ... ],
settings: { ... }
}
}

복제본 세트 구성 문서에 관한 자세한 내용은 복제본 세트 구성에서 확인하세요.

0 - 성공
{ ns: <database> }
0 - 성공
shardCollection
{
ns: <database>.<collection>,
key: <shard key pattern>,
options: { unique: <boolean> }
}
0 - 성공
{
shard: <shard name>,
connectionString: <hostname>:<port>,
maxSize: <maxSize>
}

샤드가 복제본 세트인 경우, connectionString에는 복제본 세트 이름이 포함되고 복제본 세트의 다른 멤버가 포함될 수 있습니다.

0 - 성공
{
ns: <database>.<collection>,
key: <shard key pattern>
}
0 - 성공
{ shard: <shard name> }
0 - 성공
{ }

데이터베이스 종료의 시작을 나타냅니다.

0 - 성공
{ msg: <custom message string> }

logApplicationMessage참조하십시오.

0 - 성공

logout

{
reason: <string>,
initialUsers: [ <document>, ... ],
updatedUsers: [ <document>, ... ],
}
reason 다음 중 하나가 될 것입니다.
  • "<database>에서 명시적 로그아웃"

  • "클라이언트 연결 종료로 인한 암시적 로그아웃"

initialUsers 로그아웃하기 전에 현재 클라이언트에서 인증된 사용자를 포함하는 문서 배열입니다.

updatedUsers 로그아웃 이벤트 이후 현재 클라이언트에서 인증될 것으로 예상되는 사용자를 포함하는 문서 배열입니다.

initialUsersupdatedUsers의 각 문서에는 다음이 포함됩니다.
  • user: 사용자 이름

  • db샤드가 복제본 세트인 경우, user에는 복제본 세트 이름이 포함되고 복제본 세트의 다른 멤버가 포함될 수 있습니다.

버전 5.0에 추가.

0 - 성공

startup

{ options: <document> }

options 문서에는 인스턴스가 시작된 옵션이 포함되어 있습니다.

버전 5.0에 추가.

0 - 성공
← 감사 필터 구성