데이터 보안¶
클라우드 컴퓨팅 시대에 데이터 보안은 매우 중요합니다. 포괄적인 데이터 보호 역량을 갖추면 가시성과 인사이트를 높이고 보안 위험을 자동으로 경고하여 전반적인 방어 능력을 향상시키고 데이터의 가용성과 규정 준수를 보장할 수 있습니다.
Guance을 사용하면 내장 도구가 수신된 데이터에 대한 위험 평가 및 처리를 수행합니다.
데이터 리스크를 어떻게 줄일 수 있나요?¶
Guance은 인프라 및 서비스의 모니터링 정보를 수집하여 중앙에서 관리하므로 언제든지 분석하고 처리할 수 있습니다. 이 과정에서 서버는 다양한 유형의 데이터를 전송합니다. Guance을 정상적으로 사용하는 서버는 다양한 유형의 데이터 콘텐츠를 전송합니다. 정상적인 Guance 제품 사용을 통해 수집된 데이터는 대부분 개인 정보를 포함하지 않습니다. 포함될 수 있는 불필요한 개인 데이터에 대해서는 혼동을 방지하기 위해 자세한 설명과 제안을 제공합니다. Guance은 데이터 리스크를 줄이는 데 도움이 되는 여러 가지 방법을 제공합니다.
DataKit 측의 데이터 보안 고려 사항¶
HTTPS 데이터 업로드¶
모든 DataKit 데이터는 HTTPS 프로토콜을 사용하여 업로드되므로 데이터 통신의 보안이 보장됩니다.
제한된 하향 메커니즘¶
중앙에서는 DataKit에 명령을 내려 실행하도록 할 수 없으며, 모든 요청은 DataKit이 자체적으로 시작합니다. DataKit은 정기적으로 중앙에서 일부 관련 구성(예: Pipeline 및 블랙리스트 구성)을 가져올 수만 있습니다. 중앙에서는 DataKit에 명령을 내려 실행하도록 할 수 없습니다.
Tracing 수집 과정의 필드 값 마스킹¶
Tracing 수집 과정에서 일부 SQL 문의 실행 과정이 수집될 수 있습니다. 이러한 SQL 문의 필드 값은 모두 마스킹됩니다. 예를 들어:
는 다음과 같이 마스킹됩니다.
Pipeline 및 블랙리스트 메커니즘¶
수집 과정에서 일부 민감한 데이터를 제거할 수 없는 경우 Pipeline의 특정 함수(예: cover() 함수는 문자열의 일부를 *로 대체)를 사용하여 민감한 데이터(예: 휴대폰 번호 등)를 마스킹할 수 있습니다.
또한 블랙리스트 규칙을 구성하면 민감한 데이터의 업로드를 차단할 수도 있습니다.
민감 데이터 스캔¶
민감 데이터 스캔 기능은 개인 정보 등 많은 위험 데이터를 식별, 표시 및 편집하는 데 사용됩니다. 이는 보안 방어선 역할을 하여 민감한 데이터가 외부로 유출되는 것을 효과적으로 방지합니다.
자세한 내용은 민감 데이터 스캔을 참조하세요.
로그¶
Guance의 제품 서비스 사용 과정에서 많은 로그 기록이 생성됩니다. 로그 데이터 자체의 강력한 연관성으로 인해 수집-분석 과정에서 특정 규칙 처리를 통해 대량의 로그 데이터를 필터링해야 합니다.
로그 데이터에 민감 필드를 구성하면 해당 권한을 가진 구성원은 마스킹된 로그 데이터만 볼 수 있습니다.
데이터 액세스 권한 제어는 로그 데이터의 보안 위험을 줄이는 또 다른 중요한 방법입니다. 다양한 역할에 해당 로그 데이터 액세스 및 쿼리 범위를 구성하여 데이터를 격리함으로써 민감 데이터를 종합적으로 관리하고 필터링할 수 있습니다.
자세한 내용은 다중 역할 데이터 액세스 권한 제어를 참조하세요.
스냅샷¶
Guance의 스냅샷 서비스는 즉각적인 데이터 복사본으로, 비정상 데이터 필터 조건 및 데이터 기록을 포함합니다. 모니터링 데이터를 공유해야 하는 경우 스냅샷 공유 시 데이터 마스킹 규칙을 설정하거나 공유 방식을 결정하여 지정된 보기 권한이 있는 액세스 링크를 생성하고 자동으로 데이터 보호막을 형성할 수 있습니다.
자세한 내용은 스냅샷을 참조하세요.
RUM¶
사용자 액세스 관련 데이터를 수집할 때 RUM SDK는 데이터를 사용자 지정하여 수정 및 차단하여 민감한 데이터가 유출되는 것을 방지합니다.
자세한 내용은 SDK 데이터 차단 및 데이터 수정을 참조하세요.
Web RUM SDK¶
다음은 RUM SDK의 Cookie 사용 및 대체 메커니즘에 대한 설명입니다(규정 준수 공개).
기본 구성에서 Guance RUM SDK는 세션 식별 및 사용자 식별 기능을 구현하기 위해 모니터링되는 애플리케이션에 두 가지 유형의 Cookie를 기록합니다.
-
_gc_s_접두사가 있는 Cookie: 현재 액세스 세션 관련 정보를 저장하여 사용자의 한 방문 주기 내 행동을 연결하고 통계를 내는 데 사용됩니다. -
_gc_usr_접두사가 있는 Cookie: 사용자 식별 정보를 저장하여 다른 액세스 세션 간에 동일한 최종 사용자를 지속적으로 식별하는 데 사용됩니다.
위 Cookie는 사용자의 실제 신원 정보를 포함하지 않으며 모니터링 데이터의 세션 관리 및 익명 사용자 식별에만 사용됩니다.
특정 비즈니스 시나리오(예: 개인정보 보호 규정 준수 요구 사항, 사용자의 Cookie 거부, 브라우저 제한 등)에서 Cookie 기록이 허용되지 않는 경우 RUM SDK는 초기화 구성을 통해 다음을 지원합니다.
위 세션 정보와 사용자 식별자를 LocalStorage에 저장하여 Cookie를 전혀 기록하지 않고도 세션 및 사용자 연결 기능을 계속 제공할 수 있습니다.
Session Replay 개인정보 보호 설정¶
Session Replay는 개인정보 보호 제어를 제공하여 어떤 회사도 민감한 데이터나 개인 데이터를 노출하지 않도록 합니다. 또한 데이터는 암호화되어 저장됩니다. Session Replay의 기본 개인정보 보호 옵션은 최종 사용자의 개인정보를 보호하고 민감한 조직 정보가 수집되는 것을 방지하도록 설계되었습니다.
전역 구성¶
Session Replay를 활성화하면 민감한 요소가 RUM SDK에 의해 기록되지 않도록 자동으로 차단할 수 있습니다.
개인정보 보호 설정을 활성화하려면 SDK 구성에서 defaultPrivacyLevel을 mask-user-input, mask 또는 allow로 설정하세요.
import { datafluxRum } from '@cloudcare/browser-rum'
datafluxRum.init({
applicationId: '<DATAFLUX_APPLICATION_ID>',
datakitOrigin: '<DATAKIT ORIGIN>',
service: 'browser',
env: 'production',
version: '1.0.0',
sessionSampleRate: 100,
sessionReplaySampleRate: 100,
trackInteractions: true,
defaultPrivacyLevel: 'mask-user-input' | 'mask' | 'allow',
})
datafluxRum.startSessionReplayRecording()
구성을 업데이트한 후 다음 개인정보 보호 옵션을 사용하여 HTML 문서의 요소를 재정의할 수 있습니다.
Mask user input mode: 입력, 텍스트 영역 및 체크박스 값과 같은 대부분의 양식 필드를 차단하고 다른 모든 텍스트는 원래대로 기록합니다. 입력은 세 개의 별표(***)로 대체되고, 텍스트 영역은 공백이 유지된 x 문자로 난독화됩니다.
참고
기본적으로 Session Replay 활성화 시 개인정보 보호 설정은 mask-user-input입니다.
Mask mode: 모든 HTML 텍스트, 사용자 입력, 이미지 및 링크를 차단합니다. 애플리케이션의 텍스트는 X로 대체되어 페이지를 와이어프레임으로 렌더링합니다.
Allow mode: 모든 데이터를 기록합니다.
일부 제한 사항:
데이터 보안을 위해 defaultPrivacyLevel 설정이 어떤 모드이든 관계없이 다음 요소는 차단됩니다.
password,email및tel유형의 입력 요소autocomplete속성이 있는 요소(예: 신용카드 번호, 만료일, 보안 코드)
사용자 지정 구성¶
Session Replay는 민감한 요소에 대한 차단 기능을 지원합니다. 비즈니스 요구 사항에 따라 차단해야 하는 콘텐츠(예: 휴대폰 번호 등 민감한 정보)를 유연하게 설정할 수 있습니다. 구체적인操作方法은 다음과 같습니다.
요소 속성을 통한 차단 구성¶
차단해야 하는 요소에 data-gc-privacy 속성을 추가할 수 있습니다. 다음 네 가지 속성 값이 지원됩니다.
• allow: 데이터 수집을 허용하며 차단 처리를 하지 않습니다.
• mask: 콘텐츠를 마스킹하여 마스크 형태로 표시합니다.
• mask-user-input: 사용자 입력을 마스킹하여 민감한 입력 데이터가 기록되지 않도록 합니다.
• hidden: 콘텐츠를 완전히 숨깁니다.
예제 코드:
<!-- 데이터 수집 허용 -->
<div class="mobile" data-gc-privacy="allow">13523xxxxx</div>
<!-- 콘텐츠 마스킹 -->
<div class="mobile" data-gc-privacy="mask">13523xxxxx</div>
<!-- 사용자 입력 마스킹 -->
<input class="mobile" data-gc-privacy="mask-user-input" value="13523xxxxx" />
<!-- 콘텐츠 숨김 -->
<div class="mobile" data-gc-privacy="hidden">13523xxxxx</div>
요소 클래스 이름을 통한 차단 구성¶
요소에 특정 클래스 이름을 추가하여 차단 기능을 지원합니다. 현재 지원되는 클래스 이름은 다음과 같습니다.
• gc-privacy-allow: 데이터 수집을 허용합니다.
• gc-privacy-mask: 콘텐츠를 마스킹합니다.
• gc-privacy-mask-user-input: 사용자 입력을 마스킹합니다.
• gc-privacy-hidden: 콘텐츠를 완전히 숨깁니다.
예제 코드:
<!-- 데이터 수집 허용 -->
<div class="mobile gc-privacy-allow">13523xxxxx</div>
<!-- 콘텐츠 마스킹 -->
<div class="mobile gc-privacy-mask">13523xxxxx</div>
<!-- 사용자 입력 마스킹 -->
<input class="mobile gc-privacy-mask-user-input" value="13523xxxxx" />
<!-- 콘텐츠 숨김 -->
<div class="mobile gc-privacy-hidden">13523xxxxx</div>
shouldMaskNode를 사용한 사용자 지정 노드 차단 전략 구현¶
특수한 시나리오에서는 특정 DOM 노드에 대해 맞춤형 차단 처리가 필요할 수 있습니다. 예를 들어, 보안 수준이 높은 애플리케이션에서는 페이지에서 숫자 값을 포함하는 모든 텍스트 콘텐츠를 통합적으로 차단하려는 경우가 있습니다. 이러한 요구는 shouldMaskNode 콜백 함수를 구성하여 더 유연한 개인정보 보호 제어 전략을 구현할 수 있습니다.
import { datafluxRum } from '@cloudcare/browser-rum'
datafluxRum.init({
applicationId: '<DATAFLUX_APPLICATION_ID>',
datakitOrigin: '<DATAKIT ORIGIN>',
service: 'browser',
env: 'production',
version: '1.0.0',
sessionSampleRate: 100,
sessionReplaySampleRate: 100,
trackInteractions: true,
defaultPrivacyLevel: 'mask-user-input' | 'mask' | 'allow',
shouldMaskNode: (node, privacyLevel) => {
if (node.nodeType === Node.TEXT_NODE) {
// 텍스트 노드인 경우 내용에 숫자가 포함되어 있는지 확인
const textContent = node.textContent || ''
return /\d+/.test(textContent)
}
return false
},
})
datafluxRum.startSessionReplayRecording()
위 예제에서 shouldMaskNode 함수는 모든 텍스트 노드를 확인하여 내용에 숫자(예: 금액, 휴대폰 번호 등)가 포함된 경우 자동으로 차단 처리하여 사용자 데이터의 개인정보 보호 기능을 향상시킵니다.
권장 사항
-
우선 순위 규칙:
•
data-gc-privacy속성과 클래스 이름이 동시에 설정된 경우 프로젝트 문서 설명에 따라 우선 순위를 결정하는 것이 좋습니다. -
적용 시나리오:
•
allow: 차단이 필요 없는 일반 데이터에 적합합니다. •mask: 휴대폰 번호 등 마스크 표시가 필요한 민감한 데이터에 적합합니다. •mask-user-input: 비밀번호 입력란 등 입력 내용을 보호해야 하는 시나리오에 적합합니다. •hidden: 표시하거나 기록하지 않으려는 콘텐츠에 적합합니다. -
모범 사례:
• 클래스 이름이나 속성과 같이 간단하고 명확한 방식을 우선 선택하여 정확한 구성을 보장합니다. • 사용자 개인정보 양식과 같이 민감도가 높은 데이터 시나리오에서는
mask-user-input또는hidden을 사용하는 것이 좋습니다.
위 방법을 통해 민감한 요소에 대한 차단 규칙을 유연하게 구성하여 데이터 보안을 강화하고 비즈니스 규정 준수 요구 사항을 충족할 수 있습니다.