데이터베이스 활동 스트림에 대한 databaseActivityEventList JSON 배열
감사 로그 페이로드는 암호화된 databaseActivityEventList
JSON 배열입니다. 다음 표에는 감사 로그의 복호화된 DatabaseActivityEventList
배열에 있는 각 활동 이벤트의 필드가 알파벳 순으로 나열되어 있습니다. 이 필드는 Aurora PostgreSQL을 사용하는지 Aurora MySQL을 사용하는지에 따라 다릅니다. 해당 데이터베이스 엔진에 적용되는 표를 참조하십시오.
중요
이벤트 구조는 변경될 수 있습니다. Aurora는 향후 활동 이벤트에 새 필드를 추가할 수 있습니다. JSON 데이터를 구문 분석하는 애플리케이션에서 코드는 알 수 없는 필드 이름에 대해 무시할 수 있는지 또는 적절한 작업을 수행할 수 있는지 확인합니다.
Aurora PostgreSQL의 databaseActivityEventList 필드
Aurora PostgreSQL에 대한 databaseActivityEventList
필드는 다음과 같습니다.
필드 | 데이터 형식 | 설명 |
---|---|---|
class |
string |
활동 이벤트의 클래스입니다. Aurora PostgreSQL에 유효한 값은 다음과 같습니다.
|
clientApplication |
string | 클라이언트가 보고한 대로 클라이언트가 연결에 사용한 애플리케이션입니다. 클라이언트는 이 정보를 제공할 필요가 없으므로 값은 null일 수 있습니다. |
command |
string | 명령 세부 정보가 없는 SQL 명령의 이름. |
commandText |
string |
사용자가 전달한 실제 SQL 문. Aurora PostgreSQL의 경우 값은 원래 SQL 문과 동일합니다. 이 필드는 연결 또는 연결 해제 레코드를 제외한 모든 유형의 레코드에 사용되며 이 경우 값은 null입니다. 중요각 문의 전체 SQL 텍스트는 중요한 데이터를 포함하여 활동 스트림 감사 로그에 표시됩니다. 그러나 데이터베이스 사용자 암호는 다음 SQL 문에서와 같이 Aurora가 컨텍스트에서 판별할 수 있는 경우 수정됩니다.
|
databaseName |
string | 사용자가 연결된 데이터베이스입니다. |
dbProtocol |
string | 데이터베이스 프로토콜입니다(예: Postgres 3.0 ). |
dbUserName |
string | 클라이언트가 인증한 데이터베이스 사용자. |
errorMessage (버전 1.1 데이터베이스 작업 레코드만 해당) |
string |
오류가 발생할 경우 DB 서버에서 생성된 오류 메시지로 이 필드가 채워집니다. 오류가 발생하지 않은 정상적인 문의 경우 오류는 클라이언트에 표시되는 심각도 수준 백그라운드 체크포인터 프로세스 오류와 같은 내부 PostgreSQL 서버 오류는 오류 메시지를 생성하지 않습니다. 그러나 이러한 이벤트에 대한 레코드는 로그 심각도 수준의 설정에 관계없이 생성됩니다. 이로 인해 공격자가 로깅을 해제하여 탐지를 방지할 수 없습니다.
|
exitCode |
int | 세션 종료 레코드에 사용되는 값. 정리 종료의 경우, 여기에 종료 코드가 포함됩니다. 일부 결함 시나리오에서는 종료 코드를 항상 얻을 수 있는 것은 아닙니다. PostgreSQL이 exit() 을 수행하거나 연산자가 kill -9 같은 명령을 수행하는 경우가 그 예입니다.오류가 발생할 경우 PostgreSQL 오류 코드
|
logTime |
string | 감사 코드 경로에 기록된 타임스탬프. SQL 문의 실행이 종료된 시간을 나타냅니다. startTime 필드도 참조하십시오. |
netProtocol |
string | 네트워크 통신 프로토콜. |
objectName |
string | SQL 문이 하나에서 작동하는 경우 데이터베이스 객체의 이름. 이 필드는 SQL 문이 데이터베이스 객체에서 작동하는 경우에만 사용됩니다. SQL 문이 객체에서 작동하지 않는 경우, 이 값은 null입니다. |
objectType |
string | 테이블, 인덱스, 뷰 등의 데이터베이스 객체 유형입니다. 이 필드는 SQL 문이 데이터베이스 객체에서 작동하는 경우에만 사용됩니다. SQL 문이 객체에서 작동하지 않는 경우, 이 값은 null입니다. 유효한 값은 다음과 같습니다.
|
paramList |
string | SQL 문에 전달되는 쉼표로 구분된 파라미터의 배열입니다. SQL 문에 파라미터가 없는 경우 이 값은 빈 배열입니다. |
pid |
int | 클라이언트 연결 서비스를 위해 할당된 백엔드 프로세스의 프로세스 ID입니다. |
remoteHost |
string | 클라이언트 IP 주소 또는 호스트 이름입니다. Aurora PostgreSQL의 경우 데이터베이스의 log_hostname 파라미터 설정에 따라 사용되는 값이 달라집니다. remoteHost 값에는 rdsadmin 사용자의 활동을 나타내는 [local] 및 localhost 값도 포함됩니다. |
remotePort |
문자열 | 클라이언트 포트 번호. |
rowCount |
int | SQL 문에 의해 반환되는 행의 수입니다. 예를 들어 SELECT 문에서 10개의 행을 반환하는 경우 rowCount는 10입니다. INSERT 또는 UPDATE 문의 경우 rowCount는 0입니다. |
serverHost |
string | 데이터베이스 서버 호스트 IP 주소. serverHost 값에는 rdsadmin 사용자의 활동을 나타내는 [local] 및 localhost 값도 포함됩니다. |
serverType |
문자열 | 데이터베이스 서버 유형(예: PostgreSQL ). |
serverVersion |
string | 데이터베이스 서버 버전(예: Aurora PostgreSQL의 경우 2.3.1 ). |
serviceName |
string | 서비스의 이름(예: Amazon Aurora PostgreSQL-Compatible edition ). |
sessionId |
int | 의사 고유 세션 식별자. |
sessionId |
int | 의사 고유 세션 식별자. |
startTime (버전 1.1 데이터베이스 작업 레코드만 해당) |
string |
SQL 문의 실행이 시작된 시간입니다. SQL 문의 대략적인 실행 시간을 계산하려면 |
statementId |
int | 클라이언트의 SQL 문에 대한 식별자입니다. 카운터는 세션 수준에 있으며 클라이언트가 입력한 각 SQL 문 단위로 증가합니다. |
substatementId |
int | SQL 하위 문에 대한 식별자입니다. 이 값은 statementId 필드로 식별되는 각 SQL 문에 대해 포함된 하위 명령문을 계산합니다. |
type |
string | 이벤트 유형입니다. 유효한 값은 record 또는 heartbeat 입니다. |
Aurora MySQL의 databaseActivityEventList 필드
Aurora MySQL에 대한 databaseActivityEventList
필드는 다음과 같습니다.
필드 | 데이터 형식 | 설명 |
---|---|---|
class |
string |
활동 이벤트의 클래스입니다. Aurora MySQL에 유효한 값은 다음과 같습니다.
|
clientApplication |
string | 클라이언트가 보고한 대로 클라이언트가 연결에 사용한 애플리케이션입니다. 클라이언트는 이 정보를 제공할 필요가 없으므로 값은 null일 수 있습니다. |
command |
string |
SQL 문의 일반 범주입니다. 이 필드의 값은
|
commandText |
string |
Aurora MySQL의 경우 따옴표와 같은 문자 앞에는 이스케이프 문자를 나타내는 백슬래시가 옵니다. 중요각 문의 전체 SQL 텍스트는 중요한 데이터를 포함하여 감사 로그에 표시됩니다. 그러나 데이터베이스 사용자 암호는 다음 SQL 문에서와 같이 Aurora가 컨텍스트에서 판별할 수 있는 경우 수정됩니다.
참고보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다. |
databaseName |
문자열 | 사용자가 연결된 데이터베이스입니다. |
dbProtocol |
string | 데이터베이스 프로토콜. Aurora MySQL의 경우 현재 이 값은 항상 MySQL 입니다. |
dbUserName |
string | 클라이언트가 인증한 데이터베이스 사용자. |
endTime (버전 1.2 데이터베이스 활동 레코드만 해당) |
string |
SQL 문의 실행이 끝난 시간입니다. 협정 세계시(UTC) 형식으로 표시됩니다. SQL 문의 실행 시간을 계산하려면 |
errorMessage (버전 1.1 데이터베이스 작업 레코드만 해당) |
string |
오류가 발생할 경우 DB 서버에서 생성된 오류 메시지로 이 필드가 채워집니다. 오류가 발생하지 않은 정상적인 문의 경우 오류는 클라이언트에 표시되는 심각도 수준 백그라운드 체크포인터 프로세스 오류와 같은 내부 MySQL 서버 오류는 오류 메시지를 생성하지 않습니다. 그러나 이러한 이벤트에 대한 레코드는 로그 심각도 수준의 설정에 관계없이 생성됩니다. 이로 인해 공격자가 로깅을 해제하여 탐지를 방지할 수 없습니다.
|
exitCode |
int | 세션 종료 레코드에 사용되는 값. 정리 종료의 경우, 여기에 종료 코드가 포함됩니다. 일부 결함 시나리오에서는 종료 코드를 항상 얻을 수 있는 것은 아닙니다. 이 경우 이 값은 0이거나 비어 있을 수 있습니다. |
logTime |
string | 감사 코드 경로에 기록된 타임스탬프. 협정 세계시(UTC) 형식으로 표시됩니다. 문 기간을 계산하는 가장 정확한 방법은 startTime 및 endTime 필드를 참조하십시오. |
netProtocol |
string | 네트워크 통신 프로토콜. Aurora MySQL의 경우 현재 이 값은 항상 TCP 입니다. |
objectName |
string | SQL 문이 하나에서 작동하는 경우 데이터베이스 객체의 이름. 이 필드는 SQL 문이 데이터베이스 객체에서 작동하는 경우에만 사용됩니다. SQL 문이 객체에서 작동하지 않는 경우, 이 값은 비어 있습니다. 객체의 정규화된 이름을 구성하려면 databaseName 과 objectName 을 결합합니다. 쿼리에 여러 객체가 포함된 경우 이 필드는 쉼표로 구분된 이름 목록이 될 수 있습니다. |
objectType |
string |
테이블, 인덱스 등의 데이터베이스 객체 유형입니다. 이 필드는 SQL 문이 데이터베이스 객체에서 작동하는 경우에만 사용됩니다. SQL 문이 객체에서 작동하지 않는 경우, 이 값은 null입니다. Aurora MySQL에 유효한 값은 다음과 같습니다.
|
paramList |
string | 이 필드는 Aurora MySQL에 사용되지 않으며 항상 null입니다. |
pid |
int | 클라이언트 연결 서비스를 위해 할당된 백엔드 프로세스의 프로세스 ID입니다. 데이터베이스 서버가 다시 시작되면 pid 가 변경되고 statementId 필드의 카운터가 다시 시작됩니다. |
remoteHost |
string | SQL 문을 실행한 클라이언트의 IP 주소 또는 호스트 이름입니다. Aurora MySQL의 경우 데이터베이스의 skip_name_resolve 파라미터 설정에 따라 사용되는 값이 달라집니다. localhost 값은 rdsadmin 특수 사용자의 활동을 나타냅니다. |
remotePort |
string | 클라이언트 포트 번호. |
rowCount |
int | SQL 문에 의해 영향을 받거나 검색된 테이블 행 수입니다. 이 필드는 데이터 조작 언어(DML) 문인 SQL 문에만 사용됩니다. SQL 문이 DML 문이 아닌 경우 이 값은 null입니다. |
serverHost |
string | 데이터베이스 서버 인스턴스 식별자입니다. |
serverType |
문자열 | 데이터베이스 서버 유형(예: MySQL ). |
serverVersion |
string | 데이터베이스 서버 버전. Aurora MySQL의 경우 현재 이 값은 항상 MySQL 5.7.12 입니다. |
serviceName |
string | 서비스의 이름입니다. Aurora MySQL의 경우 현재 이 값은 항상 Amazon Aurora MySQL 입니다. |
sessionId |
int | 의사 고유 세션 식별자. |
startTime (버전 1.1 데이터베이스 작업 레코드만 해당) |
string |
SQL 문의 실행이 시작된 시간입니다. 협정 세계시(UTC) 형식으로 표시됩니다. SQL 문의 실행 시간을 계산하려면 |
statementId |
int | 클라이언트의 SQL 문에 대한 식별자입니다. 카운터는 클라이언트가 입력한 각 SQL 문 단위로 증가합니다. DB 인스턴스를 다시 시작하면 카운터가 재설정됩니다. |
substatementId |
int | SQL 하위 문에 대한 식별자입니다. 이 값은 MAIN 클래스가 있는 이벤트의 경우 1이고, AUX 클래스가 있는 이벤트의 경우 2입니다. statementId 필드를 사용하여 동일한 문에 의해 생성된 모든 이벤트를 식별합니다. |
transactionId (버전 1.2 데이터베이스 활동 레코드만 해당) |
int | 트랜잭션의 식별자입니다. |
type |
string | 이벤트 유형입니다. 유효한 값은 record 또는 heartbeat 입니다. |