3.7. 감사 로그 수집


시스템의 개별 사용자, 관리자 또는 기타 구성 요소가 시스템에 영향을 준 활동 순서를 문서화하는 보안 관련 레코드 세트인 감사 로그를 수집할 수 있습니다.

예를 들어 감사 로그는 자동 스케일링 요청이 발생하는 위치를 이해하는 데 도움이 될 수 있습니다. 이는 사용자 애플리케이션에서 수행한 자동 확장 요청에 의해 백엔드가 과부하되는 경우 주요 정보입니다. 이로 인해 문제가 발생한 애플리케이션을 결정해야 합니다.

3.7.1. 감사 로깅 구성

CloudEventda Controller 사용자 정의 리소스를 편집하여 Custom Metrics Autoscaler Operator에 대한 감사를 구성할 수 있습니다. 로그는 CloudEventda Controller CR의 영구 볼륨 클레임을 사용하여 보안되는 볼륨의 감사 로그 파일로 전송됩니다.

사전 요구 사항

  • Custom Metrics Autoscaler Operator가 설치되어 있어야 합니다.

절차

  1. CloudEventda Controller 사용자 지정 리소스를 편집하여 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
    audit 로그의 출력 형식( legacy 또는 json )을 지정합니다.
    2
    로그 데이터를 저장하기 위한 기존 영구 볼륨 클레임을 지정합니다. API 서버에 들어오는 모든 요청은 이 영구 볼륨 클레임에 기록됩니다. 이 필드를 비워 두면 로그 데이터가 stdout으로 전송됩니다.
    3
    기록해야 하는 이벤트와 어떤 데이터를 포함해야 하는지 지정합니다.
    • none: 이벤트를 기록하지 않습니다.
    • metadata: 사용자, 타임스탬프 등과 같은 요청에 대한 메타데이터만 기록합니다. 요청 텍스트와 응답 텍스트를 기록하지 마십시오. 이는 기본값입니다.
    • request: 메타데이터와 요청 텍스트만 기록하지만 응답 텍스트는 기록하지 않습니다. 이 옵션은 리소스가 아닌 요청에는 적용되지 않습니다.
    • RequestResponse: 이벤트 메타데이터, 요청 텍스트 및 응답 텍스트를 기록합니다. 이 옵션은 리소스가 아닌 요청에는 적용되지 않습니다.
    4
    이벤트가 생성되지 않는 단계를 지정합니다.
    5
    요청 및 응답 본문의 관리 필드를 API 감사 로그에 작성하지 못하도록 하려면 true 로 필드를 생략할지 아니면 필드를 생략할 false 를 생략할지 여부를 지정합니다.
    6
    감사 로그의 크기 및 수명을 지정합니다.
    • maxAge: 파일 이름에 인코딩된 타임스탬프에 따라 감사 로그 파일을 유지하는 최대 일 수입니다.
    • maxBackup: 유지할 감사 로그 파일의 최대 수입니다. 모든 감사 로그 파일을 유지하려면 0 으로 설정합니다.
    • maxSize: 감사 로그 파일의 최대 크기(MB)가 순환되기 전에 이루어집니다.

검증

  1. 감사 로그 파일을 직접 확인합니다.

    1. 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

    2. 다음과 유사한 명령을 사용하여 로그 데이터를 확인합니다.

      $ oc logs keda-metrics-apiserver-<hash>|grep -i metadata 1
      1
      선택 사항: grep 명령을 사용하여 표시할 로그 수준을 지정할 수 있습니다. 메타데이터, 요청 ,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.26","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":""}}
       ...

  2. 또는 특정 로그를 볼 수 있습니다.

    1. 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
    2. /var/audit-policy/ 디렉터리로 변경합니다.

      sh-4.4$ cd /var/audit-policy/
    3. 사용 가능한 로그를 나열합니다.

      sh-4.4$ ls

      출력 예

      log-2023.02.17-14:50  policy.yaml

    4. 필요한 경우 로그를 확인합니다.

      sh-4.4$ cat <log_name>/<pvc_name>|grep -i <log_level> 1
      1
      선택 사항: grep 명령을 사용하여 표시할 로그 수준을 지정할 수 있습니다. 메타데이터, 요청 ,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\""}}
       ...

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.