난독화 룰을 사용하면 에이전트가 뉴렐릭으로 전송하기 전에 민감한 데이터를 마스크할 수 있습니다. 각 룰은 대체 문자열과 쌍을 이루는 정규식 패턴입니다. 에이전트는 나가는 모든 이벤트의 모든 문자열 속성 값에 순서대로 룰을 적용합니다 ― QoE events 및 크래시 복구 이벤트 포함.
작동 원리
- 정규식 패턴과 대체 문자열이 각각 포함된
ObfuscationRule객체 목록을 정의합니다. - 설정 빌더의
.withObfuscationRules()에 목록을 전달합니다. - 각 HTTP 전송 직전에
ObfuscationEngine은(는) 배치의 모든 이벤트에 대한 모든 문자열 속성을 반복하고 순서대로 룰을 적용합니다. - 문자열 값만 처리됩니다 ― 정수, long, 부울 및 null은 변경되지 않고 그대로 전달됩니다.
- 원본 이벤트 객체는 절대 변형되지 않으므로 실패한 배치는 이중 난독화 없이 깔끔하게 재시도할 수 있습니다.
구성
import com.newrelic.videoagent.core.ObfuscationRule;import java.util.Arrays;import java.util.List;
// Define rules — each rule is a regex pattern and a replacement string.// Rules are applied in order on every string attribute of every outgoing event.List<ObfuscationRule> obfuscationRules = Arrays.asList( // Mask account IDs: "account-83729" → "ACCOUNT_ID" new ObfuscationRule("account-\\d+", "ACCOUNT_ID"),
// Mask auth tokens: "token=abc123xyz" → "token=REDACTED" new ObfuscationRule("token=[^&\"]+", "token=REDACTED"),
// Mask user path segments: "/users/john_doe" → "/users/USER_ID" new ObfuscationRule("/users/[^\"/]+", "/users/USER_ID"));
NRVideoConfiguration config = new NRVideoConfiguration.Builder("application-token") .autoDetectPlatform(getApplicationContext()) .withHarvestCycle(5 * 60) .withObfuscationRules(obfuscationRules) .build();
NRVideo.newBuilder(getApplicationContext()).withConfiguration(config).build();ObfuscationRule
new ObfuscationRule(String pattern, String replacement)매개변수 | 유형 | 설명 |
|---|---|---|
|
| 자바 정규식 패턴 문자열입니다. 즉시 컴파일됩니다 ― 잘못된 패턴은 생성 시 |
|
| 각 일치 항목을 대체할 문자열입니다. 일치 항목을 삭제하려면 |
obfuscationRules
HTTP 전송 직전에 모든 발신 이벤트의 모든 문자열 속성에 적용되는 ObfuscationRule 객체 목록입니다. 룰은 선언된 순서대로 실행됩니다 ― 한 룰의 출력이 다음 룰로 전달됩니다. 기본값: 빈 목록 (난독화 없음).
일반적인 패턴
마스크할 항목 | 무늬 | 바꿔 놓음 |
|---|---|---|
숫자 계정 ID |
|
|
인증/베어러 토큰 |
|
|
사용자 경로 세그먼트 |
|
|
이메일 주소 |
|
|
UUID |
|
|
룰 순서 지정
규칙은 왼쪽에서 오른쪽으로 적용됩니다. 규칙 N의 출력이 규칙 N+1의 입력이 됩니다. 한 규칙의 교체가 이후 규칙의 패턴과 일치할 수 있으므로 순서가 중요합니다.
// Rule 1 turns "/john" into "/USER", then Rule 2 sees "/USER_profile" and masks it.new ObfuscationRule("john", "USER"),new ObfuscationRule("USER_profile", "PROFILE")// Result: "/john_profile" → "/USER_profile" → "/PROFILE"엣지 케이스
상황 | 동작 |
|---|---|
구성된 룰 없음 | No-op ― 오버헤드 없음, 원본 목록이 그대로 반환됨. |
패턴과 일치하는 항목 없음 | 값은 변경되지 않고 전달됩니다. |
빈 교체 | 일치하는 콘텐츠가 삭제됩니다. |
| 일반 문자로 처리됩니다(정규식 역참조 아님). |
정수/Long/부울 값 | 건너뜀 ― |
| 건너뜀 ― NullPointerException이 없습니다. |
잘못된 정규식 패턴 |
|
|
|
HTTP 전송 실패 → 데드 레터 재시도 | 원본(난독화되지 않은) 이벤트가 재시도되며, 재시도 패스에서 난독화가 올바르게 다시 적용됩니다. |