데이터베이스 활동 스트림 개요 - Amazon Relational Database Service

데이터베이스 활동 스트림 개요

Amazon RDS 데이터베이스 관리자는 데이터베이스를 보호하고 규정 준수 및 규제 요건을 충족해야 합니다. 한 가지 전략은 데이터베이스 활동 스트림을 모니터링 도구와 통합하는 것입니다. 이렇게 하면 데이터베이스에서 감사 활동에 대한 경보를 모니터링하고 설정할 수 있습니다.

보안 위협은 외부 및 내부 위협입니다. 내부 위협으로부터 보호하기 위해 데이터베이스 활동 스트림 기능을 구성하여 데이터 스트림에 대한 관리자 액세스를 제어할 수 있습니다. Amzon RDS DBA는 스트림의 수집, 전송, 저장 및 처리에 대한 액세스 권한이 없습니다.

데이터베이스 활동 스트림 작동 방식

Amazon RDS는 활동을 Amazon Kinesis 데이터 스트림에 거의 실시간으로 푸시합니다. Kinesis 스트림이 자동으로 생성됩니다. Kinesis에서 Amazon Data Firehose 및 AWS Lambda와 같은 AWS 서비스를 구성하여 스트림을 사용하고 데이터를 저장할 수 있습니다.

중요

Amazon RDS에서 데이터베이스 활동 스트림은 무료 기능이지만, Amazon Kinesis는 데이터 스트림에 대한 요금을 부과합니다. 자세한 내용은 Amazon Kinesis Data Streams 요금을 참조하세요.

규정 준수 관리용 애플리케이션이 데이터베이스 활동 스트림을 사용하도록 구성할 수 있습니다. 이 애플리케이션은 스트림을 사용하여 데이터베이스에 대한 경보를 생성하고 활동 감사를 수행할 수 있습니다.

Amazon RDS는 다중 AZ 배포에서 데이터베이스 활동 스트림을 지원합니다. 이 경우 데이터베이스 활동 스트림은 기본 인스턴스와 대기 인스턴스를 모두 감사합니다.

Oracle 데이터베이스 및 SQL Server 데이터베이스에서의 감사

감사는 구성된 데이터베이스 작업의 모니터링 및 기록입니다. Amazon RDS는 기본적으로 데이터베이스 활동을 캡처하지 않습니다. 사용자가 데이터베이스에서 직접 감사 정책을 생성하고 관리합니다.

Oracle 데이터베이스의 통합 감사

Oracle 데이터베이스에서 통합 감사 정책은 사용자 동작의 측면을 감사하는 데 사용할 수 있는 명명된 감사 설정 그룹입니다. 정책은 단일 사용자의 활동을 감사하는 것만큼 간단할 수 있습니다. 또한 조건을 사용하는 복잡한 감사 정책을 생성할 수도 있습니다.

Oracle 데이터베이스는 SYS 감사 레코드를 포함한 감사 레코드를 통합 감사 추적에 기록합니다. 예를 들어, INSERT 문 중에 오류가 발생하는 경우 표준 감사는 오류 번호와 실행된 SQL을 보여줍니다. 감사 추적은 AUDSYS 스키마에 있는 읽기 전용 테이블에 상주합니다. UNIFIED_AUDIT_TRAIL 데이터 사전 보기를 쿼리하여 이러한 레코드에 액세스합니다.

일반적으로 데이터베이스 활동 스트림을 다음과 같이 구성합니다.

  1. CREATE AUDIT POLICY 명령을 사용하여 Oracle 데이터베이스 감사 정책을 생성합니다.

    Oracle 데이터베이스는 감사 레코드를 생성합니다.

  2. AUDIT POLICY 명령을 사용하여 감사 정책을 활성화합니다.

  3. 데이터베이스 활동 스트림을 구성합니다.

    Oracle 데이터베이스 감사 정책과 일치하 는 활동만 캡처되어 Amazon Kinesis 데이터 스트림으로 전송됩니다. 데이터베이스 활동 스트림이 활성화된 경우 Oracle 데이터베이스 관리자는 감사 정책을 변경하거나 감사 로그를 제거할 수 없습니다.

통합 감사 정책에 대해 자세히 알아보려면 Oracle Database Security Guide에서 About Auditing Activities with Unified Audit Policies and AUDIT를 참조하세요.

Microsoft SQL Server에서의 감사

데이터베이스 활동 스트림은 SQLAudit 기능을 사용하여 SQL Server 데이터베이스를 감사합니다.

RDS for SQL Server 인스턴스에는 다음이 포함되어 있습니다.

  • 서버 감사 - SQL Server 감사는 서버 또는 데이터베이스 수준 작업의 단일 인스턴스와 모니터링할 작업 그룹을 수집합니다. 서버 수준 감사인 RDS_DAS_AUDITRDS_DAS_AUDIT_CHANGES는 RDS에서 관리합니다.

  • 서버 감사 사양 - 서버 감사 사양은 서버 수준 이벤트를 기록합니다. RDS_DAS_SERVER_AUDIT_SPEC 사양을 수정할 수 있습니다. 이 사양은 서버 감사 RDS_DAS_AUDIT과 연결되어 있습니다. RDS_DAS_CHANGES_AUDIT_SPEC 사양은 RDS에서 관리합니다.

  • 데이터베이스 감사 사양 - 데이터베이스 감사 사양은 데이터베이스 수준 이벤트를 기록합니다. 데이터베이스 감사 사양 RDS_DAS_DB_<name>을 생성하여 RDS_DAS_AUDIT 서버 감사에 연결할 수 있습니다.

콘솔 또는 CLI를 사용하여 데이터베이스 활동 스트림을 구성할 수 있습니다. 일반적으로 데이터베이스 활동 스트림을 다음과 같이 구성합니다.

  1. (선택 사항) CREATE DATABASE AUDIT SPECIFICATION 명령을 사용하여 데이터베이스 감사 사양을 생성하고 이를 RDS_DAS_AUDIT 서버 감사에 연결합니다.

  2. (선택 사항) ALTER SERVER AUDIT SPECIFICATION 명령을 사용하여 서버 감사 사양을 수정하고 정책을 정의합니다.

  3. 데이터베이스 및 서버 감사 정책을 활성화합니다. 예:

    ALTER DATABASE AUDIT SPECIFICATION [<Your database specification>] WITH (STATE=ON)

    ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC] WITH (STATE=ON)

  4. 데이터베이스 활동 스트림을 구성합니다.

    서버 및 데이터베이스 감사 정책과 일치하는 활동만 캡처되어 Amazon Kinesis 데이터 스트림으로 전송됩니다. 데이터베이스 활동 스트림이 활성화되고 정책이 잠겨 있는 경우 데이터베이스 관리자는 감사 정책을 변경하거나 감사 로그를 제거할 수 없습니다.

    중요

    특정 데이터베이스에 대한 데이터베이스 감사 사양이 활성화되어 있고 정책이 잠긴 상태이면 데이터베이스를 삭제할 수 없습니다.

SQL Server 감사에 자세한 내용은 Microsoft SQL Server 설명서의 SQL Server Audit 구성 요소를 참조하세요.

Oracle Database 및 SQL Server에 대한 기본이 아닌 감사 필드

데이터베이스 활동 스트림을 시작하면 모든 데이터베이스 이벤트는 해당하는 활동 스트림 이벤트를 생성합니다. 예를 들어 데이터베이스 사용자는 SELECTINSERT 문을 실행합니다. 데이터베이스는 이러한 이벤트를 감사하여 Amazon Kinesis 데이터 스트림으로 전송합니다.

이 이벤트는 스트림에서 JSON 객체로 표현됩니다. JSON 객체는 databaseActivityEventList 배열이 있는 DatabaseActivityMonitoringRecord를 포함합니다. 배열의 미리 정의된 필드는 class, clientApplicationcommand를 포함합니다.

기본적으로 활동 스트림은 엔진 기본 감사 필드를 포함하지 않습니다. engineNativeAuditFields JSON 객체에 이러한 추가 필드가 포함되도록 Amazon RDS for Oracle 및 SQL Server를 구성할 수 있습니다.

Oracle Database에서 통합 감사 추적의 대부분 이벤트는 RDS 데이터 활동 스트림의 필드에 매핑됩니다. 예를 들어, 통합 감사의 UNIFIED_AUDIT_TRAIL.SQL_TEXT 필드는 데이터베이스 활동 스트림의 commandText 필드에 매핑됩니다. 그러나 OS_USERNAME과 같은 Oracle 데이터베이스 감사 필드는 데이터베이스 활동 스트림에 있는 미리 정의된 필드에 매핑되지 않습니다.

SQL Server에서 SQLAudit에 의해 기록되는 대부분의 이벤트 필드는 RDS 데이터베이스 활동 스트림의 필드에 매핑됩니다. 예를 들어, 통합 감사의 sys.fn_get_audit_file에 있는 code 필드는 데이터베이스 활동 스트림의 commandText 필드에 매핑됩니다. 그러나 permission_bitmask와 같은 SQL Server 데이터베이스 감사 필드는 데이터베이스 활동 스트림에 있는 미리 정의된 필드에 매핑되지 않습니다.

databaseActivityEventList에 대한 자세한 내용은 databaseActivityEventList JSON 배열 섹션을 참조하세요.

DB 파라미터 그룹 재정의

일반적으로 파라미터 그룹을 연결하여 RDS for Oracle에서 통합 감사를 활성화합니다. 그러나 데이터베이스 활동 스트림에는 추가 구성이 필요합니다. 고객 경험을 개선하기 위해 Amazon RDS는 다음을 수행합니다.

  • 활동 스트림을 활성화하면 RDS for Oracle은 파라미터 그룹의 감사 파라미터를 무시합니다.

  • 활동 스트림을 비활성화하면 RDS for Oracle은 감사 파라미터 무시를 중단합니다.

SQL Server에 대한 데이터베이스 활동 스트림은 SQL Audit 옵션에서 설정한 파라미터와는 독립적입니다.

데이터베이스 활동 스트림에 대한 비동기식 모드

Amazon RDS의 활동 스트림은 항상 비동기식입니다. 데이터베이스 세션이 활동 스트림 이벤트를 생성하면 세션은 즉시 정상 활동으로 되돌아갑니다. Amazon RDS는 백그라운드에서 내구성 있는 레코드에 활동 스트림 이벤트를 생성합니다.

백그라운드 태스크에서 오류가 발생하면 Amazon RDS가 이벤트를 생성합니다. 이 이벤트는 활동 스트림 이벤트 레코드가 분실되었을 수있는 기간의 시작과 끝을 나타냅니다. 비동기 모드는 활동 스트림의 정확성보다 데이터베이스 성능을 우선시합니다.

데이터베이스 활동 스트림의 요구 사항 및 제한 사항

RDS에서 데이터베이스 활동 스트림에는 다음과 같은 요구 사항과 제한 사항이 있습니다.

  • 데이터베이스 활동 스트림에는 Amazon Kinesis를 사용해야 합니다.

  • 데이터베이스 활동 스트림은 항상 암호화되므로 AWS Key Management Service(AWS KMS)를 사용해야 합니다.

  • Amazon Kinesis 데이터 스트림에 추가 암호화를 적용하는 것은 이미 AWS KMS 키를 사용하여 암호화된 데이터베이스 활동 스트림과 호환되지 않습니다.

  • 사용자가 직접 감사 정책을 생성하고 관리합니다. Amazon Aurora와 달리 RDS for Oracle은 기본적으로 데이터베이스 활동을 캡처하지 않습니다.

  • 사용자가 직접 감사 정책 또는 사양을 생성하고 관리합니다. Amazon Aurora와 달리 Amazon RDS는 기본적으로 데이터베이스 활동을 캡처하지 않습니다.

  • 다중 AZ 배포에서 기본 DB 인스턴스에서만 데이터베이스 활동 스트림을 시작합니다. 활동 스트림은 기본 DB 인스턴스와 대기 DB 인스턴스를 모두 자동으로 감사합니다. 장애 조치 중에는 추가 단계가 필요 없습니다.

  • DB 인스턴스의 이름을 변경해도 새 Kinesis 스트림이 생성되지는 않습니다.

  • CDB는 RDS for Oracle에 대해 지원되지 않습니다.

  • 읽기 전용 복제본은 지원되지 않습니다.

리전 및 버전 사용 가능 여부

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전마다 다릅니다. 데이터베이스 활동 스트림의 버전 및 지역 가용성에 대한 자세한 내용은 데이터베이스 활동 스트림 단원을 참조하세요.

데이터베이스 활동 스트림이 지원되는 DB 인스턴스 클래스

RDS for Oracle의 경우 다음 DB 인스턴스 클래스와 함께 데이터베이스 활동 스트림을 사용할 수 있습니다.

  • db.m4.*large

  • db.m5.*large

  • db.m5d.*large

  • db.m6i.*large

  • db.r4.*large

  • db.r5.*large

  • db.r5.*large.tpc*.mem*x

  • db.r5b.*large

  • db.r5b.*large.tpc*.mem*x

  • db.r5d.*large

  • db.r6i.*large

  • db.x2idn.*large

  • db.x2iedn.*large

  • db.x2iezn.*large

  • db.z1d.*large

RDS for sQL Server의 경우 다음 DB 인스턴스 클래스와 함께 데이터베이스 활동 스트림을 사용할 수 있습니다.

  • db.m4.*large

  • db.m5.*large

  • db.m5d.*large

  • db.m6i.*large

  • db.r4.*large

  • db.r5.*large

  • db.r5b.*large

  • db.r5d.*large

  • db.r6i.*large

  • db.x1e.*large

  • db.z1d.*large

인스턴스 클래스 유형에 대한 자세한 내용은 DB 인스턴스 클래스 섹션을 참조하세요.