SIEM 시스템으로 로그 내보내기

이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭에서 외부 보안 정보 및 이벤트 관리 (SIEM) 시스템으로 로그를 내보내는 방법을 설명합니다. 이 통합을 통해 중앙 집중식 로깅 및 향상된 보안 모니터링이 가능합니다.

로그 내보내기의 핵심은 SIEMOrgForwarder 커스텀 리소스를 배포하는 것입니다. 이 리소스는 로그를 수신하도록 지정된 외부 SIEM 인스턴스의 세부정보를 지정하는 구성 파일 역할을 합니다. SIEMOrgForwarder 파일 내에서 이러한 매개변수를 정의하면 관리자가 간소화되고 안전한 로그 내보내기 파이프라인을 설정할 수 있습니다.

시작하기 전에

SIEMOrgForwarder 커스텀 리소스를 관리하는 데 필요한 권한을 얻으려면 IAM 조직 관리자에게 연결된 SIEM 내보내기 조직 역할 중 하나를 부여해 달라고 요청하세요.

필요한 액세스 및 권한 수준에 따라 프로젝트 네임스페이스에서 이 리소스에 대한 생성자, 편집자 또는 뷰어 역할을 얻을 수 있습니다. 자세한 내용은 IAM 권한 준비를 참조하세요.

필요한 권한을 얻은 후 외부 SIEM 시스템으로 로그를 내보내기 전에 다음 단계를 완료합니다.

  1. 연결 설정: GDC와 외부 SIEM 대상 간에 연결이 있는지 확인합니다. 필요한 경우 인프라 운영자 (IO)와 협력하여 고객 네트워크에 대한 업링크 연결을 설정합니다.

  2. 환경 변수 설정: 이 페이지에서 명령어를 실행하도록 다음 환경 변수를 설정합니다.

    • kubeconfig 파일의 경로:

      export KUBECONFIG=KUBECONFIG_PATH
      

      KUBECONFIG_PATH를 Management API 서버의 kubeconfig 파일 경로로 바꿉니다.

    • 프로젝트 네임스페이스:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

로그 내보내기 구성

동일한 네임스페이스에 보안 비밀과 SIEMOrgForwarder 커스텀 리소스를 만듭니다. 모든 프로젝트 네임스페이스를 사용할 수 있습니다. 각 SIEMOrgForwarder는 조직의 모든 클러스터에서 플랫폼 로그를 내보내므로 다른 프로젝트나 클러스터에서 이러한 리소스를 만들 필요가 없습니다.

SIEMOrgForwarder는 플랫폼 로그만 내보내므로 platform-obs 네임스페이스를 사용하는 것이 좋습니다. SIEM 내보내기 조직 역할은 부여된 네임스페이스의 모든 보안 비밀에 대한 읽기 액세스 권한도 부여하므로 IAM 조직 관리자에게 이러한 역할을 플랫폼 관리자에게만 부여하도록 요청하세요.

외부 SIEM 시스템으로 로그 내보내기:

  1. 로깅 스택을 SIEM 시스템에 연결하는 토큰을 제공합니다. 이 작업을 수행하려면 프로젝트 네임스페이스에 보안 비밀을 만들어 Splunk의 경우 토큰을 저장하고 Elastic SIEM의 경우 비밀번호를 저장해야 합니다.

    cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: SECRET_NAME
      namespace: ${PROJECT_NAMESPACE}
    type: Opaque
    stringData:
      SECRET_FIELD: FIELD_VALUE
    EOF
    

    다음을 바꿉니다.

    • SECRET_NAME: 보안 비밀의 이름입니다.
    • SECRET_FIELD: 보안 비밀을 저장할 필드의 이름입니다. Elastic의 경우 커스텀 리소스에서 HTTP_USER_NAME와 동일한 값을 사용합니다.
    • FIELD_VALUE: FIELD_VALUE는 Splunk의 경우 토큰이고 Elastic의 경우 비밀번호입니다.
    • TOKEN: 토큰입니다.
  2. 프로젝트 네임스페이스에 SIEMOrgForwarder 커스텀 리소스를 배포합니다. 감사 로그 또는 운영 로그 중에서 선택하여 로그 유형을 지정해야 합니다. 두 로그 유형 모두에 대해 로그 내보내기를 구성하려면 각 유형에 대해 SIEMOrgForwarder 리소스를 배포해야 합니다.

    다음 예시에서는 Splunk의 SIEMOrgForwarder 커스텀 리소스에 구성을 적용하는 방법을 보여줍니다.

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          splunkOutputs:
            - host: SIEM_HOST
              token:
                name: SECRET_NAME
                field: SECRET_FIELD
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
      EOF
    

    다음을 바꿉니다.

    • SIEM_ORG_FORWARDER: SIEMOrgForwarder 정의 파일의 이름입니다.
    • LOG_TYPE: 내보내는 로그 유형입니다. 허용되는 값은 audit 및 operational입니다.
    • SIEM_HOST: SIEM 호스트의 이름입니다.
    • SECRET_NAME: 보안 비밀의 이름입니다.
    • SECRET_FIELD: 보안 비밀을 저장한 필드의 이름입니다.
    • TLS: 전송 계층 보안(TLS)의 상태입니다. 허용되는 값은 "On" 및 "Off"입니다.
    • NET_CONNECT_TIMEOUT: 연결이 설정될 때까지 기다리는 최대 시간(초)입니다. 예를 들어 180 값은 180초 동안 대기하는 것을 의미합니다.

    다음 예시에서는 Elastic용 SIEMOrgForwarder 커스텀 리소스에 구성을 적용하는 방법을 보여줍니다.

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          elasticOutputs:
            - host: SIEM_HOST
              port: SIEM_PORT
              http_credential:
                http_user: HTTP_USER_NAME
                http_passwd: SECRET_NAME
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
              index: INDEX
      EOF
    

    다음을 바꿉니다.

    • SIEM_ORG_FORWARDER: SIEMOrgForwarder 정의 파일의 이름입니다.
    • LOG_TYPE: 내보내는 로그 유형입니다. 허용되는 값은 audit 및 operational입니다.
    • SIEM_HOST: SIEM 호스트의 이름입니다.
    • SIEM_PORT: SIEM 인스턴스의 포트입니다.
    • HTTP_USER_NAME: SIEM 인스턴스의 사용자 이름입니다. 이 값은 비밀번호를 저장하는 보안 비밀의 SECRET_FIELD 키여야 합니다.
    • SECRET_NAME: 보안 비밀의 이름입니다.
    • TLS: 전송 계층 보안(TLS)의 상태입니다. 허용되는 값은 "On" 및 "Off"입니다.
    • NET_CONNECT_TIMEOUT: 연결이 설정될 때까지 기다리는 최대 시간(초)입니다. 예를 들어 180 값은 180초 동안 대기하는 것을 의미합니다.
    • INDEX: Elastic 인스턴스의 색인입니다. 지정하지 않으면 로그 유형 (audit 또는 operational)이 사용됩니다. 이 필드는 선택사항입니다.
  3. 배포된 SIEMOrgForwarder 커스텀 리소스의 상태를 확인합니다.

      kubectl --kubeconfig=${KUBECONFIG} describe siemorgforwarder/SIEM_ORG_FORWARDER \
          -n ${PROJECT_NAMESPACE}
    

    로그 유형에 따라 다음 상태를 확인합니다.

    • 감사 로그: AuditLoggingReady 상태를 확인합니다.
    • 운영 로그: OperationalLoggingReady 상태를 확인합니다.