監査ロギングの有効化

このドキュメントでは、ベアメタル版 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 にログを書き込むことができます。

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

デフォルトでは、ベアメタル版 Anthos クラスタの監査ログは永続ディスクに書き込まれるため、クラスタの再起動とアップグレードでログが消えることはありません。ベアメタル版 Anthos クラスタは、最大 1 GB の監査ログエントリを保持します。

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

Cloud Audit Logs

Cloud Audit Logs が有効になっている場合、すべての Kubernetes API サーバーから Google Cloud に管理アクティビティ監査ログエントリが送信されます。これらのログエントリは、クラスタのプロジェクト名と場所に保存されます。ログエントリをバッファリングして Cloud Audit Logs に書き込むために、ベアメタル版 Anthos クラスタは audit-proxy Pod を管理クラスタにデプロイします。この Pod は、ユーザー クラスタのサイドカー コンテナとしても利用できます。

制限事項

ベアメタル版 Anthos クラスタの Cloud Audit Logs はプレビュー版の機能であり、次の制限があります。

  • データアクセスのロギングはサポートされていません。
  • Kubernetes 監査ポリシーの変更はサポートされていません。
  • Cloud Audit Logs は、ネットワークの長い停止に対処できません。ログエントリを Google Cloud にエクスポートできない場合は、10 GB のディスク バッファのキャッシュに保存されます。そのバッファがいっぱいになると、後続のエントリは破棄されます。
  • Cloud Audit Logs は、新しい 1.8.0 クラスタの作成時にのみ有効にできます。アップグレードを行うことによる既存クラスタでの Cloud Audit Logs の有効化は、プレビュー版の機能ではサポートされていません。

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 を有効にする

ベアメタル版 Anthos クラスタで Cloud Audit Logs を使用するには、通常のクラスタ作成手順に沿って操作します。ただし、bmctl create cluster コマンドを実行する前にクラスタの構成ファイルを次のように編集します。

  1. クラスタ構成ファイルの disableCloudAuditLogging フィールドのコメントを解除し、次の例に示すように false に設定されていることを確認します。

    ...
    clusterOperations:
        # Cloud project for logs and metrics.
        projectID: `PROJECT_ID`
        # Cloud location for logs and metrics.
        location: us-central1
        # Enable Cloud Audit Logging if uncommented and set to false.
        disableCloudAuditLogging: false
    ...
    

    クラスタ作成プロセスの残りの部分は同じです。詳細と手順へのリンクについては、クラスタの作成: 概要をご覧ください。

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 clusters on VMware のすべての監査ログを表示します。

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/<var>PROJECT_ID</var>/logs/externalaudit.googleapis.com%2Factivity 値を持ち、protoPayload.serviceNameanthosgke.googleapis.com と等しくなる点に注意してください。

監査ポリシー

Cloud Audit Logs の動作は、静的に構成された Kubernetes 監査ロギング ポリシーによって決定されます。このポリシーの変更は現時点ではサポートされていませんが、今後のリリースでサポートされる予定です。