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: 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
: 교체되기 전에 감사 로그 파일의 최대 크기(MB)입니다.
-
검증
감사 로그 파일을 직접 확인합니다.
keda-metrics-apiserver-*
Pod의 이름을 가져옵니다.oc get pod -n 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 ,
.Request
Response
예를 들면 다음과 같습니다.
$ 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 keda
예를 들면 다음과 같습니다.
$ oc rsh pod/keda-metrics-apiserver-65c7cc44fd-rrl4r -n 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 ,
.Request
Response
예를 들면 다음과 같습니다.
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\""}} ...