Splunk Native Embedder 소개: 보안 대시보드 임베딩, 제대로 구현
Source: Dev.to
Splunk Native Embedder가 승인되었으며 이제 Splunkbase에서 사용할 수 있습니다.
Splunk Native Embedder는 Splunk의 기본 기능을 기반으로 구축된 경량 구성 관리자입니다. 이 게시물에서는 앱이 보안 교차‑출처 대시보드 임베딩을 가능하게 하는 기술적 세부 사항을 살펴보며, 개발자가 세밀한 제어를 통해 Splunk 시각화를 외부 포털에 통합할 수 있도록 합니다.
Splunk Native Embedder on Splunkbase
기술적 과제: X-Frame-Options 및 쿠키 보안
클릭재킹 방지
Splunk는 기본적으로 X-Frame-Options: SAMEORIGIN HTTP 헤더를 설정합니다. 브라우저는 부모 페이지가 다른 도메인에 있을 경우 렌더링을 차단하여 클릭재킹을 방지하지만, 정당한 교차‑출처 임베딩도 차단됩니다.
쿠키 정책
현대 브라우저(Chrome, Safari, Edge)는 기본적으로 SameSite=Lax를 적용합니다. 이는 iframe과 같은 교차 사이트 컨텍스트에서 세션 쿠키가 전송되지 않게 하여, 사용자는 로그인에 성공하지만 브라우저가 쿠키 전송을 거부함으로써 세션이 끊기는 인증 루프가 발생합니다.
해결책: 네이티브 구성 관리
프레임 보안 관리
앱 대시보드에서 임베딩을 활성화하면 JavaScript 컨트롤러(embedder_config.js)가 configs/conf-web 엔드포인트에 REST 호출을 수행합니다. 이를 통해 local/web.conf가 업데이트되고 필요한 보안 플래그가 전환됩니다:
[settings]
# 교차‑출처 프레이밍을 차단하는 헤더를 비활성화
x_frame_options_sameorigin = false
# HTML 대시보드가 프레임 내에서 작동하도록 명시적으로 허용
dashboard_html_allow_iframes = true
dashboard_html_allow_embeddable_content = true
이 값을 플랫폼 수준에서 직접 관리함으로써 앱은 네이티브 동작을 유지하면서 최적의 성능을 보장합니다.
SameSite 쿠키 문제 해결
iframe 내부에서 인증을 유지하려면 세션 쿠키를 SameSite=None; Secure로 표시해야 합니다. 앱은 이를 전역적으로 적용할 수 있는 간단한 토글을 제공합니다:
[settings]
# HTTPS 환경에서 교차‑사이트 임베딩에 필수
cookieSameSite = none
중요: cookieSameSite = none을 설정하려면 HTTPS가 필요합니다. Splunk에 HTTP로 접근하면 현대 브라우저가 현재 보안 표준에 따라 쿠키를 완전히 거부합니다.
리버스 프록시 및 TLS 종료 처리
많은 배포 환경에서 SSL/TLS는 로드 밸런서(NGINX, F5)에서 종료되고, Splunk는 내부적으로 HTTP를 사용합니다. 이 경우 Splunk는 트래픽이 보안된 것인지 감지하지 못해 쿠키를 Secure로 표시하지 않을 수 있습니다. 앱은 보안 쿠키를 강제로 설정할 수 있는 추가 옵션을 제공합니다:
[settings]
# Splunk가 HTTP 트래픽을 보더라도 쿠키를 'Secure'로 강제 지정
tools.sessions.secure = true
이를 통해 리버스 프록시 시나리오에서도 브라우저가 쿠키를 받아들일 수 있습니다.
앱은 사용 및 피드백을 위해 공개되었습니다. 네이티브 구성을 완전히 활용함으로써 외부에 대시보드를 공유하는 가장 안정적이고 Splunk와 정렬된 방법을 제공하는 것이 목표입니다.
— Sanjeev