監査ロギングを使用する

このドキュメントでは、ベアメタル版 Anthos クラスタの Cloud Audit Logs の使用方法について説明します。ベアメタル版 Anthos クラスタは、クラスタの Kubernetes API サーバーに対して行われた呼び出しを時系列で記録する Kubernetes Audit Logging を使用します。監査ログは、不審な API リクエストの調査や統計情報の収集に役立ちます。

Cloud Audit Logs について

監査ログは、Google Cloud プロジェクトの Cloud Audit Logs に書き込まれます。Cloud Audit Logs への書き込みには、ディスクへの書き込みや、オンプレミス ロギング システムでのログ取得を上回るいくつかの利点があります。

  • すべての Anthos クラスタの監査ログを一元化できます。
  • Cloud Audit Logs に書き込まれるログエントリは不変です。
  • Cloud Audit Logs エントリは 400 日間保持されます。
  • Cloud Audit Logs の機能については、料金は Anthos の料金に含まれています。
  • ベアメタル版 Anthos クラスタを構成して、ディスクまたは Cloud Audit Logs にログを書き込むことができます。

ディスクベースの監査ロギング

Cloud Audit Logs が明示的に無効になっている場合、ベアメタル版 Anthos クラスタの監査ログは永続ディスクに書き込まれるため、クラスタの再起動やアップグレードによってログが消えることはありません。ベアメタル版 Anthos クラスタは、最大 1 GiB の監査ログエントリを保持します。

コントロール プレーンのノードにログインして、ディスクベースの監査ログにアクセスします。ログは /var/log/apiserver/ ディレクトリにあります。

Cloud Audit Logs

ユーザー クラスタの作成時に指定したプロジェクトとロケーションを使用して、すべての Kubernetes API サーバーから Google Cloud に管理アクティビティ監査ログエントリが送信されます。ログエントリをバッファリングして Cloud Audit Logs に書き込むために、ベアメタル版 Anthos クラスタはコントロール プレーン ノードで実行される audit-proxy デーモンセットをデプロイします。

制限事項

ベアメタル版 Anthos クラスタの Cloud Audit Logs には、次の制限があります。

  • データアクセス ロギングはサポートされていません。
  • Kubernetes 監査ポリシーの変更はサポートされていません。
  • Cloud Audit Logs は、ネットワークの長い停止に対処できません。ログエントリを Google Cloud にエクスポートできない場合は、10 GiB のディスク バッファのキャッシュに保存されます。対象のバッファに空き容量がなくなると、最も古いエントリが破棄されます。

Cloud Audit Logs のサービス アカウントの作成

ベアメタル版 Anthos クラスタで Cloud Logging と Cloud Monitoring を使用する前に、まず以下の対象を構成する必要があります。

  1. Google Cloud プロジェクト内に Cloud Monitoring Workspace を作成します(まだ作成していない場合)。

    Google Cloud コンソールで次のボタンをクリックし、ワークフローを実行します。

    [モニタリング] に移動

  2. 次のボタンをクリックして必要な API を有効にします。

    Anthos Audit API の有効化

    Stackdriver API の有効化

    Monitoring API の有効化

    Logging API の有効化

  3. Stackdriver エージェントが使用するサービス アカウントに次の IAM ロールを割り当てます。

    • logging.logWriter
    • monitoring.metricWriter
    • stackdriver.resourceMetadata.writer
    • monitoring.dashboardEditor

Cloud Audit Logs へのアクセス

Console

  1. Google Cloud コンソールで、[ロギング] メニューの [ログ エクスプローラ] ページに移動します。

    ログ エクスプローラに移動

    [以前のログビューア] ページが表示された場合は、[アップグレード] プルダウン メニューから [新しいログ エクスプローラにアップグレード] を選択します。

  2. [クエリ] をクリックして、クエリを送信するテキスト ボックスにアクセスします。

  3. テキスト ボックスに次のクエリを入力します。

    resource.type="k8s_cluster"
    logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    

    PROJECT_ID を実際のプロジェクト ID に置き換えます。

  4. [クエリを実行] をクリックして、このプロジェクトにログインするように構成されたベアメタル クラスタ版 Anthos クラスタからのすべての監査ログを表示します。

gcloud

プロジェクトの管理アクティビティ ログで k8s_cluster リソースタイプに該当するログエントリの最初の 2 つを一覧表示します。

gcloud logging read \
    'logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

PROJECT_ID を実際のプロジェクト ID に置き換えます。

出力には 2 つのログエントリが表示されます。各ログエントリについて、logName フィールドは projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity 値を持ち、protoPayload.serviceNameanthosgke.googleapis.com と等しくなる点に注意してください。

監査ポリシー

Kubernetes 監査ポリシーでは、イベントをログエントリとして記録するルールを定義し、ログエントリに含めるデータを指定します。現在、このポリシーを変更して Cloud Audit Logs の動作を変更することはできません。