9.3. 監査ログのフィルター

jq または別の JSON 解析ツールを使用して、API サーバー監査ログをフィルターできます。

注記

API サーバー監査ログに記録する情報量は、設定される監査ログポリシーで制御できます。

以下の手順では、jq を使用してコントロールプレーンノード node-1.example.com で監査ログをフィルターする例を示します。jq の使用に関する詳細は、jq Manual を参照してください。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • jq がインストールされている。

手順

  • OpenShift API サーバー監査ログをユーザーでフィルターします。

    $ oc adm node-logs node-1.example.com  \
      --path=openshift-apiserver/audit.log \
      | jq 'select(.user.username == "myusername")'
  • OpenShift API サーバー監査ログをユーザーエージェントでフィルターします。

    $ oc adm node-logs node-1.example.com  \
      --path=openshift-apiserver/audit.log \
      | jq 'select(.userAgent == "cluster-version-operator/v0.0.0 (linux/amd64) kubernetes/$Format")'
  • Kubernetes API サーバー監査ログを特定の API バージョンでフィルターし、ユーザーエージェントのみを出力します。

    $ oc adm node-logs node-1.example.com  \
      --path=kube-apiserver/audit.log \
      | jq 'select(.requestURI | startswith("/apis/apiextensions.k8s.io/v1beta1")) | .userAgent'
  • 動詞を除外して OpenShift OAuth API サーバー監査ログをフィルターします。

    $ oc adm node-logs node-1.example.com  \
      --path=oauth-apiserver/audit.log \
      | jq 'select(.verb != "get")'
  • ユーザー名を識別し、エラーで失敗したイベントで OpenShift OAuth サーバー監査ログをフィルタリングします。

    $ oc adm node-logs node-1.example.com  \
      --path=oauth-server/audit.log \
      | jq 'select(.annotations["authentication.openshift.io/username"] != null and .annotations["authentication.openshift.io/decision"] == "error")'