このページでは、Kubernetes apiserver の監査ログにアクセスする方法について説明します。
概要
GKE On-Prem クラスタでは Kubernetes Audit Logging を使用して、クラスタの Kubernetes API サーバーに対して行われた呼び出しを時系列でログに記録します。監査ログは、不審な API リクエストの調査や統計情報の収集に役立ちます。
ディスクベースの監査ロギング
デフォルトでは、監査ログは永続ディスクに書き込まれるため、VM の再起動とアップグレードによってログが消えることはありません。GKE On-Prem では 10 GB までの監査ログが保持されます。
Cloud Audit Logging
Cloud Audit Logging が有効になっている場合は、インストール時に設定されたプロジェクトと場所を使用して、すべての API サーバーからの管理アクティビティ監査ログが Google Cloud に送信されます。
Kubernetes 監査ログへのアクセス
ディスクベースの監査ロギング
監査ログにアクセスできるのは管理クラスタのみです。
以下にクラスタで実行されている Kubernetes API サーバーを表示します。
kubectl get pods --all-namespaces -l component=kube-apiserver
API サーバーの監査ログをダウンロードします。
kubectl cp -n [NAMESPACE] [APISERVER_POD_NAME]:/var/log/kube-audit/kube-apiserver-audit.log /tmp/kubeaudit.log
このコマンドは、最新のログファイルを取得します。このログファイルには、管理クラスタの場合は最大 1 GB、ユーザー クラスタの場合は最大 850 GB が含まれます。
古い監査記録は別のファイルに保存されます。これらのファイルを表示するには:
kubectl exec -n [NAMESPACE] [APISERVER_POD_NAME] -- ls /var/log/kube-audit -la
各監査ログのファイル名には、ファイルがローテーションされた日時を示すタイムスタンプがあります。ファイルには、その日時までの監査ログが含まれています。
Cloud Audit Logging
Console
Google Cloud コンソールで、[ロギング] メニューの [ログ] ページに移動します。
上で説明したプルダウン メニューのすぐ上にある [ラベルまたはテキスト検索でフィルタ] ボックスで、下矢印をクリックしてプルダウン メニューを開きます。メニューで、[高度なフィルタに変換] を選択します。
テキスト ボックスに次のフィルタを入力します。
resource.type="k8s_cluster" logName="projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity" protoPayload.serviceName="anthosaudit.googleapis.com"
[フィルタを送信] をクリックして、このプロジェクトにログインするように構成された GKE On-Prem クラスタのすべての監査ログを表示します。
gcloud
プロジェクトの管理アクティビティ ログで k8s_cluster
リソースタイプに該当するログエントリの最初の 2 つを一覧表示します。
gcloud logging read \ 'logName="projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity" \ AND resource.type="k8s_cluster" \ AND protoPayload.serviceName="anthosaudit.googleapis.com" ' \ --limit 2 \ --freshness 300d
ここで、[PROJECT_ID] はプロジェクト ID です。
出力には 2 つのログエントリが表示されます。各ログエントリについて、logName
フィールドは projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity
値を持ち、protoPayload.serviceName
は anthosaudit.googleapis.com
と等しくなる点に注意してください。
監査ポリシー
監査ロギングの動作は、静的に構成された Kubernetes 監査ロギング ポリシーによって決まります。現在、このポリシーは変更できません。