Cloud Logging のエクスポート シナリオ: コンプライアンス要件

Last reviewed 2022-10-26 UTC

このシナリオでは、組織のコンプライアンス要件を満たすために、Cloud Logging から Cloud Storage にエクスポートする方法を示します。 ログファイルの作成と保管にはさまざまな規制があります。たとえば、Sarbanes Oxley(SOX)では、ユーザー、データベース、コンソール操作のログを保持することが義務付けられています。デフォルトおよび構成可能なログの保持期間の詳細については、Cloud Logging の割り当てと上限をご覧ください。

このシナリオでは、エクスポートされたログを特定の Cloud Storage バケットに配信します。必要に応じて、ログへのアクセスを制限する権限を付与します。長期保存のコストを削減するため、Cloud Storage のオブジェクト ライフサイクル管理機能を使用して、Nearline または Coldline ストレージ クラスにログを移動し、必要な保存期間が経過した後に削除します。

このシナリオでは、Google Cloud、仮想マシン(VM)、データベース、対応のストレージ システムで実行される一般的な n 層ウェブ アーキテクチャを前提としています。この環境では、すべての監査ログ、仮想マシン関連のログ、ストレージログ、データベース ログがエクスポートされます。サンプルのロギング フィルタを調整することで、エクスポートされるログの種類を変更できます。

ロギング エクスポートの設定

次の図は、Cloud Storage へのロギング エクスポートを有効にする手順を示しています。

ロギング サポートを有効にする

Cloud Storage にロギング エクスポート バケットを設定する

Cloud Storage バケットを設定するの手順に沿って、エクスポートしたログをホストバケットを設定します。デフォルトのストレージ クラスの場合は、Multi-Regional、Nearline または Coldline のストレージ クラスが必要な場合を除き、Regional を選択します。

Cloud Storage バケットのオブジェクト ライフサイクル管理を設定する

このシナリオでは、すべてのログの保存期間を 7 年間に設定します。ストレージ コストを最小限に抑えるため、オブジェクトのライフサイクル ルールを Cloud Storage に追加します。これにより、指定した日数が経過した後、Nearline または Coldline のストレージにログを移動し、保存する必要がなくなったときにログを削除できます。

ベスト プラクティス: Nearline または Coldline にログを移動してから削除すると、ログの維持に必要な運用コストを管理できます。

ライフサイクル ルールの作成の手順に沿ってルールを作成します。 次のスクリーンショットでは、ストレージ クラスを 60 日後に Nearline に変更し、120 日後に Coldline に変更するルールを設定しています。また、7 年に相当する 2,555 日後にログを削除するルールも設定しています。

カスケード ルール。

すべてのサービスで監査ロギングを有効にする

BigQuery を除き、データアクセスの監査ログはデフォルトで無効になっています。すべての監査ログを有効にするには、監査ポリシーのドキュメントに記載されている構成を使用して、Identity and Access Management(IAM)ポリシーを更新する手順を行います。手順は次のとおりです。

  • 現在の IAM ポリシーをファイルとしてダウンロードします。
  • 監査ログポリシーの JSON または YAML オブジェクトを現在のポリシー ファイルに追加します。
  • 変更されたポリシー ファイルを使用して Google Cloud プロジェクトを更新します。

以下に、すべてのサービスで監査ログを有効にする JSON オブジェクトの例を示します。

"auditConfigs": [
    {
        "service": "allServices",
        "auditLogConfigs": [
            { "logType": "ADMIN_READ" },
            { "logType": "DATA_READ"  },
            { "logType": "DATA_WRITE" },
        ]
    },
]

ロギング エクスポートを構成する

集約エクスポートまたはログのエクスポートを設定したら、ロギング フィルタを調整して、監査ログ、仮想マシン関連のログ、ストレージログ、データベース ログをエクスポートします。次のロギング フィルタには、管理アクティビティ監査ログとデータアクセス監査ログに加えて、特定のリソースタイプのログが含まれます。

logName:"/logs/cloudaudit.googleapis.com" OR
resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=cloudsql_database OR
resource.type=bigquery_resource

Google Cloud CLI から、gcloud logging sinks create コマンドまたは organizations.sinks.create API 呼び出しを使用して、適切なフィルタを使用したシンクを作成します。次の gcloud コマンドの例では、この組織に対して gcp_logging_sink_gcs という名前のシンクが作成されます。シンクにはすべての子プロジェクトが含まれ、個々の監査ログを選択するフィルタリングを指定します。

gcloud logging sinks create gcp_logging_sink_gcs \
    storage.googleapis.com/gcp-logging-export-000100011000 \
    --log-filter='logName: "/logs/cloudaudit.googleapis.com" OR \
    resource.type:\"gce\" OR \
    resource.type=\"gcs_bucket\" OR   \
    resource.type=\"cloudsql_database\" OR  \
    resource.type=\"bigquery_resource\"' \
    --include-children   \
    --organization=324989855333

コマンドの出力は次のようになります。

Created [https://logging.googleapis.com/v2/organizations/324989855333/sinks/gcp_logging_sink_gcs].
Please remember to grant `serviceAccount:gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com` full-control access to the bucket.
More information about sinks can be found at /logging/docs/export/configure_export

この API 呼び出しからの戻り値の serviceAccount エントリには、gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com という ID が含まれます。この ID は、エクスポート用に作成された Google Cloud サービス アカウントを表します。この ID に送信先への書き込みアクセス権を付与するまで、このシンクからのログエントリのエクスポートは失敗します。詳細については、次のセクションまたはリソースのアクセス権の付与のドキュメントをご覧ください。

Cloud Storage バケットに IAM ポリシー権限を設定する

Storage オブジェクト作成者権限を持つ gcp-logging-export-000100011000 バケットにサービス アカウント gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com を追加することにより、バケットに書き込む権限がサービス アカウントに付与されます。これらの権限を追加するまでは、シンクのエクスポートは失敗します。

gcp-logging-export バケットに権限を付与するには、次の操作を行います。

  1. Google Cloud コンソールで、Storage ブラウザを開きます。

    Storage ブラウザに移動

  2. gcp-logging-export バケットを選択します。

  3. [情報パネルを表示] をクリックし、Storage オブジェクト作成者権限を選択します。

    IAM ポリシー権限 - ストレージのオブジェクト作成者

前述のフィルタを使用してロギング エクスポートを作成すると、構成したプロジェクトの Cloud Storage バケットにログファイルのエクスポートが開始します。

ベスト プラクティス: 必要に応じて、必要最小限の権限ポリシーを実装します。特定の Google Cloud ユーザー アカウント、Google グループ、Google Cloud サービス アカウントに基づいて、バケット権限を構成します。IAM 権限を使用して、Cloud Storage バケットへのアクセスと、バケット オブジェクトへの一括アクセスを許可します。

権限セットの例として、次の操作が可能です。

  • 重要でないすべてのユーザーから Cloud Storage バケットの権限を削除する。
  • Cloud Storage の管理者に完全なアクセス権を付与する。
  • エクスポート ユーザー権限を付与し、ロギング エクスポート ファイルへの書き込みを許可する。
  • 他のユーザーに Google Cloud ロギング エクスポートへの表示権限を付与する。

バケットの IAM 権限は、Google Cloud コンソール、gsutil コマンドライン ツールまたは IAM API で直接更新できます。以下では、Cloud Storage バケットに関連する権限セットの例と Google Cloud コンソールのスクリーンショットを示します。

ロール: ストレージ管理者

  • IAM の説明: Cloud Storage リソースに対する完全なアクセス権
  • 使用方法: Cloud Storage に保存されたコンテンツの変更権限を付与することなく、管理者ユーザーに Cloud Storage リソースに対するアクセス権を付与します。
  • アカウントの例:

    storage-admin@example.com

    役割: ストレージ管理者

役割: Storage オブジェクト管理者

  • IAM の説明: Cloud Storage オブジェクトに対する完全なアクセス権
  • 使用方法: Cloud Storage のリソース構成の変更権限を付与することなく、管理者ユーザーに Cloud Storage ファイル オブジェクトリに対する完全アクセス権を付与します。
  • アカウントの例:

    storage-object-admin@example.com: user1@example.com, user2@example.com

    役割: Storage オブジェクト管理者。

役割: Storage オブジェクト閲覧者

  • IAM の説明: Cloud Storage オブジェクトへの読み取りアクセス
  • 使用方法: このロールを使用して、ユーザーの Google Cloud ログに対する読み取り専用アクセス権を付与できます。
  • アカウントの例:

    storage-viewer@example.com: user3@example.com

    ロール: Storage オブジェクト閲覧者。

ベスト プラクティス: Google Workspace または一般ユーザー Google グループを使用する場合は、gcp-logging-export-viewers@example.com などの Google グループにストレージ オブジェクト閲覧者の権限を追加できます。その後、ユーザーの表示権限を変更するときに、Cloud Storage バケットの権限を編集することなく、gcp-logging-export-viewers@example.com グループでユーザーの追加または削除を行えます。

エクスポートされたログの使用

前述のフィルタを使用してロギング エクスポートを作成すると、設定したプロジェクトの Cloud Storage バケットにログファイルのエクスポートが開始します。 ログはバケット内の別々のフォルダに作成されます。各ログは日付に基づく階層構造で保存されます。ログには、Google Cloud コンソール、gsutil コマンドライン ツール、または IAM API からアクセスできます。次のスクリーンショットは、Google Cloud コンソールのフォルダ構造の例を示しています。

サンプルのフォルダ構造。

各ログファイルは、textPayloadprotoPayloadjsonPayload のログエントリ形式の JSON データで構成されます。 所定の時間が経過すると、Cloud Storage ライフサイクル プロセスに従って、Cloud Storage バケットのログファイルが Nearline ストレージに移動し、さらに Coldline ストレージに移動します。最終的には構成に基づいてログが削除されます。

外部アクセスの許可

エクスポートされたログへのアクセス権を特定のユーザー(セキュリティ アナリスト、DevOps チーム、監査担当者など)に付与することもできます。

ログの保存場所

Cloud Storage ログへのアクセス権を付与する場合、いくつかのオプションがあります。

  • 共有するログのコピーを作成する。

    手動またはプログラムで個々のログファイルまたはログファイルのセットを作成し、そのコピーを個別の Cloud Storage バケットに保存します。必要であれば、個々のバケットの権限を使用して特定のユーザーとログを共有します。

    メリット: コピーされたデータのみに公開されるデータ量を制限できます。

    デメリット: 個別のデータセットを作成、共有、管理する必要があり、コストが高くなる可能性があります。

  • すべてのログに読み取り専用アクセス権を付与する。

    手動またはプログラムで Cloud Storage ロギング エクスポート バケットに閲覧者権限を付与します。これにより、すべてのログ エクスポートへのアクセスが許可されます。

    メリット: アクセス権を簡単に付与できます。

    デメリット: 特定のログファイルではなく、すべてのログにアクセス権を付与する必要があります。

ユーザーのアクセス制御

Cloud Storage バケット権限を使用すると、ロギング エクスポートの Cloud Storage バケットを特定の Google アカウントまたは Google グループと共有できます。

  • Google グループを使用する。

    auditors@example.com などの Google グループを作成し、ロギング エクスポートの Cloud Storage バケットに対する読み取り専用アクセスを許可します。次に、Google グループで監査担当者の追加や削除を行い、Google アカウントのリストを管理します。

    メリット: グループでアクセスを簡単に管理できます。ユーザー アクセスの目的は明確です。

    デメリット: グループ メンバーシップを確認しないとアクセスできるユーザーがわかりません。

  • 個別の Google アカウントを使用する。

    個々の Google アカウントにアクセス権を付与し、ユーザーにロギング エクスポート Cloud Storage バケットへのアクセスを許可します。

    メリット: 各ユーザーを手動またはプログラムで簡単に追加できます。

    デメリット: 監査ユーザーを他の閲覧者から区別できません。

次のステップ