Google SecOps와 Logging 통합

이 문서에서는 Cloud Logging을 Google Security Operations와 통합하는 방법을 설명합니다.

사용 사례

Logging 통합은 Google SecOps 기능을 사용하여 다음 사용 사례를 지원합니다.

  • 포렌식 로그 검색: 조사 중에 환경 전반에서 특정 보안 이벤트 Google Cloud 를 찾기 위해 고급 쿼리를 실행합니다.

  • 자동화된 위협 헌팅: 플레이북을 사용하여 알려진 침해 지표 (IoC) 또는 의심스러운 패턴에 대해 로그를 주기적으로 쿼리합니다.

시작하기 전에

Google SecOps에서 Logging 통합을 구성하기 전에 다음 필수 단계를 완료하세요.

  1. 서비스 계정을 만들고 필요한 역할을 부여합니다.

  2. 다음 인증 방법 중 하나를 선택하고 구성합니다.

    • 옵션 1: 워크로드 아이덴티티 (권장): 이 메서드는 서비스 계정 가장을 통해 단기 임시 액세스 토큰을 사용하므로 보안 비밀을 저장할 필요가 없습니다.

    • 옵션 2: 서비스 계정 JSON 키: 이 메서드는 정적 장기 보안 비밀 키 파일에 의존합니다. 워크로드 아이덴티티 인증을 사용자 환경에서 사용할 수 없는 경우에만 이 메서드를 사용하세요.

서비스 계정 만들기

통합을 위한 서비스 계정을 만들려면 다음 단계를 완료하세요.

  1. 콘솔 Google Cloud 에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.

    서비스 계정으로 이동

  2. 서비스 계정 만들기 추가 를 클릭합니다.

  3. 이름 (예: 'SecOps Logging 통합')과 설명을 제공하고 만들기 및 계속 을 클릭합니다.

  4. 이 서비스 계정에 프로젝트 액세스 권한 부여 단계에서 로그 뷰어 (roles/logging.viewer) 역할을 추가합니다.

  5. 완료 를 클릭합니다. 이 서비스 계정의 이메일 주소는 구성 중에 사용됩니다.

워크로드 아이덴티티 사용자 인증 정보 구성

이 메서드 또는 JSON 키 메서드를 선택하여 통합을 인증합니다. 워크로드 아이덴티티를 사용하는 것이 권장되는 방법입니다.

서비스 계정 가장을 사용하여 단기 임시 액세스 토큰을 사용하기 때문입니다.

고유 인스턴스 ID 식별

Google SecOps 인스턴스에 서비스 계정을 가장할 수 있는 권한을 부여하는 것은 액세스를 보호하는 마지막 단계입니다.

  1. Google SecOps에서 콘텐츠 허브 > 응답 통합으로 이동합니다.

  2. Cloud Logging 통합을 검색하고 선택한 후 워크로드 아이덴티티 이메일 에 서비스 계정 이메일을 입력합니다.

  3. 할당량 프로젝트 ID 에 유효한 프로젝트 ID를 입력합니다.

  4. 저장 > 테스트를 클릭합니다. 테스트가 실패할 것으로 예상됩니다.

  5. close_small 버튼 옆에 있는 테스트를 클릭하고 gke-init-python@... 또는 soar-python@...으로 시작하는 ID 이메일을 찾습니다.

    이 고유한 이메일 주소를 복사하여 통합 구성 중에 Workload Identity Email에 붙여넣습니다.

에서 인스턴스 ID 승인 Google Cloud

검색된 고유 ID를 승인하면 서비스 계정 가장이 사용 설정되어 플랫폼에서 정적 키 없이 사용자를 대신하여 작업을 수행할 수 있습니다.

  1. 콘솔 Google Cloud 에서 IAM 및 관리자 > 서비스 계정으로 이동합니다.

    서비스 계정으로 이동

  2. 대상 서비스 계정을 선택하고 권한 > 액세스 권한 부여 로 이동합니다.

  3. 고유한 이메일 주소를 새 주 구성원 필드에 붙여넣습니다.

  4. 서비스 계정 토큰 생성자 역할(roles/iam.serviceAccountTokenCreator)을 할당합니다.

할당량 프로젝트 액세스 권한 부여

워크로드 아이덴티티로 인증하려면 API 사용량 및 결제를 추적하기 위한 Quota Project ID가 필요합니다.

  1. 콘솔 Google Cloud 에서 ** IAM 및 관리자 >IAM** 으로 이동하고 할당량 프로젝트 ID에 사용된 프로젝트를 선택합니다.

    IAM으로 이동

  2. 서비스 계정을 찾고 주 구성원 수정 을 클릭합니다.

  3. 다른 역할 추가 를 클릭하고 서비스 사용량 소비자 (roles/serviceusage.serviceUsageConsumer)를 선택합니다.

  4. 저장 을 클릭합니다.

JSON 키 구성

정적 장기 보안 비밀 키 파일에는 수동 관리가 필요합니다. 이 메서드는 워크로드 아이덴티티 사용자 인증 정보를 사용할 수 없는 경우에만 사용해야 합니다.

  1. Google Cloud 콘솔에서 **IAM 및 관리자 > 서비스 계정**으로 이동하고 서비스 계정을 선택합니다.

    서비스 계정으로 이동

  2. 탭으로 이동하고 키 추가 > 새 키 만들기 를 클릭합니다.

  3. 키 유형으로 JSON 을 선택하고 만들기 를 클릭합니다.

  4. 다운로드한 파일의 전체 콘텐츠를 복사하여 구성 중에 User's Service Account에 붙여넣습니다.

통합 매개변수

Logging 통합에는 다음 매개변수가 필요합니다.

매개변수 설명
API Root

선택사항입니다.

Cloud Logging API의 기본 URL (예: https://logging.googleapis.com)

User's Service Account

선택사항입니다.

서비스 계정 키 JSON 파일의 전체 콘텐츠입니다.

JSON 키를 사용하여 인증하는 경우에만 이 매개변수를 사용하세요.

Workload Identity Email

선택사항입니다.

서비스 계정의 클라이언트 이메일 주소입니다.

워크로드 아이덴티티 사용자 인증 정보를 사용하여 인증하는 경우에만 이 매개변수를 사용하세요.

Project ID

선택사항입니다.

통합에 사용할 프로젝트 ID입니다.

값이 제공되지 않으면 통합에서 서비스 계정 사용자 인증 정보에서 ID를 검색합니다.

Quota Project ID

선택사항입니다.

API 사용량 및 결제에 사용되는 프로젝트 ID입니다.

이 매개변수는 워크로드 아이덴티티 사용자 인증 정보를 사용하여 인증할 때 필수입니다.

Organization ID

선택사항입니다.

쿼리 범위를 지정하는 데 사용되는 조직 ID입니다.

Verify SSL

선택사항입니다.

선택하면 통합에서 Logging 서버에 연결할 때 SSL 인증서의 유효성을 검사합니다.

기본적으로 사용 설정됩니다.

Google SecOps에서 통합을 구성하는 방법에 대한 안내는 통합 구성을 참조하세요.

필요한 경우 나중에 변경할 수 있습니다. 통합 인스턴스를 구성한 후에는 플레이북에서 사용할 수 있습니다. 여러 인스턴스를 구성하고 지원하는 방법에 대한 자세한 내용은 다중 인스턴스 지원을 참조하세요.

작업

작업에 대한 자세한 내용은 작업 공간에서 대기 중인 작업에 응답직접 조치 수행을 참조하세요.

쿼리 실행

쿼리 실행 작업을 사용하여 Logging에서 커스텀 쿼리를 실행합니다.

이 작업은 Google SecOps 항목에서 실행되지 않습니다.

작업 입력

쿼리 실행 작업에는 다음 매개변수가 필요합니다.

매개변수 설명
Project ID 선택사항

통합에 사용할 프로젝트 ID입니다.

이 매개변수의 값을 설정하지 않으면 통합에서 프로젝트 ID를 Google Cloud 서비스 계정에서 검색합니다.

Organization ID 선택사항

통합에 사용할 조직 ID입니다.

이 매개변수의 값을 설정하지 않으면 통합에서 프로젝트 ID를 Google Cloud 서비스 계정에서 검색합니다.

Query 필수

로그를 찾는 쿼리입니다.

Time Frame 선택사항

결과를 검색할 기간입니다.

Custom을 선택하는 경우 Start Time 매개변수도 구성합니다.

가능한 값은 다음과 같습니다.

  • Last Hour
  • Last 6 Hours
  • Last 24 Hours
  • Last Week
  • Last Month
  • Custom
기본값은 Last Hour입니다.
Start Time 선택사항

결과를 검색할 시작 시간입니다.

Time Frame 매개변수에 Custom 옵션을 선택한 경우 이 매개변수가 필요합니다.

이 매개변수를 구성하려면 ISO 8601 형식을 사용하세요.

End Time 선택사항

결과를 검색할 종료 시간입니다.

이 매개변수의 값을 설정하지 않고 Custom 옵션을 Time Frame 매개변수에 선택하면 작업에서 현재 시간을 종료 시간으로 사용합니다.

이 매개변수를 구성하려면 ISO 8601 형식을 사용하세요.

Max Results To Return 선택사항

반환할 최대 결과 수입니다.

기본값은 50개입니다.

작업 출력

쿼리 실행 작업은 다음 출력을 제공합니다.

작업 출력 유형 가용성
케이스 월 연결 사용 불가
케이스 월 링크 사용 불가
케이스 월 테이블 사용 불가
보강 테이블 사용 불가
JSON 결과 사용 가능
출력 메시지 사용 가능
스크립트 결과 사용 가능
JSON 결과

다음 예에서는 쿼리 실행 작업을 사용할 때 수신되는 JSON 결과 출력을 설명합니다.

[{
    "protoPayload": {
        "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
        "authenticationInfo": {
            "principalEmail": "system:clouddns"
        },
        "authorizationInfo": [
            {
                "granted": true,
                "permission": "io.k8s.coordination.v1.leases.update",
                "resource": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock"
            }
        ],
        "methodName": "io.k8s.coordination.v1.leases.update",
        "requestMetadata": {
            "callerIp": "192.0.2.6",
            "callerSuppliedUserAgent": "clouddns-leader-election"
        },
        "resourceName": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock",
        "serviceName": "k8s.io",
        "status": {
            "code": 0
        }
    },
    "insertId": "ID",
    "resource": {
        "type": "k8s_cluster",
        "labels": {
            "cluster_name": "CLUSTER_NAME",
            "project_id": "PROJECT_ID",
            "location": "us-central1"
        }
    },
    "timestamp": "2024-09-18T09:46:38.647428Z",
    "labels": {
        "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"system:clouddns\" of ClusterRole \"system:clouddns-role\" to User \"system:clouddns\"",
        "authorization.k8s.io/decision": "allow"
    },
    "logName": "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity",
    "operation": {
        "id": "ID",
        "producer": "k8s.io",
        "first": true,
        "last": true
    },
    "receiveTimestamp": "2024-09-18T09:46:39.063264993Z"
}]
출력 메시지

쿼리 실행 작업은 다음 출력 메시지를 제공합니다.

출력 메시지 메시지 설명

Successfully executed query "QUERY" in Cloud Logging.

No results were found for the provided query.

작업이 성공했습니다.
Error executing action "Execute Query". Reason: ERROR_REASON

작업이 실패했습니다.

서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다.

스크립트 결과

다음 표에서는 쿼리 실행 작업을 사용할 때 스크립트 결과 출력의 값을 설명합니다.

스크립트 결과 이름
is_success True 또는 False

작업을 사용하여 Logging에 대한 연결을 테스트합니다.

이 작업은 Google SecOps 항목에서 실행되지 않습니다.

작업 입력

없음

작업 출력

작업은 다음 출력을 제공합니다.

작업 출력 유형 가용성
케이스 월 연결 사용 불가
케이스 월 링크 사용 불가
케이스 월 테이블 사용 불가
보강 테이블 사용 불가
JSON 결과 사용 불가
출력 메시지 사용 가능
스크립트 결과 사용 가능
출력 메시지

작업은 다음 출력 메시지를 제공합니다.

출력 메시지 메시지 설명
Successfully connected to the Cloud Logging server with the provided connection parameters! 작업이 성공했습니다.
Failed to connect to the Cloud Logging server! Error is ERROR_REASON

작업이 실패했습니다.

서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인합니다.

스크립트 결과

다음 표에서는 작업을 사용할 때 스크립트 결과 출력의 값을 설명합니다.

스크립트 결과 이름
is_success True 또는 False

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.