Docs Menu

Atlas の監査とログ記録に関するガイダンス

Atlas プラットフォームのアクティビティを監視およびログには、 監査とログ を使用します。

M10+ クラスターで利用可能で、データベース監査により、複数のユーザーがいるデプロイメントのシステムアクティビティを追跡できます。Atlas の管理者として、次の操作を実行することができます。

  • Atlas のデフォルトの監査設定に依存します。デフォルトでは 、Atlas は M10+ クラスターでデータベース認証を実行して、次に関連する認証イベントをレコード。

    • database users

    • ソースIPアドレス

    • 成功した試行と失敗した試行のタイムスタンプ

  • MongoDBの監査をカスタマイズするには、JSON形式の監査フィルターを構成し、監査したいアクション、データベースユーザー、Atlasロール、およびLDAPグループを選択します。カスタム監査フィルターを作成すると、管理された Atlas UI 監査フィルタービルダーの使用を省略し、イベント監査のための独自のカスタマイズされたフィルターを設定できます。監査用に構成できるイベントの完全なリストと例については、MongoDB監査および監査フィルターの例を参照してください。

    Atlas では文書化されたシステムイベントアクションのほとんどの 手動監査 を構成できます。MongoDBデータベースをきめ細やかに監査すると、すべての DDL (データ定義言語)、DML (データ操作言語)、および DCL (データ制御言語)コマンドの使用状況を詳細に追跡できます。「 データベース監査の設定 」も参照してください。

Atlas は、過去 30 日間のログ メッセージとシステム イベント監査メッセージを保持します。Atlas ログは、Atlas UI、Atlas Administration API、および Atlas CLI を使用して、保持期間が終了するまでいつでもダウンロードできます。

詳しくは、「MongoDB ログの表示とダウンロード」を参照してください。

監査構成は、プロジェクトごとに確認して更新できます。次の Atlas CLI コマンドを使用します。

Atlas CLI、 Atlas Administration API、または Atlas UIを使用して、ユーザーがクラスターに対して行う認証試行を表示できます。Atlas は、各試行のタイムスタンプや認証を試みたユーザーなど、成功および失敗した認証試行の両方を記録します。

Atlas CLI、 Atlas Administration API、または Atlas UIを使用して、組織またはプロジェクトのアクティビティフィードを表示およびフィルタリングすることもできます。アクティビティフィードには、組織またはプロジェクトレベルのすべてのイベントが一覧表示されます。

完全な監査するを実行するには、監査するログ、MongoDBログメッセージプロジェクトおよび組織のアクティビティフィードの組み合わせを使用できます。

クラスターをプロビジョニングするときに、データベース監査を設定することをお勧めします。監査により、クラスターへの追加の負荷がかかり、コストが増加します。コストを最適化するために、開発環境の低地で監査を無効にすることができます。ヘルスチェックや金融サービスなどの特定の業界では、コンプライアンスの理由から、開発環境で監査を有効にしておくことが選択される場合があります。

アプリケーションサービスユーザーを含むすべてのデータベースユーザーを監査する機能を有効にすると、クラスターのパフォーマンスに影響を与える可能性があります。監査が必要なユーザーのアクションのみを監査することをお勧めします。

ステージング環境および本番環境では、セキュリティを強化するために 監査 を有効にします。

少なくとも次のイベントを監査することをお勧めします。

  • ログオンに失敗しました

  • セッション アクティビティ

  • ログオンとログオフ

  • 不正な機能を実行しようとすると、

  • パスワードの変更

  • データベースユーザーアクセスの変更

  • DDL およびシステム構成の保存手順

  • ネイティブ監査の修正

  • バックアップまたは復元操作を実行する

  • DBMS ネイティブ監査設定の変更

  • セキュリティの変更

  • データベースの起動コマンドと停止コマンドの実行

以前のすべてのイベントについては、少なくとも次の情報を監査するログに含める必要があります。

  • セッションID

  • クライアントのホスト名とIPアドレス

  • データベースサーバーのホスト名とIPアドレス

  • データベースユーザー

  • databaseName

  • OS ユーザー

  • サービス/インスタンス名

  • ポート

  • アプリケーション

  • クエリ

  • SQLコマンド

  • オブジェクト

  • タイムスタンプ

  • エラー コード(該当する場合)

組み込みの統合以外のツールと統合するには、次のプログラムツールを使用してログを検索し、JSON形式の出力を外部ツールに送信することをお勧めします。

次の例では、Atlas の自動化ツールを使用してログを検索およびダウンロードし、監査を設定する方法を示します。

次の例に加えて、ブログ記事「HashiCorp Terraform を使用した Atlas プッシュベースのログエクスポートによる Amazon S3 へのログ管理の効率化」を参照してください。

プロジェクト内の既知のユーザーのすべての認証イベントを監査するには、次の Atlas CLI コマンドを実行してください。

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

次の Atlas CLI コマンドを実行し、構成ファイル経由で既知のユーザーを監査する。

atlas auditing update -f filter.json

指定されたatlas プロジェクトの監査構成を取得するには、atlas auditing describe Atlas CLI コマンドを実行してください。

atlas auditing describe --output json

監査するフィルター を作成して、 テストデータベースに対して発生する認証操作のみを監査する。詳細については、監査フィルターの構成を参照してください。

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

作成した監査するフィルターを使用するには、Atlas auditing update 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 Administration APIエンドポイントを使用します。