Atlas の監査とログ記録に関するガイダンス
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 auditing describe は、指定されたプロジェクトの監査構成を返します。
atlas auditing update は、指定されたプロジェクトの監査構成を更新します。
Atlas CLI、 Atlas Administration API、または Atlas UIを使用して、ユーザーがクラスターに対して行う認証試行を表示できます。Atlas は、各試行のタイムスタンプや認証を試みたユーザーなど、成功および失敗した認証試行の両方を記録します。
Atlas CLI、 Atlas Administration API、または Atlas UIを使用して、組織またはプロジェクトのアクティビティフィードを表示およびフィルタリングすることもできます。アクティビティフィードには、組織またはプロジェクトレベルのすべてのイベントが一覧表示されます。
完全な監査するを実行するには、監査するログ、MongoDBログメッセージ、プロジェクトおよび組織のアクティビティフィードの組み合わせを使用できます。
Atlas の監査とログ記録に関する推奨事項
クラスターをプロビジョニングするときに、データベース監査を設定することをお勧めします。監査により、クラスターへの追加の負荷がかかり、コストが増加します。コストを最適化するために、開発環境の低地で監査を無効にすることができます。ヘルスチェックや金融サービスなどの特定の業界では、コンプライアンスの理由から、開発環境で監査を有効にしておくことが選択される場合があります。
アプリケーションサービスユーザーを含むすべてのデータベースユーザーを監査する機能を有効にすると、クラスターのパフォーマンスに影響を与える可能性があります。監査が必要なユーザーのアクションのみを監査することをお勧めします。
ステージング環境および本番環境では、セキュリティを強化するために 監査 を有効にします。
少なくとも次のイベントを監査することをお勧めします。
ログオンに失敗しました
セッション アクティビティ
ログオンとログオフ
不正な機能を実行しようとすると、
パスワードの変更
データベースユーザーアクセスの変更
DDL およびシステム構成の保存手順
ネイティブ監査の修正
バックアップまたは復元操作を実行する
DBMS ネイティブ監査設定の変更
セキュリティの変更
データベースの起動コマンドと停止コマンドの実行
以前のすべてのイベントについては、少なくとも次の情報を監査するログに含める必要があります。
セッションID
クライアントのホスト名とIPアドレス
データベースサーバーのホスト名とIPアドレス
データベースユーザー
databaseName
OS ユーザー
サービス/インスタンス名
ポート
アプリケーション
クエリ
SQLコマンド
オブジェクト
タイムスタンプ
エラー コード(該当する場合)
監査ログへのプログラムによるアクセス
組み込みの統合以外のツールと統合するには、次のプログラムツールを使用してログを検索し、JSON形式の出力を外部ツールに送信することをお勧めします。
Amazon Web ServicesS3バケットにログを継続的にプッシュするには、プッシュベースのログ エクスポート用の Atlas Administration APIエンドポイントを使用します。
プロジェクトイベントの配置ログとリストを検索するには、Atlas Administration API のログとプロジェクトおよび組織イベント用エンドポイントを使用します。
デプロイメント ログを検索するには、Atlas CLI で Atlas deployment logs コマンドを使用します。詳しくは、「 Atlas デプロイメント ログ 」を参照してください。
オートメーションの例:Atlasの監査とログ
次の例では、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
JSONファイル内の組織のすべてのログ イベントを取得
指定された組織のすべてのイベントを返すには、次のようなコマンドを使用します。このコマンドは、 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>"
クラスターの監査を有効にし、監査フィルターを作成してください
監査するフィルターを作成することで、文書化されたシステムイベントアクションのほとんどの手動監査を構成できます。監査するフィルターの構成の詳細については、「 監査フィルターの構成 」を参照してください。
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エンドポイントを使用します。
アクセス トラッキング 管理API を使用して、クラスター名またはホスト名で識別されるデータベースのすべての認証試行のアクセス ログを返します。
指定されたホストのログメッセージを含むログファイルを取得するには、モニタリングおよびログ APIを使用します。