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

このシナリオでは、組織のコンプライアンス要件を満たすために Stackdriver Logging から Cloud Storage にログをエクスポートする方法を説明します。ログファイルの作成と保管にはさまざまな規制があります。たとえば、Sarbanes Oxley(SOX)では、ユーザー、データベース、コンソール操作のログを保持することが義務付けられています。Stackdriver Logging は、基本階層で 7 日間、プレミアム階層で 30 日間のログを保持しますが、Cloud Audit Logging のログは基本層とプレミアム層の両方で 400 日間保持されます。

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

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

このシナリオは、Stackdriver Logging のエクスポートの設計パターンを説明するシリーズの一つです。

ロギング エクスポートを設定する

次の図は、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 を除き、データアクセスの監査ログはデフォルトで無効になっています。すべての監査ログを有効にするには、IAM ポリシーを更新するための手順に沿って、監査ポリシーのドキュメントに記載されている構成を指定します。手順は次のとおりです。

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

以下に、すべてのサービスで監査ログを有効にする 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

gcloud コマンドライン ツールから、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 エントリには ID gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com が含まれています。この ID は、エクスポート用に作成された GCP サービス アカウントを表します。この ID に送信先への書き込みアクセス権を付与するまで、このシンクからのログエントリのエクスポートは失敗します。詳細については、次のセクションまたはリソースのアクセス権の付与のドキュメントをご覧ください。

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

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

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

  1. GCP Console でストレージ ブラウザを開きます。

    ストレージ ブラウザに移動

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

  3. 右側の [情報パネルを表示] をクリックして、次のように権限を設定します。

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

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

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

権限セットを使用することで、次のことが可能になります。

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

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

役割: ストレージ管理者

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

    storage-admin@example.com

    役割: ストレージ管理者

役割: ストレージのオブジェクト管理者

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

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

    役割: ストレージのオブジェクト管理者

役割: ストレージ オブジェクト閲覧者

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

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

    役割: ストレージ オブジェクト閲覧者

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

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

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

サンプルのフォルダ構造

各ログファイルは、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 バケットへのアクセスを許可します。

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

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

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...