Atlas プラットフォームのアクティビティを監視およびログには、 監査とログ を使用します。
Atlasの監査とロギングに関する機能
監査
M10+ クラスターで利用可能なデータベース監査により、複数のユーザーによる配置のシステム アクティビティを追跡できます。Atlas 管理者として、次の操作を行うことができます。
Atlas のデフォルトの監査設定に依存します。デフォルトでは 、Atlas は
M10+クラスターでデータベース認証を実行して、次に関連する認証イベントをレコード。database users
ソースIPアドレス
成功した試行と失敗した試行のタイムスタンプ
JSON 形式の監査フィルターを構成して、MongoDB 監査をカスタマイズし、監査したいアクション、データベース ユーザー、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 形式の出力を外部ツールにフィードすることをお勧めします。
AWS S3 バケットにログを継続的にプッシュするには、プッシュベースのログ エクスポート用の 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 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 を使用します。