Falco IDS 로그 수집
파서 버전: 1.0
이 문서에서는 Falcosidekick을 통해 웹훅을 사용하여 런타임 보안 알림을 Google Security Operations로 푸시하도록 Falco를 구성하는 방법을 설명합니다.
Falco는 예상치 못한 애플리케이션 동작을 감지하고 런타임 시 위협을 알리는 오픈소스 런타임 보안 도구입니다. 시스템 호출 모니터링을 사용하여 맞춤설정 가능한 보안 규칙에 따라 컨테이너, Kubernetes, Linux 호스트의 비정상적인 활동을 감지합니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Kubernetes (Helm을 통해) 또는 Linux 호스트에 설치된 Falco
- Falco 구성 파일 또는 Helm 값을 수정할 수 있는 액세스 권한입니다.
- Falcosidekick을 배포할 수 있는 액세스 권한 (아직 배포되지 않은 경우)
Google SecOps에서 웹훅 피드 만들기
피드 만들기
- SIEM 설정 > 피드로 이동합니다.
- 새 피드 추가를 클릭합니다.
- 다음 페이지에서 단일 피드 구성을 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다(예:
Falco Runtime Security). - 소스 유형으로 웹훅을 선택합니다.
- 로그 유형으로 Falco IDS를 선택합니다.
- 다음을 클릭합니다.
- 다음 입력 파라미터의 값을 지정합니다.
- 분할 구분자 (선택사항): 비워 둡니다 (Falcosidekick은 요청당 하나의 이벤트를 전송함).
- 애셋 네임스페이스: 애셋 네임스페이스
- 수집 라벨: 이 피드의 이벤트에 적용할 라벨입니다.
- 다음을 클릭합니다.
- 확정 화면에서 새 피드 구성을 검토한 다음 제출을 클릭합니다.
보안 비밀 키 생성 및 저장
피드를 만든 후 인증을 위한 보안 비밀 키를 생성해야 합니다.
- 피드 세부정보 페이지에서 보안 비밀 키 생성을 클릭합니다.
- 대화상자에 보안 비밀 키가 표시됩니다.
- 보안 비밀 키를 안전하게 복사하여 저장합니다.
피드 엔드포인트 URL 가져오기
- 피드의 세부정보 탭으로 이동합니다.
- 엔드포인트 정보 섹션에서 피드 엔드포인트 URL을 복사합니다.
URL 형식은 다음과 같습니다.
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import여기서
{region}는 Google SecOps 인스턴스의 리전 (예:us,europe,asia-southeast1)이고{parent}은projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>형식의 리소스 경로입니다.다음 단계를 위해 이 URL을 저장합니다.
완료를 클릭합니다.
Google Cloud API 키 만들기
Google SecOps에는 인증을 위한 API 키가 필요합니다. Google Cloud 콘솔에서 제한된 API 키를 만듭니다.
API 키 만들기
- Google Cloud 콘솔 사용자 인증 정보 페이지로 이동합니다.
- 프로젝트 (Google SecOps 인스턴스와 연결된 프로젝트)를 선택합니다.
- 사용자 인증 정보 만들기 > API 키를 클릭합니다. API 키가 생성되어 대화상자에 표시됩니다.
- API 키 수정을 클릭하여 키를 제한합니다.
API 키 제한
- API 키 설정 페이지에서 다음을 수행합니다.
- 이름: 구체적인 이름을 입력합니다 (예:
Chronicle Webhook API Key).
- 이름: 구체적인 이름을 입력합니다 (예:
- API 제한사항에서 다음을 실행합니다.
- 키 제한을 선택합니다.
- API 선택 목록에서 Google SecOps API (또는 Chronicle API)를 검색하여 선택합니다.
- 저장을 클릭합니다.
- 페이지 상단의 API 키 필드에서 API 키 값을 복사합니다.
- API 키를 안전하게 저장합니다.
Falcosidekick 배포
Falcosidekick은 Falco의 공식 프록시 전달자로, 웹훅, 클라우드 스토리지, SIEM 플랫폼을 비롯한 여러 대상으로 알림을 라우팅합니다.
옵션 A: Helm을 사용하여 Falco로 배포 (권장)
Falco를 처음 설치하거나 재배포할 수 있는 경우 이 방법을 사용하여 Falco와 Falcosidekick을 함께 배포하세요.
Falco Helm 저장소를 추가합니다.
helm repo add falcosecurity https://falcosecurity.github.io/charts helm repo updateFalco의 네임스페이스를 만듭니다.
kubectl create namespace falco인증을 사용하여 Google SecOps 웹훅 URL을 구성합니다.
<ENDPOINT_URL>?key=<API_KEY>예:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...Falcosidekick을 사용 설정하여 Falco를 설치합니다.
helm install falco falcosecurity/falco \ --namespace falco \ --set falcosidekick.enabled=true \ --set falcosidekick.config.webhook.address="<ENDPOINT_URL>?key=<API_KEY>" \ --set falcosidekick.config.webhook.customHeaders="X-Webhook-Access-Key:<SECRET_KEY>" \ --set falcosidekick.config.webhook.minimumpriority="warning" \ --set tty=true다음과 같이 바꿉니다.
<ENDPOINT_URL>: Google SecOps 피드 엔드포인트 URL<API_KEY>: Google Cloud API 키<SECRET_KEY>: 피드 생성 시의 Google SecOps 보안 비밀 키
배포를 확인합니다.
kubectl get pods -n falco예상 출력에는 Falco 및 Falcosidekick 포드가 모두 실행 중인 것으로 표시됩니다.
NAME READY STATUS RESTARTS AGE falco-xxxxx 2/2 Running 0 2m falco-falcosidekick-xxxxx 1/1 Running 0 2m
옵션 B: Falcosidekick 독립형 배포
Falco가 이미 배포된 경우 Falcosidekick을 별도로 배포하고 Falco가 알림을 보내도록 구성할 수 있습니다.
Falcosidekick 배포
Falco Helm 저장소를 추가합니다 (아직 추가되지 않은 경우).
helm repo add falcosecurity https://falcosecurity.github.io/charts helm repo update인증을 사용하여 Google SecOps 웹훅 URL을 구성합니다.
<ENDPOINT_URL>?key=<API_KEY>Falcosidekick을 설치합니다.
helm install falcosidekick falcosecurity/falcosidekick \ --namespace falco \ --set config.webhook.address="<ENDPOINT_URL>?key=<API_KEY>" \ --set config.webhook.customHeaders="X-Webhook-Access-Key:<SECRET_KEY>" \ --set config.webhook.minimumpriority="warning"다음과 같이 바꿉니다.
<ENDPOINT_URL>: Google SecOps 피드 엔드포인트 URL<API_KEY>: Google Cloud API 키<SECRET_KEY>: 피드 생성 시의 Google SecOps 보안 비밀 키
Falcosidekick이 실행 중인지 확인합니다.
kubectl get pods -n falco -l app.kubernetes.io/name=falcosidekick
Falcosidekick에 알림을 전송하도록 Falco 구성
Falcosidekick 서비스 이름을 가져옵니다.
kubectl get svc -n falco -l app.kubernetes.io/name=falcosidekick서비스 이름은 일반적으로
falcosidekick입니다.HTTP 출력을 사용 설정하도록 Falco 구성을 업데이트합니다.
Helm을 사용하는 경우 Falco 출시 버전을 업그레이드합니다.
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falco.json_output=true \ --set falco.json_include_output_property=true \ --set falco.http_output.enabled=true \ --set falco.http_output.url="http://falcosidekick:2801/"Falco 구성을 수동으로 관리하는 경우
/etc/falco/falco.yaml를 수정합니다.json_output: true json_include_output_property: true http_output: enabled: true url: "http://falcosidekick:2801/"Falco 포드를 다시 시작하여 구성을 적용합니다.
kubectl rollout restart daemonset/falco -n falco
Linux 호스트에서 Falcosidekick 구성
Linux 호스트 (Kubernetes 아님)에서 Falco를 실행하는 경우 Falcosidekick을 systemd 서비스로 배포합니다.
Falcosidekick 바이너리 설치
최신 Falcosidekick 출시 버전을 다운로드합니다.
FALCOSIDEKICK_VERSION="2.29.0" wget https://github.com/falcosecurity/falcosidekick/releases/download/${FALCOSIDEKICK_VERSION}/falcosidekick_${FALCOSIDEKICK_VERSION}_linux_amd64.tar.gz바이너리를 추출하고 설치합니다.
sudo tar -C /usr/local/bin/ -xzf falcosidekick_${FALCOSIDEKICK_VERSION}_linux_amd64.tar.gz sudo chmod +x /usr/local/bin/falcosidekick구성 디렉터리를 만듭니다.
sudo mkdir -p /etc/falcosidekick
Falcosidekick 구성
구성 파일
/etc/falcosidekick/config.yaml을 만듭니다.listenaddress: "0.0.0.0" listenport: 2801 debug: false webhook: address: "<ENDPOINT_URL>?key=<API_KEY>" method: "POST" customHeaders: "X-Webhook-Access-Key:<SECRET_KEY>" minimumpriority: "warning" checkcert: true다음과 같이 바꿉니다.
<ENDPOINT_URL>: Google SecOps 피드 엔드포인트 URL<API_KEY>: Google Cloud API 키<SECRET_KEY>: 피드 생성에서 가져온 Google SecOps 보안 비밀 키
systemd 서비스 파일
/etc/systemd/system/falcosidekick.service을 만듭니다.[Unit] Description=Falcosidekick After=network.target [Service] Type=simple User=root ExecStart=/usr/local/bin/falcosidekick --config-file=/etc/falcosidekick/config.yaml Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.targetFalcosidekick을 사용 설정하고 시작합니다.
sudo systemctl daemon-reload sudo systemctl enable falcosidekick sudo systemctl start falcosidekickFalcosidekick이 실행 중인지 확인합니다.
sudo systemctl status falcosidekick
Falcosidekick에 알림을 전송하도록 Falco 구성
Falco 구성 파일
/etc/falco/falco.yaml을 수정합니다.json_output: true json_include_output_property: true http_output: enabled: true url: "http://localhost:2801/"Falco를 다시 시작합니다.
sudo systemctl restart falco
통합 확인
테스트 알림 트리거
컨테이너에서 셸을 실행하여 Falco 규칙을 트리거합니다 (Kubernetes를 사용하는 경우).
kubectl run test-pod --image=nginx --restart=Never kubectl exec -it test-pod -- /bin/bash이렇게 하면 Falco 규칙 '컨테이너의 터미널 셸'이 트리거됩니다.
Linux 호스트의 경우 민감한 파일을 읽어 규칙을 트리거합니다.
cat /etc/shadow이렇게 하면 Falco 규칙 '신뢰할 수 없는 민감한 파일 읽기'가 트리거됩니다.
Falcosidekick 로그 확인
Kubernetes 배포의 경우:
kubectl logs -n falco -l app.kubernetes.io/name=falcosidekick --tail=50웹훅 전송이 성공했음을 나타내는 로그 항목을 찾습니다.
2025-01-15T10:30:00Z [INFO] : Webhook - Post OKLinux 호스트:
sudo journalctl -u falcosidekick -n 50
Google SecOps에서 이벤트 확인
- Google SecOps > 검색으로 이동합니다.
검색어를 실행합니다.
metadata.log_type = "FALCO_IDS"Falco 이벤트가 검색 결과에 표시되는지 확인합니다.
이벤트에 다음과 같은 예상 필드가 포함되어 있는지 확인합니다.
rule- Falco 규칙 이름priority- 알림 우선순위 (긴급, 알림, 심각, 오류, 경고, 공지, 정보, 디버그)output- 사람이 읽을 수 있는 알림 메시지source- 이벤트 소스 (syscall, k8s_audit)hostname- 이벤트가 발생한 호스트container_id- 컨테이너 ID (해당하는 경우)
우선순위 필터링
Falcosidekick은 우선순위별로 이벤트를 필터링하여 노이즈를 줄이고 중요한 알림에 집중할 수 있도록 지원합니다. לֹ
우선순위 수준
Falco는 다음 우선순위 수준을 사용합니다 (가장 높은 것부터 가장 낮은 것까지).
| 우선순위 | 설명 | 사용 사례 |
|---|---|---|
| 긴급 | 시스템을 사용할 수 없음 | 심각한 보안 사고 |
| 알림 | 즉시 조치를 취해야 함 | 활성 공격, 권한 에스컬레이션 |
| 심각 | 심각한 상태 | 무단 액세스, 멀웨어 실행 |
| 오류 | 오류 조건 | 정책 위반, 의심스러운 활동 |
| 경고 | 경고 상태 | 비정상적인 동작, 잠재적 위협 |
| 알림 | 정상이지만 중요함 | 구성 변경사항, 감사 이벤트 |
| 정보 제공 | 정보 메시지 | 일반 활동 로깅 |
| 디버깅 | 디버그 수준 메시지 | 문제 해결, 개발 |
최소 우선순위 구성
우선순위가 높은 알림만 Google SecOps로 전송하려면 minimumpriority 매개변수를 설정합니다.
Helm 배포:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.webhook.minimumpriority="error"I need to edit
/etc/falcosidekick/config.yamlfor Linux hosts.webhook: minimumpriority: "error"
이 구성은 우선순위가 error 이상 (Error, Critical, Alert, Emergency)인 이벤트만 Google SecOps로 전송합니다.
커스텀 필드
Falcosidekick을 사용하면 Google SecOps에서 더 나은 컨텍스트와 필터링을 위해 모든 이벤트에 맞춤 필드를 추가할 수 있습니다.
커스텀 필드 추가
Helm 배포의 경우:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.customfields.environment="production" \ --set falcosidekick.config.customfields.region="us-east-1" \ --set falcosidekick.config.customfields.cluster="prod-cluster-01"Linux 호스트의 경우
/etc/falcosidekick/config.yaml를 수정합니다.customfields: environment: "production" region: "us-east-1" datacenter: "dc1"
이러한 맞춤 필드는 Google SecOps로 전송되는 모든 Falco 이벤트에 추가되므로 여러 환경에서 필터링 및 상관관계를 설정할 수 있습니다.
대체 수집 경로
웹훅이 권장되는 방법이지만 Falcosidekick은 특정 사용 사례에 대한 대체 수집 경로를 지원합니다.
AWS S3 수집
대용량 환경 또는 규정 준수 요구사항의 경우 Falcosidekick을 구성하여 이벤트를 AWS S3에 작성한 다음 S3에서 Google SecOps로 수집할 수 있습니다.
S3용 Falcosidekick 구성:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.aws.accesskeyid="<AWS_ACCESS_KEY>" \ --set falcosidekick.config.aws.secretaccesskey="<AWS_SECRET_KEY>" \ --set falcosidekick.config.aws.region="us-east-1" \ --set falcosidekick.config.aws.s3.bucket="falco-events" \ --set falcosidekick.config.aws.s3.prefix="runtime-security/"Falcosidekick은 다음 경로 구조를 사용하여 JSON 형식으로 이벤트를 S3에 기록합니다.
s3://falco-events/runtime-security/YYYY-MM-DD/YYYY-MM-DDTHH:mm:ss.s+01:00.json그런 다음 Amazon S3 V2를 소스 유형으로 사용하여 Google SecOps 피드를 구성합니다.
GCP Cloud Storage 수집
GCP 환경의 경우 Google Cloud Storage에 이벤트를 쓰도록 Falcosidekick을 구성합니다.
GCS용 Falcosidekick 구성:
- 대상 버킷에 스토리지 객체 관리자 역할이 있는 GCP 서비스 계정을 만듭니다.
- 서비스 계정 JSON 키 파일을 다운로드합니다.
JSON 키를 Base64로 인코딩합니다.
cat service-account-key.json | base64 -w 0Falcosidekick을 구성합니다.
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.gcp.credentials="<BASE64_ENCODED_KEY>" \ --set falcosidekick.config.gcp.storage.bucket="falco-events" \ --set falcosidekick.config.gcp.storage.prefix="runtime-security/"Falcosidekick은 다음 경로 구조를 사용하여 GCS에 이벤트를 작성합니다.
gs://falco-events/runtime-security/YYYY-MM-DD/YYYY-MM-DDTHH:mm:ss.s+01:00.json
그런 다음 Google Cloud Storage V2를 소스 유형으로 사용하여 Google SecOps 피드를 구성합니다.
AWS Kinesis Firehose 수집
실시간 스트리밍 수집의 경우 AWS Kinesis Firehose에 이벤트를 전송하도록 Falcosidekick을 구성합니다.
Kinesis용 Falcosidekick 구성:
helm upgrade falco falcosecurity/falco \ --namespace falco \ --reuse-values \ --set falcosidekick.config.aws.accesskeyid="<AWS_ACCESS_KEY>" \ --set falcosidekick.config.aws.secretaccesskey="<AWS_SECRET_KEY>" \ --set falcosidekick.config.aws.region="us-east-1" \ --set falcosidekick.config.aws.kinesis.streamname="falco-events-stream"그런 다음 Amazon Kinesis Firehose를 소스 유형으로 사용하여 Google SecOps 피드를 구성합니다.
문제 해결
Falcosidekick이 이벤트를 수신하지 않음
Falco가 Falcosidekick에 이벤트를 전송하는지 확인합니다.
kubectl logs -n falco -l app.kubernetes.io/name=falco --tail=50 | grep http_outputFalco 구성에 HTTP 출력이 포함되어 있는지 확인합니다.
kubectl get configmap -n falco falco -o yaml | grep -A 5 http_outputFalcosidekick이 포트 2801에서 리슨하는지 확인합니다.
kubectl get svc -n falco falcosidekick
웹훅 전송 실패
Falcosidekick 로그에서 HTTP 오류를 확인합니다.
kubectl logs -n falco -l app.kubernetes.io/name=falcosidekick --tail=100 | grep -i error일반적인 오류:
- 401 Unauthorized: API 키 또는 보안 비밀 키가 잘못되었습니다.
- 403 Forbidden: API 키가 Google SecOps API에 대해 승인되지 않음
- SSL 인증서 오류: 테스트를 위해
checkcert: false설정 (프로덕션에는 권장되지 않음)
웹훅을 수동으로 테스트합니다.
curl -X POST \ -H "Content-Type: application/json" \ -H "X-Webhook-Access-Key: <SECRET_KEY>" \ -d '{"test": "event"}' \ "<ENDPOINT_URL>?key=<API_KEY>"
Google SecOps에 이벤트가 표시되지 않음
피드가 활성 상태인지 확인합니다.
- SIEM 설정 > 피드로 이동합니다.
- 피드 상태가 활성인지 확인합니다.
- 최종 수집 시간이 최근인지 확인합니다.
인제스트 오류를 확인합니다.
- 피드 세부정보 페이지로 이동합니다.
- 오류 탭을 클릭합니다.
- 파싱 또는 검사 오류를 검토합니다.
로그 유형 매핑을 확인합니다.
- 원시 로그를 검색합니다.
metadata.log_type = "FALCO_IDS" - 이벤트가 표시되지만 필드가 파싱되지 않으면 UDM 매핑을 확인합니다.
- 원시 로그를 검색합니다.
UDM 매핑 테이블
| 로그 필드 | UDM 매핑 | 로직 |
|---|---|---|
| output_fields.k8s.ns.name, output_fields.k8s.pod.name | additional.fields | k8_ns_name 및 k8s_pod_name 객체에서 병합됨 |
| stageTimestamp | metadata.collected_timestamp | ISO8601 형식을 사용하여 변환됨 |
| 단계, 설명, 출력 | metadata.description | 비어 있지 않은 경우 단계의 값, 그렇지 않으면 설명, 그렇지 않으면 출력 |
| verb, user.uid, uid, output | metadata.event_type | GET LIST WATCH의 동사인 경우 USER_RESOURCE_ACCESS, CREATE이고 (user.uid 또는 uid가 비어 있지 않음)인 경우 USER_RESOURCE_CREATION, (PATCH 또는 UPDATE)이고 user.uid가 비어 있지 않은 경우 USER_RESOURCE_UPDATE_CONTENT, DELETE인 경우 USER_RESOURCE_DELETION, 출력이 Error를 포함하는 경우 USER_RESOURCE_ACCESS, 그렇지 않은 경우 USER_UNCATEGORIZED, 그 외의 경우 GENERIC_EVENT로 설정됩니다. |
| kind | metadata.product_event_type | 값이 직접 복사됨 |
| auditID | metadata.product_log_id | 값이 직접 복사됨 |
| apiVersion, product_version | metadata.product_version | 비어 있지 않으면 apiVersion의 값, 비어 있으면 product_version (따옴표 삭제 후) |
| portdetails.name | network.application_protocol | 대문자로 표시되며 HTTP HTTPS DNS에 있는 경우 값으로 설정되고 그렇지 않으면 UNKNOWN_APPLICATION_PROTOCOL로 설정됩니다. |
| 동사 | network.http.method | 값이 대문자로 변환되고 직접 복사됨 |
| responseStatus.code | network.http.response_code | 정수로 변환되어 직접 복사됨 |
| userAgent | network.http.user_agent | 값이 직접 복사됨 |
| portdetails.protocol | network.ip_protocol | 값이 직접 복사됨 |
| output_fields.cloud-project-id | observer.cloud.project.id | 값이 직접 복사됨 |
| output_fields.pod-name, output_fields.falco.pod.name | observer.hostname | 비어 있지 않은 경우 output_fields.pod-name의 값, 그렇지 않으면 output_fields.falco.pod.name |
| output_fields.pod-ip, output_fields.falco.pod.ip | observer.ip | 비어 있지 않은 경우 output_fields.pod-ip의 값, 그렇지 않은 경우 output_fields.falco.pod.ip |
| output_fields.falco.host.name | principal.asset.hostname | 값이 직접 복사됨 |
| sourceIPs, output_fields.falco.host.ip | principal.asset.ip | 비어 있지 않은 경우 sourceIPs의 각 IP에서 병합되고, 비어 있는 경우 output_fields.falco.host.ip에서 병합됩니다. |
| output_fields.falco.host.name | principal.hostname | 값이 직접 복사됨 |
| sourceIPs, output_fields.falco.host.ip | principal.ip | 비어 있지 않으면 sourceIPs의 각 IP에서 병합되고, 비어 있으면 output_fields.falco.host.ip에서 병합됩니다. |
| output_fields.falco.contact | principal.user.email_addresses | 값이 직접 복사됨 |
| user.groups | principal.user.group_identifiers | user.groups 배열에서 병합됨 |
| user.username, output_fields.user.name | principal.user.user_display_name | 비어 있지 않은 경우 user.username의 값, 그렇지 않으면 output_fields.user.name |
| user.uid, uid | principal.user.userid | 비어 있지 않은 경우 user.uid의 값, 비어 있는 경우 uid (따옴표 삭제 후) |
| annotations.authorization.k8s.io/decision | security_result.action | 허용하는 경우 ALLOW로 설정 |
| annotations.authorization.k8s.io/reason | security_result.description | 값이 직접 복사되고 따옴표가 삭제됨 |
| 규칙 | security_result.rule_name | 값이 직접 복사됨 |
| 우선순위 | security_result.severity_details | 값이 직접 복사됨 |
| containerid.containerID, output_fields.container.id | target.asset.asset_id | containerid.containerID의 값(비어 있지 않은 경우), 그렇지 않으면 'container_id:' + output_fields.container.id |
| target.asset.deployment_status | 실행 중이거나 대기 중인 경우 ACTIVE로 설정하고, 종료된 경우 DECOMISSIONED로 설정하고, 그렇지 않으면 DEPLOYMENT_STATUS_UNSPECIFIED로 설정합니다. | |
| address.nodeName, output_fields.host-name, tar_host | target.asset.hostname | 비어 있지 않은 경우 address.nodeName의 값, 그렇지 않은 경우 output_fields.host-name, 그렇지 않은 경우 출력에 대한 grok의 tar_host |
| address.ip, podip.ip, requestObject.status.podIP, requestObject.status.hostIP, output_fields.host-ip, tar_ip | target.asset.ip | responseObject.subsets.addresses의 address.ip, requestObject.status.podIPs의 podip.ip, requestObject.status.podIP, requestObject.status.hostIP, output_fields.host-ip 또는 출력의 grok에서 tar_ip에서 병합됨 |
| output_fields.email | target.email | 이메일 정규식과 일치하는 경우 값이 직접 복사됨 |
| containerStatuse.imageID, containerStatuse.image, output_fields.container.image.repository | target.file.full_path | 비어 있지 않고 file.full_path가 비어 있는 경우 containerStatuse.imageID의 값, 그렇지 않고 비어 있지 않고 file.full_path가 비어 있는 경우 containerStatuse.image, 그렇지 않으면 output_fields.container.image.repository |
| address.nodeName, output_fields.host-name, tar_host | target.hostname | 비어 있지 않은 경우 address.nodeName의 값, 그렇지 않으면 output_fields.host-name, 그렇지 않으면 출력의 grok에서 tar_host |
| address.ip, podip.ip, requestObject.status.podIP, requestObject.status.hostIP, output_fields.host-ip, tar_ip | target.ip | responseObject.subsets.addresses의 address.ip, requestObject.status.podIPs의 podip.ip, requestObject.status.podIP, requestObject.status.hostIP, output_fields.host-ip 또는 출력의 grok에서 tar_ip에서 병합됨 |
| targetnamespace | target.namespace | 값이 직접 복사됨 |
| portdetails.port | target.port | 정수로 변환되어 첫 번째 포트에 직접 복사됨 |
| output_fields.cloud-provider | target.resource.attribute.cloud.environment | GCP인 경우 GOOGLE_CLOUD_PLATFORM, Azure인 경우 MICROSOFT_AZURE로 설정됩니다. |
| requestObject.status.containerStatuses.0.state.waiting.reason, output_fields.evt.arg.fd, output_fields.evt.arg.filename, output_fields.evt.arg.mode, output_fields.fd.name, output_fields.ol-env, output_fields.tags, output_fields.proc.cmdline, output_fields.ebpf_enabled | target.resource.attribute.labels | 다양한 라벨 객체에서 병합됨 |
| address.targetRef.uid | target.resource.id | 비어 있지 않고 resource_id가 비어 있는 경우 address.targetRef.uid의 값 |
| address.targetRef.name, objectRef.name, output_fields.bl-ssr | target.resource.name | 비어 있지 않고 resource_name이 비어 있으면 address.targetRef.name의 값, 비어 있지 않고 resource_name이 비어 있으면 objectRef.name, 비어 있지 않고 resource_name이 비어 있으면 output_fields.bl-ssr |
| output_fields.falco.ssrid | target.resource.product_object_id | 값이 직접 복사됨 |
| address.targetRef.kind, objectRef.resource | target.resource.resource_subtype | 비어 있지 않고 target_resource_subtype이 비어 있으면 address.targetRef.kind의 값, 비어 있지 않고 target_resource_subtype이 비어 있으면 objectRef.resource의 값 |
| resource_type | target.resource.resource_type | 비어 있으면 CLUSTER로 설정하고, 그렇지 않으면 직접 복사됩니다. |
| requestURI | target.url | 값이 직접 복사됨 |
| responseObject.spec.group | target.user.group_identifiers | 배열 responseObject.spec.group에서 병합됨 |
| responseObject.spec.user | target.user.user_display_name | 값이 직접 복사됨 |
| responseObject.metadata.uid, responseObject.spec.uid, objectRef.uid, requestObject.metadata.uid, output_fields.user.loginuid | target.user.userid | 비어 있지 않은 경우 responseObject.metadata.uid, 그렇지 않은 경우 responseObject.spec.uid, 그렇지 않은 경우 objectRef.uid, 그렇지 않은 경우 requestObject.metadata.uid, 그렇지 않은 경우 output_fields.user.loginuid (문자열로 변환됨)의 값 |
| metadata.product_name | 'FALCO_IDS'로 설정 | |
| metadata.vendor_name | 'FALCO_IDS'로 설정 | |
priority |
security_result.priority |
변경 로그에서 매핑됨 |
time |
date |
변경 로그에서 매핑됨 |
output_fields.tags |
target.labels |
변경 로그에서 매핑됨 |
변경 로그
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.