데이터베이스 활동 스트림에 대한 databaseActivityEventList JSON 배열 - Amazon Aurora

데이터베이스 활동 스트림에 대한 databaseActivityEventList JSON 배열

감사 로그 페이로드는 암호화된 databaseActivityEventList JSON 배열입니다. 다음 에는 감사 로그의 복호화된 DatabaseActivityEventList 배열에 있는 각 활동 이벤트의 필드가 알파벳 순으로 나열되어 있습니다. 이 필드는 Aurora PostgreSQL을 사용하는지 Aurora MySQL을 사용하는지에 따라 다릅니다. 해당 데이터베이스 엔진에 적용되는 표를 참조하십시오.

중요

이벤트 구조는 변경될 수 있습니다. Aurora는 향후 활동 이벤트에 새 필드를 추가할 수 있습니다. JSON 데이터를 구문 분석하는 애플리케이션에서 코드는 알 수 없는 필드 이름에 대해 무시할 수 있는지 또는 적절한 작업을 수행할 수 있는지 확인합니다.

Aurora PostgreSQL의 databaseActivityEventList 필드

Aurora PostgreSQL에 대한 databaseActivityEventList 필드는 다음과 같습니다.

필드 데이터 형식 설명
class string

활동 이벤트의 클래스입니다. Aurora PostgreSQL에 유효한 값은 다음과 같습니다.

  • ALL

  • CONNECT – 연결 또는 연결 해제 이벤트.

  • DDLROLE 클래스의 문 목록에 포함되지 않은 DDL 문.

  • FUNCTION – 함수 호출 또는 DO 블록.

  • MISCDISCARD, FETCH, CHECKPOINT 또는 VACUUM 같은 기타 명령

  • NONE

  • READ – 소스가 관계 또는 쿼리인 경우 SELECT 또는 COPY 문입니다.

  • ROLEGRANT, REVOKE, CREATE/ALTER/DROP ROLE을 포함한 역할 및 권한과 관련된 문.

  • WRITE – 대상이 관계인 경우 INSERT, UPDATE, DELETE, TRUNCATE 또는 COPY 문.

clientApplication string 클라이언트가 보고한 대로 클라이언트가 연결에 사용한 애플리케이션입니다. 클라이언트는 이 정보를 제공할 필요가 없으므로 값은 null일 수 있습니다.
command string 명령 세부 정보가 없는 SQL 명령의 이름.
commandText string

사용자가 전달한 실제 SQL 문. Aurora PostgreSQL의 경우 값은 원래 SQL 문과 동일합니다. 이 필드는 연결 또는 연결 해제 레코드를 제외한 모든 유형의 레코드에 사용되며 이 경우 값은 null입니다.

중요

각 문의 전체 SQL 텍스트는 중요한 데이터를 포함하여 활동 스트림 감사 로그에 표시됩니다. 그러나 데이터베이스 사용자 암호는 다음 SQL 문에서와 같이 Aurora가 컨텍스트에서 판별할 수 있는 경우 수정됩니다.

ALTER ROLE role-name WITH password
databaseName string 사용자가 연결된 데이터베이스입니다.
dbProtocol string 데이터베이스 프로토콜입니다(예: Postgres 3.0).
dbUserName string 클라이언트가 인증한 데이터베이스 사용자.
errorMessage

(버전 1.1 데이터베이스 작업 레코드만 해당)

string

오류가 발생할 경우 DB 서버에서 생성된 오류 메시지로 이 필드가 채워집니다. 오류가 발생하지 않은 정상적인 문의 경우 errorMessage 값은 null입니다.

오류는 클라이언트에 표시되는 심각도 수준 ERROR 이상의 PostgreSQL 오류 로그 이벤트를 생성하는 모든 활동으로 정의됩니다. 자세한 내용은 PostgreSQL 메시지 심각도 수준을 참조하십시오. 예를 들어, 구문 오류 및 쿼리 취소는 오류 메시지를 생성합니다.

백그라운드 체크포인터 프로세스 오류와 같은 내부 PostgreSQL 서버 오류는 오류 메시지를 생성하지 않습니다. 그러나 이러한 이벤트에 대한 레코드는 로그 심각도 수준의 설정에 관계없이 생성됩니다. 이로 인해 공격자가 로깅을 해제하여 탐지를 방지할 수 없습니다.

exitCode 필드도 참조하십시오.

exitCode int 세션 종료 레코드에 사용되는 값. 정리 종료의 경우, 여기에 종료 코드가 포함됩니다. 일부 결함 시나리오에서는 종료 코드를 항상 얻을 수 있는 것은 아닙니다. PostgreSQL이 exit()을 수행하거나 연산자가 kill -9 같은 명령을 수행하는 경우가 그 예입니다.

오류가 발생할 경우 PostgreSQL 오류 코드에 나열된 SQL 오류 코드 SQLSTATEexitCode 필드에 표시됩니다.

errorMessage 필드도 참조하십시오.

logTime string 감사 코드 경로에 기록된 타임스탬프. SQL 문의 실행이 종료된 시간을 나타냅니다. startTime 필드도 참조하십시오.
netProtocol string 네트워크 통신 프로토콜.
objectName string SQL 문이 하나에서 작동하는 경우 데이터베이스 객체의 이름. 이 필드는 SQL 문이 데이터베이스 객체에서 작동하는 경우에만 사용됩니다. SQL 문이 객체에서 작동하지 않는 경우, 이 값은 null입니다.
objectType string 테이블, 인덱스, 뷰 등의 데이터베이스 객체 유형입니다. 이 필드는 SQL 문이 데이터베이스 객체에서 작동하는 경우에만 사용됩니다. SQL 문이 객체에서 작동하지 않는 경우, 이 값은 null입니다. 유효한 값은 다음과 같습니다.
  • COMPOSITE TYPE

  • FOREIGN TABLE

  • FUNCTION

  • INDEX

  • MATERIALIZED VIEW

  • SEQUENCE

  • TABLE

  • TOAST TABLE

  • VIEW

  • UNKNOWN

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 문의 대략적인 실행 시간을 계산하려면 logTime - startTime을 사용합니다. logTime 필드도 참조하십시오.

statementId int 클라이언트의 SQL 문에 대한 식별자입니다. 카운터는 세션 수준에 있으며 클라이언트가 입력한 각 SQL 문 단위로 증가합니다.
substatementId int SQL 하위 문에 대한 식별자입니다. 이 값은 statementId 필드로 식별되는 각 SQL 문에 대해 포함된 하위 명령문을 계산합니다.
type string 이벤트 유형입니다. 유효한 값은 record 또는 heartbeat입니다.

Aurora MySQL의 databaseActivityEventList 필드

Aurora MySQL에 대한 databaseActivityEventList 필드는 다음과 같습니다.

필드 데이터 형식 설명
class string

활동 이벤트의 클래스입니다.

Aurora MySQL에 유효한 값은 다음과 같습니다.

  • MAIN – SQL 문을 나타내는 기본 이벤트입니다.

  • AUX – 추가 세부 정보를 포함하는 보충 이벤트입니다. 예를 들어 객체의 이름을 바꾸는 문에는 새 이름을 반영하는 AUX 클래스가 포함된 이벤트가 있을 수 있습니다.

    동일한 문에 해당하는 MAINAUX 이벤트를 찾으려면 pid 필드와 statementId 필드에 대해 동일한 값을 가진 다른 이벤트를 확인합니다.

clientApplication string 클라이언트가 보고한 대로 클라이언트가 연결에 사용한 애플리케이션입니다. 클라이언트는 이 정보를 제공할 필요가 없으므로 값은 null일 수 있습니다.
command string

SQL 문의 일반 범주입니다. 이 필드의 값은 class 값에 따라 달라집니다.

classMAIN인 경우 값에는 다음이 포함됩니다.

  • CONNECT – 클라이언트 세션이 연결된 경우.

  • QUERY – SQL 문. class 값이 AUX인 하나 이상의 이벤트가 포함됩니다.

  • DISCONNECT – 클라이언트 세션의 연결이 끊어진 경우.

  • FAILED_CONNECT – 클라이언트가 연결을 시도하지만 연결할 수 없는 경우.

  • CHANGEUSER – MySQL 네트워크 프로토콜에 속하는 상태 변경으로, 사용자가 실행한 문이 아닌 경우.

classAUX인 경우 값에는 다음이 포함됩니다.

  • READ – 소스가 관계 또는 쿼리인 경우 SELECT 또는 COPY 문입니다.

  • WRITE – 대상이 관계인 경우 INSERT, UPDATE, DELETE, TRUNCATE 또는 COPY 문.

  • DROP – 객체 삭제.

  • CREATE – 객체 생성.

  • RENAME – 객체 이름 바꾸기.

  • ALTER – 객체의 속성 변경.

commandText string

class 값이 MAIN인 이벤트의 경우 이 필드는 사용자가 전달한 실제 SQL 문을 나타냅니다. 이 필드는 연결 또는 연결 해제 레코드를 제외한 모든 유형의 레코드에 사용되며 이 경우 값은 null입니다.

class 값이 AUX인 이벤트의 경우 이 필드에는 이벤트와 관련된 객체에 대한 보충 정보가 포함됩니다.

Aurora MySQL의 경우 따옴표와 같은 문자 앞에는 이스케이프 문자를 나타내는 백슬래시가 옵니다.

중요

각 문의 전체 SQL 텍스트는 중요한 데이터를 포함하여 감사 로그에 표시됩니다. 그러나 데이터베이스 사용자 암호는 다음 SQL 문에서와 같이 Aurora가 컨텍스트에서 판별할 수 있는 경우 수정됩니다.

mysql> SET PASSWORD = 'my-password';
참고

보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

databaseName 문자열 사용자가 연결된 데이터베이스입니다.
dbProtocol string 데이터베이스 프로토콜. Aurora MySQL의 경우 현재 이 값은 항상 MySQL입니다.
dbUserName string 클라이언트가 인증한 데이터베이스 사용자.
endTime

(버전 1.2 데이터베이스 활동 레코드만 해당)

string

SQL 문의 실행이 끝난 시간입니다. 협정 세계시(UTC) 형식으로 표시됩니다.

SQL 문의 실행 시간을 계산하려면 endTime - startTime을 사용합니다. startTime 필드도 참조하십시오.

errorMessage

(버전 1.1 데이터베이스 작업 레코드만 해당)

string

오류가 발생할 경우 DB 서버에서 생성된 오류 메시지로 이 필드가 채워집니다. 오류가 발생하지 않은 정상적인 문의 경우 errorMessage 값은 null입니다.

오류는 클라이언트에 표시되는 심각도 수준 ERROR 이상의 MySQL 오류 로그 이벤트를 생성하는 모든 활동으로 정의됩니다. 자세한 내용은 MySQL 참조 설명서The Error Log를 참조하세요. 예를 들어, 구문 오류 및 쿼리 취소는 오류 메시지를 생성합니다.

백그라운드 체크포인터 프로세스 오류와 같은 내부 MySQL 서버 오류는 오류 메시지를 생성하지 않습니다. 그러나 이러한 이벤트에 대한 레코드는 로그 심각도 수준의 설정에 관계없이 생성됩니다. 이로 인해 공격자가 로깅을 해제하여 탐지를 방지할 수 없습니다.

exitCode 필드도 참조하십시오.

exitCode int 세션 종료 레코드에 사용되는 값. 정리 종료의 경우, 여기에 종료 코드가 포함됩니다. 일부 결함 시나리오에서는 종료 코드를 항상 얻을 수 있는 것은 아닙니다. 이 경우 이 값은 0이거나 비어 있을 수 있습니다.
logTime string 감사 코드 경로에 기록된 타임스탬프. 협정 세계시(UTC) 형식으로 표시됩니다. 문 기간을 계산하는 가장 정확한 방법은 startTimeendTime 필드를 참조하십시오.
netProtocol string 네트워크 통신 프로토콜. Aurora MySQL의 경우 현재 이 값은 항상 TCP입니다.
objectName string SQL 문이 하나에서 작동하는 경우 데이터베이스 객체의 이름. 이 필드는 SQL 문이 데이터베이스 객체에서 작동하는 경우에만 사용됩니다. SQL 문이 객체에서 작동하지 않는 경우, 이 값은 비어 있습니다. 객체의 정규화된 이름을 구성하려면 databaseNameobjectName을 결합합니다. 쿼리에 여러 객체가 포함된 경우 이 필드는 쉼표로 구분된 이름 목록이 될 수 있습니다.
objectType string

테이블, 인덱스 등의 데이터베이스 객체 유형입니다. 이 필드는 SQL 문이 데이터베이스 객체에서 작동하는 경우에만 사용됩니다. SQL 문이 객체에서 작동하지 않는 경우, 이 값은 null입니다.

Aurora MySQL에 유효한 값은 다음과 같습니다.

  • INDEX

  • TABLE

  • UNKNOWN

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 문의 실행 시간을 계산하려면 endTime - startTime을 사용합니다. endTime 필드도 참조하십시오.

statementId int 클라이언트의 SQL 문에 대한 식별자입니다. 카운터는 클라이언트가 입력한 각 SQL 문 단위로 증가합니다. DB 인스턴스를 다시 시작하면 카운터가 재설정됩니다.
substatementId int SQL 하위 문에 대한 식별자입니다. 이 값은 MAIN 클래스가 있는 이벤트의 경우 1이고, AUX 클래스가 있는 이벤트의 경우 2입니다. statementId 필드를 사용하여 동일한 문에 의해 생성된 모든 이벤트를 식별합니다.
transactionId

(버전 1.2 데이터베이스 활동 레코드만 해당)

int 트랜잭션의 식별자입니다.
type string 이벤트 유형입니다. 유효한 값은 record 또는 heartbeat입니다.