난독화 룰을 사용하면 에이전트가 뉴렐릭으로 전송하기 전에 민감한 데이터를 마스크할 수 있습니다. 각 룰은 대체 문자열과 쌍을 이루는 정규식 패턴입니다. 에이전트는 QoE 이벤트 및 크래시 복구 이벤트를 포함하여 모든 발신 이벤트의 모든 문자열 속성 값에 순서대로 룰을 적용합니다.
iOS
구성
Objective-C
NRVAVideoConfiguration *config = [[[[NRVAVideoConfiguration builder] withApplicationToken:@"YOUR_NEW_RELIC_TOKEN"] withObfuscationRules:@[ @{ @"regex": @"account-\\d+", @"replacement": @"ACCOUNT_ID" }, @{ @"regex": @"token=[^&\"]+", @"replacement": @"token=REDACTED" }, ]] build];[[[NRVAVideo newBuilder] withConfiguration:config] build];Swift
let config = NRVAVideoConfiguration.builder() .withApplicationToken("YOUR_NEW_RELIC_TOKEN") .withObfuscationRules([ ["regex": "account-\\d+", "replacement": "ACCOUNT_ID"], ["regex": "token=[^&\"]+", "replacement": "token=REDACTED"], ]) .build()NRVAVideo.newBuilder().with(configuration: config).build()작동 원리
- 에이전트는 원시 JSON 페이로드가 아닌 문자열 속성 값별로 룰을 적용합니다 ― 숫자 및 부울 속성은 영향을 받지 않습니다.
- 모든 룰은 일반, 라이브, QoE 및 크래시 복구 이벤트를 포함한 모든 발신 이벤트에 대해 실행됩니다.
- 룰은 선언한 순서대로 실행됩니다. 두 룰이 동일한 값과 일치할 수 있는 경우 순서가 중요합니다.
- 에이전트는
applicationToken또는 HTTP 인증 헤더를 절대 난독화하지 않습니다 ― 난독화는 이벤트 속성 값에만 적용됩니다.
엣지 케이스
| 시나리오 | 행동 |
|---|---|
| 구성된 룰 없음 | 에이전트는 성능에 영향을 주지 않고 모든 속성 값을 변경 없이 전달합니다. |
| 빈 대체 문자열 | 에이전트는 값에서 일치하는 콘텐츠를 제거합니다. |
| 잘못된 정규식 패턴 | withObfuscationRules: 이벤트를 전송하기 전 설정 시점에 NSInvalidArgumentException 을(를) 발생시킵니다. |
| 문자열이 아닌 속성 값 | 에이전트는 속성을 건너뜁니다. 문자열 값만 처리됩니다. |
| 잘못된 형식의 룰 어레이 항목 | 에이전트는 딕셔너리가 아닌 항목을 건너뛰고 로그에 경고를 기록합니다. |
applicationToken 및 HTTP 인증 헤더 | 이들은 이벤트 속성에 절대 포함되지 않으며 난독화 룰의 영향을 받지 않습니다. |
| 룰 순서 지정 | 룰은 어레이에 선언된 순서대로 실행됩니다. |
| 치명적인 백트래킹 | NSRegularExpression iOS에는 기본 제공 타임아웃이 없습니다. 제한 없는 중첩 수량자가 있는 패턴은 피하세요(예: (a+)+). 배포하기 전에 최악의 입력에 대해 룰을 테스트하세요. |
Roku
에이전트가 뉴렐릭에 이벤트를 보내기 전에 민감한 데이터를 마스크하도록 정규식 기반 난독화 룰로 에이전트를 구성할 수 있습니다. contentSrc, contentTitle, origUrl 또는 커스텀 속성과 같은 필드에 사용자 ID, 토큰 또는 기타 PII가 의도치 않게 포함될 수 있는 경우 이 기능을 사용하십시오.
에이전트는 이벤트가 내부 버퍼에 들어가기 전에 나가는 모든 이벤트의 모든 문자열 속성에 ― 비디오, 광고(RAF 및 IMA), QOE, 시스템 및 커스텀 대시보드 포함 ― 룰을 적용합니다.
구성
에이전트를 생성한 후 nrSetObfuscationRules 을(를) 호출하십시오. 각 룰은 regex 문자열과 replacement 문자열이 있는 연관 어레이입니다:
m.nr = NewRelic("ACCOUNT_ID", "API_KEY", "APP_NAME", "APP_TOKEN")nrSetObfuscationRules(m.nr, [ { regex: "account-[0-9]+", replacement: "ACCOUNT_ID" }, { regex: "token=[^&]+", replacement: "token=REDACTED" }, { regex: "/users/[^/]+", replacement: "/users/USER_ID" }])런타임에 모든 규칙을 제거하려면 빈 어레이로 nrSetObfuscationRules 을(를) 호출하세요:
nrSetObfuscationRules(m.nr, [])룰 순서 지정
에이전트는 어레이에 나타나는 순서대로 룰을 적용합니다. 한 룰의 출력이 다음 룰의 입력이 됩니다. 패턴이 겹칠 수 있는 경우 순서가 중요합니다:
nrSetObfuscationRules(m.nr, [ ' Applied first — masks the specific token format { regex: "auth-token-[a-z0-9]+", replacement: "AUTH_TOKEN" }, ' Applied second — masks any remaining bare token references { regex: "token=[^&]+", replacement: "token=REDACTED" }])동작 및 엣지 케이스
| 케이스 | 행동 |
|---|---|
| 구성된 룰 없음 | 에이전트는 성능에 영향을 주지 않고 모든 속성 값을 변경 없이 전달합니다. |
빈 replacement 문자열 | 에이전트는 값에서 일치하는 콘텐츠를 제거합니다. |
| 잘못된 정규식 패턴 | 에이전트는 룰을 건너뛰고 로그에 경고를 기록합니다. |
| 문자열이 아닌 속성 값 | 에이전트는 이를 변경하지 않고 통과시킵니다. 문자열 값만 처리됩니다. |
| 모든 규칙 교체 | 새 어레이로 nrSetObfuscationRules 을(를) 다시 호출합니다. 에이전트는 이전의 모든 룰을 삭제합니다. |
중요
Roku는 패턴 일치에 roRegex 을(를) 사용합니다. Roku는 복잡한 전방탐색/후방탐색 어설션을 지원하지 않습니다. JavaScript 또는 자바 정규식에서 유효한 패턴은 Roku에 맞게 단순화해야 할 수 있습니다.