3.7. 監査ログの収集
システムに影響を与えた一連のアクティビティーを個別のユーザー、管理者その他システムのコンポーネント別に記述したセキュリティー関連の時系列のレコードを提供する、監査ログを収集できます。
たとえば、監査ログは、自動スケーリングリクエストの送信元を理解するのに役立ちます。これは、ユーザーアプリケーションによる自動スケーリングリクエストによってバックエンドが過負荷になり、問題のあるアプリケーションを特定する必要がある場合に重要な情報です。
3.7.1. 監査ログの設定
KedaController
カスタムリソースを編集することで、Custom Metrics Autoscaler Operator の監査を設定できます。ログは、KedaController
CR の永続ボリューム要求を使用して保護されたボリューム上の監査ログファイルに送信されます。
前提条件
- Custom Metrics Autoscaler Operator をインストールしている。
手順
KedaController
カスタムリソースを編集して、auditConfig
スタンザを追加します。kind: KedaController apiVersion: keda.sh/v1alpha1 metadata: name: keda namespace: openshift-keda spec: # ... metricsServer: # ... auditConfig: logFormat: "json" 1 logOutputVolumeClaim: "pvc-audit-log" 2 policy: rules: 3 - level: Metadata omitStages: "RequestReceived" 4 omitManagedFields: false 5 lifetime: 6 maxAge: "2" maxBackup: "1" maxSize: "50"
- 1
- 監査ログの出力形式を
legacy
またはjson
のいずれかで指定します。 - 2
- ログデータを格納するための既存の永続ボリューム要求を指定します。API サーバーに送信されるすべてのリクエストは、この永続ボリューム要求に記録されます。このフィールドを空のままにすると、ログデータは stdout に送信されます。
- 3
- どのイベントを記録し、どのデータを含めるかを指定します。
-
None
: イベントをログに記録しません。 -
Metadata
: ユーザー、タイムスタンプなど、リクエストのメタデータのみをログに記録します。リクエストテキストと応答テキストはログに記録しないでください。これはデフォルトになります。 -
Request
: メタデータと要求テキストのみをログに記録しますが、応答テキストはログに記録しません。このオプションは、リソース以外の要求には適用されません。 -
RequestResponse
: イベントのメタデータ、要求テキスト、および応答テキストをログに記録します。このオプションは、リソース以外の要求には適用されません。
-
- 4
- イベントを作成しないステージを指定します。
- 5
- リクエストおよび応答本文のマネージドフィールドが API 監査ログに書き込まれないようにするかどうかを指定します。フィールドを省略する場合は
true
、フィールドを含める場合はfalse
を指定します。 - 6
- 監査ログのサイズと有効期間を指定します。
-
maxAge
: ファイル名にエンコードされたタイムスタンプに基づく、監査ログファイルを保持する最大日数。 -
maxBackup
: 保持する監査ログファイルの最大数。すべての監査ログファイルを保持するには、0
に設定します。 -
maxSize
: ローテーションされる前の監査ログファイルの最大サイズ (メガバイト単位)。
-
検証
監査ログファイルを直接表示します。
keda-metrics-apiserver-*
Pod の名前を取得します。oc get pod -n openshift-keda
出力例
NAME READY STATUS RESTARTS AGE custom-metrics-autoscaler-operator-5cb44cd75d-9v4lv 1/1 Running 0 8m20s keda-metrics-apiserver-65c7cc44fd-rrl4r 1/1 Running 0 2m55s keda-operator-776cbb6768-zpj5b 1/1 Running 0 2m55s
次のようなコマンドを使用して、ログデータを表示します。
$ oc logs keda-metrics-apiserver-<hash>|grep -i metadata 1
- 1
- オプション:
grep
コマンドを使用して、表示するログレベル (Metadata
、Request
、RequestResponse
) を指定できます。
以下に例を示します。
$ oc logs keda-metrics-apiserver-65c7cc44fd-rrl4r|grep -i metadata
出力例
... {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Metadata","auditID":"4c81d41b-3dab-4675-90ce-20b87ce24013","stage":"ResponseComplete","requestURI":"/healthz","verb":"get","user":{"username":"system:anonymous","groups":["system:unauthenticated"]},"sourceIPs":["10.131.0.1"],"userAgent":"kube-probe/1.28","responseStatus":{"metadata":{},"code":200},"requestReceivedTimestamp":"2023-02-16T13:00:03.554567Z","stageTimestamp":"2023-02-16T13:00:03.555032Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":""}} ...
または、特定のログを表示できます。
次のようなコマンドを使用して、
keda-metrics-apiserver-*
Pod にログインします。$ oc rsh pod/keda-metrics-apiserver-<hash> -n openshift-keda
以下に例を示します。
$ oc rsh pod/keda-metrics-apiserver-65c7cc44fd-rrl4r -n openshift-keda
/var/audit-policy/
ディレクトリーに移動します。sh-4.4$ cd /var/audit-policy/
利用可能なログを一覧表示します。
sh-4.4$ ls
出力例
log-2023.02.17-14:50 policy.yaml
必要に応じてログを表示します。
sh-4.4$ cat <log_name>/<pvc_name>|grep -i <log_level> 1
- 1
- オプション:
grep
コマンドを使用して、表示するログレベル (Metadata
、Request
、RequestResponse
) を指定できます。
以下に例を示します。
sh-4.4$ cat log-2023.02.17-14:50/pvc-audit-log|grep -i Request
出力例
... {"kind":"Event","apiVersion":"audit.k8s.io/v1","level":"Request","auditID":"63e7f68c-04ec-4f4d-8749-bf1656572a41","stage":"ResponseComplete","requestURI":"/openapi/v2","verb":"get","user":{"username":"system:aggregator","groups":["system:authenticated"]},"sourceIPs":["10.128.0.1"],"responseStatus":{"metadata":{},"code":304},"requestReceivedTimestamp":"2023-02-17T13:12:55.035478Z","stageTimestamp":"2023-02-17T13:12:55.038346Z","annotations":{"authorization.k8s.io/decision":"allow","authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"system:discovery\" of ClusterRole \"system:discovery\" to Group \"system:authenticated\""}} ...