Docs Menu

Atlas 감사 및 로깅을 위한 지침

Atlas 플랫폼 활동을 모니터 하고 로그 하려면 감사 및 로그를 사용하세요.

M10+ 클러스터에서 사용할 수 있는 데이터베이스 감사를 통해 다중 사용자가 있는 배포의 시스템 활동을 추적할 수 있습니다. Atlas 관리자로서 다음 작업을 수행할 수 있습니다.

  • Atlas 의 기본값 감사 설정을 활용하세요. 기본값 으로 Atlas M10+ 클러스터에서 데이터베이스 인증 감사를 수행하여 다음과 관련된 인증 이벤트를 포함하여 인증 이벤트를 기록 .

    • database users

    • 소스 IP 주소

    • 성공적인 및 실패 시도에 대한 타임스탬프

  • JSON 형식의 감사 필터를 구성하세요 MongoDB 감사를 맞춤 설정하고 감사할 작업,데이터베이스 사용자, Atlas 역할 및 LDAP 그룹을 선택하세요. 사용자 지정 감사 필터를 만들면 관리형 Atlas UI 감사 필터 빌더를 건너뛰고 고유한 맞춤형 이벤트 감사 필터를 구성할 수 있습니다. 감사를 구성할 수 있는 이벤트의 전체 목록과 예시 목록은 MongoDB 감사감사 필터 예시를 참조하세요.

    Atlas 에서 문서화된 대부분의 시스템 이벤트 조치 에 대한 수동 감사를 구성 할 수 있습니다. 세분화된 MongoDB database 감사를 통해 모든 DDL(데이터 정의 언어) , DML(데이터 조작 언어) 및 DCL(데이터 제어 언어) 명령의 사용량을 자세히 추적 할 수 있습니다. 데이터베이스 감사 설정도 참조하세요.

Atlas는 최근 30 일간의 로그 메시지 및 시스템 이벤트 감사 메시지를 보관합니다. Atlas UI, Atlas API 및 Atlas CLI를 사용하여 보존 기간이 끝날 때까지 언제든지 Atlas 로그를 다운로드할 수 있습니다.

자세한 내용은 MongoDB 로그 보기 및 다운로드를 참조하세요.

프로젝트 별로 감사 구성을 검토 하고 업데이트 할 수 있습니다. 다음 Atlas CLI 명령을 사용합니다.

Atlas CLI, Atlas 관리 API 또는 Atlas UI 사용하여 사용자가 클러스터에 대해 수행하는 인증 시도 를 볼 수 있습니다. Atlas 각 시도의 타임스탬프와 인증을 시도한 사용자를 포함하여 인증 시도 성공적인 및 실패를 모두 기록합니다.

Atlas CLI, Atlas 관리 API 또는 Atlas UI 사용하여 조직 또는 프로젝트 의 활동 피드 보고 필터하다 할 수도 있습니다. 활동 피드 조직 또는 프로젝트 수준의 모든 이벤트가 나열됩니다.

전체 감사 수행하려면 감사 로그, MongoDB 로그 메시지, 프로젝트 및 조직 활동 피드 조합하여 사용할 수 있습니다.

클러스터를 프로비저닝할 때 데이터베이스 감사를 설정하다 것이 좋습니다. 감사는 클러스터에 추가 부하를 가하고 비용을 증가시킵니다. 비용을 최적화하기 위해 개발을 위해 하위 환경에서 감사를 비활성화할 수 있습니다. 의료 및 금융 서비스와 같은 특정 산업에서는 컴플라이언스 위해 개발 환경에서 감사를 계속 활성화하도록 선택할 수 있습니다.

애플리케이션 서비스 사용자를 포함한 모든 데이터베이스 사용자에 대해 감사를 사용하도록 설정하면 클러스터 성능에 영향을 미칠 수 있습니다. 감사가 필요한 사용자 작업만 감사할 것을 권장합니다.

스테이징 및 프로덕션 환경의 경우 추가 보안을 위해 감사를 활성화 .

다음 이벤트는 최소한 감사 하는 것이 좋습니다.

  • 로그인 실패하였습니다.

  • 세션 활동

  • 로그온 및 로그오프

  • 승인되지 않은 기능을 수행하려고 시도하는 경우

  • 비밀번호 변경

  • 데이터베이스 사용자 액세스 변경 사항

  • DDL & 시스템 구성 저장 프로시저

  • 네이티브 감사 수정

  • 백업 또는 복원 작업 수행

  • DBMS 네이티브 감사 설정을 변경하기

  • 보안 수정

  • 데이터베이스 시작 및 중지 명령 실행

이전 모든 이벤트에 대해 감사 로그 에 최소한 다음 정보를 포함해야 합니다.

  • 세션 ID

  • 클라이언트 호스트 이름 및 IP 주소

  • 데이터베이스 서버 호스트 이름 및 IP 주소

  • 데이터베이스 사용자

  • 데이터베이스 이름

  • OS 사용자

  • 서비스/인스턴스 이름

  • 포트

  • 애플리케이션

  • 쿼리

  • SQL 명령

  • 객체

  • 타임스탬프

  • 오류 코드(해당되는 경우)

기본 제공 통합 외의 도구와 통합하려면, 다음 프로그래밍 도구를 사용하여 로그를 조회하고 JSON 형식의 출력을 외부 도구에 전달하는 것이 좋습니다:

Terraform 예제를 통해 모든 기둥에 걸쳐 Staging/Prod 권장 사항을 한 곳에서 시행하는 방법을 Github에서 확인하세요.

다음 예제에서는 자동화 위한 Atlas 도구를 사용하여 로그를 조회 및 다운로드 하고 감사를 구성하는 방법을 보여 줍니다.

다음 예시 외에도 HashiCorp Terraform과 Atlas 푸시 기반 로그 내보내기를 사용하여 Amazon S3 로그 관리를 간소화하는 방법에 대한 블로그 게시물을 참조하세요.

프로젝트에서 알려진 사용자에 대한 모든 인증 이벤트를 감사하려면 다음 Atlas CLI 명령을 실행하십시오:

atlas auditing update --auditFilter '{"atype": "authenticate"}'

다음 Atlas CLI 명령을 실행하여 구성 파일 통해 알려진 사용자를 감사 .

atlas auditing update -f filter.json

atlas auditing describe 명령을 실행하여 지정된 프로젝트에 대한 감사 구성을 반환합니다.

atlas auditing describe --output json

테스트 데이터베이스에 대해 발생하는 인증 작업만 감사하는 감사 필터를 생성합니다. 자세히 알아보려면 감사 필터 구성을 참조하세요.

{ atype: "authenticate", "param.db": "test" }

생성한 감사 필터하다 사용하려면 Atlas auditing 업데이트 Atlas CLI 명령을 사용하여 감사 구성을 업데이트 .

atlas auditing update --auditFilter '{"atype": "authenticate", "param.db": "test"}'

액세스 로그 조회 하려면 다음과 유사한 명령을 사용합니다. 이 명령은 ID 가 618d48e05277a606ed2496fe인 프로젝트 에 대해 이름이 Cluster0 인 클러스터에 대해 수행된 모든 인증 요청의 JSON 형식 목록을 반환합니다.

atlas accesslogs list --output json --projectId 618d48e05277a606ed2496fe --clusterName Cluster0

지정된 조직 에 대한 모든 이벤트를 반환하려면 다음과 유사한 명령을 사용합니다. 이 명령은 ID 가 5dd5a6b6f10fab1d71a58495인 조직 에 대한 JSON 형식의 이벤트 목록을 반환합니다.

atlas events organizations list --orgId 5dd5a6b6f10fab1d71a58495 --output json

다음 Atlas CLI 명령을 실행하여 프로젝트 의 지정된 호스팅하다 에 대한 MongoDB 로그가 포함된 압축 파일 다운로드 .

atlas logs download atlas-lnmtkm-shard-00-00.ajlj3.mongodb.net mongodb.gz --projectId 56fd11f25f23b33ef4c2a331

다음 예시 배포서버 에 대한 감사를 활성화 방법을 보여줍니다. Terraform으로 리소스를 생성하려면 먼저 다음을 수행해야 합니다.

  • 결제 조직 생성 하고 결제 조직에 대한 API 키를 생성 합니다. 터미널에서 다음 명령을 실행 하여 공개 키와 비공개 키를 환경 변수로 저장합니다.

    export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>"
    export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"
  • Terraform을 설치합니다.

감사 필터를 생성하여 문서화된 대부분의 시스템 이벤트 조치 에 대한 수동 감사를 구성할 수 있습니다. 감사 필터 구성에 대해 자세히 학습 감사 필터 구성을 참조하세요.

# Create a project
resource "mongodbatlas_project" "project_test" {
name = var.project_name
org_id = var.org_id
}
# Create a cluster with three nodes
resource "mongodbatlas_advanced_cluster" "cluster_test" {
project_id = mongodbatlas_project.project_test.id
name = var.cluster_name
cluster_type = "REPLICASET"
replication_specs {
region_configs {
priority = 7
provider_name = "AWS"
region_name = "US_EAST_1"
electable_specs {
instance_size = "M10"
node_count = 3
}
}
}
}
# Specify an auditing resource and enable auditing for a project.
# To configure auditing, specify the unique project ID. If you change
# this value to a different "project_id", this deletes the current audit
# settings for the original project.
# "audit_authorization_success" indicates whether the auditing system
# captures successful authentication attempts for audit filters using
# the "atype" : "authCheck" auditing event. Warning! If you set
# "audit_authorization_success" to "true", this can severely impact
# cluster performance. Enable this option with caution.
# "audit_filter" is the JSON-formatted audit filter.
# "enabled" denotes whether or not the project associated with the
# specified "{project_id}"" has database auditing enabled. Defaults to "false".
# Auditing created by API Keys must belong to an existing organization.
# In addition to arguments listed previously, the following attributes
# are exported:
# "configuration_type" denotes the configuration method for the audit filter.
# Possible values are:
# - "NONE" - auditing is not configured for the project.
# - "FILTER_BUILDER" - auditing is configured via the Atlas UI filter builder.
# - "FILTER_JSON" - auditing is configured via a custom filter in Atlas or API.
resource "mongodbatlas_auditing" "test" {
project_id = "mongodbatlas_project.project_test.id"
audit_filter = "{ 'atype': 'authenticate', 'param': { 'user': 'auditAdmin', 'db': 'admin', 'mechanism': 'SCRAM-SHA-1' }}"
audit_authorization_success = false
enabled = true
}

Terraform으로는 로그를 조회 할 수 없습니다. 대신 다음 Atlas 관리 API 엔드포인트를 사용하세요.

  • 액세스 추적 관리자 API 사용하여 클러스터 이름 또는 호스트 이름으로 식별되는 데이터베이스에 대한 모든 인증 시도에 대한 액세스 로그를 반환합니다.

  • Monitoring 및 Logs API 를 사용하여 지정된 호스트에 대한 로그 메시지가 포함된 압축된 로그 파일을 조회합니다.