In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.
로그 난독화 규칙을 사용하면 특정 유형의 정보가 New Relic에 저장되는 것을 방지할 수 있습니다.
요구 사항
로그 난독화는 Data Plus 제품 의 일부로 2022년 6월에 제공될 예정입니다. 자세한 내용은 계정 담당자에게 문의하세요.
개요
로그가 New Relic으로 배송된 후 로그의 민감한 정보는 난독화 규칙을 사용하여 New Relic 데이터베이스인 NRDB 에 저장되기 전에 난독화될 수 있습니다.
민감한 정보에는 신용카드 번호, 주민등록번호, 주민등록번호와 같은 개인 식별 정보 또는 규정에 따라 저장 시 보호해야 할 수 있는 기타 데이터가 포함될 수 있습니다.
중요한 정보와 일치하는 정규식을 정의한 다음 해당 데이터를 난독화하는 규칙을 만들 수 있습니다. 민감한 정보를 마스킹하거나 해시하도록 선택할 수 있습니다.
정의
난독화 규칙 은 난독화 작업을 적용할 로그를 정의합니다.
난독화 규칙 작업 은 볼 속성, 난독화할 텍스트 및 난독화 방법(마스킹 또는 해싱)을 정의합니다.
난독화 표현식 은 난독화할 텍스트를 식별하는 정규식으로 명명됩니다.
마스킹 은 정보를 완전히 제거하고 X 문자로 대체합니다. 이 작업이 완료되면 특정 값을 검색할 수 없습니다.
해싱 은 정보를 숨깁니다. 해싱 도구를 사용하여 중요한 값의 해시를 가져온 다음 해당 해시가 포함된 로그를 검색할 수 있습니다.
난독화 작동 방식
다음 예제에 표시된 JSON 객체는 Obfuscation API에서 사용되는 페이로드의 단순화입니다. 이렇게 하면 서로 다른 API 작업을 해당 UI에 상응하는 작업과 더 잘 연관시키는 데 도움이 됩니다.
예: 난독화 전의 로그 기록
다음과 같은 로그 레코드가 있다고 상상해 보십시오.
{
"message":"The credit card number 4321-5678-9876-2345 belongs to user user@email.com (born on 01/02/2003) with SSN 123-12-1234",
"creditCardNumber":"4321-5678-9876-2345",
"ssn":"123-12-1234",
"department":"sales",
"serviceName":"loginService"
}
이 로그 레코드에는 몇 가지 민감한 데이터가 포함되어 있습니다. 이상적으로는 로그가 다음과 같이 끝나기를 바랍니다.
{
"message":"The credit card number 9aa9bc1528859aee1b1df75795f1ebd54beb2f0d26c8a1d4580a71a07189cdd5 belongs to user user@email.com (born on XXXXXXXXXX) with SSN 30e6897f76dc102e32ee1d781c43417d259e586eac15c963d75ab8b5187769da",
가장 먼저 해야 할 일은 이 민감한 정보를 캡처할 수 있는 난독화 표현을 정의하는 것입니다.
난독화 표현
정의
신용 카드 번호
하이픈으로 구분된 4자리 4개 그룹을 캡처해야 합니다.
{
"name":"Credit Card Number",
"regex":"(d{4}-d{4}-d{4}-d{4})"
}
사회 보장 번호
하이픈으로 구분된 3, 2, 4자리의 3개 그룹을 캡처해야 합니다.
{
"name":"Social Security Number",
"regex":"(d{3}-d{2}-d{4})"
}
생년월일( loginService 특정)
이 예에서 생년월일은 로그인 서비스의 일부입니다. 주변 단어 "(born on 01/02/2003)" 의 날짜 정보를 기반으로 난독화할 부분을 정의합니다.
{
"name":"Born date - loginService specific",
"regex":"born on (.*))"
}
각 난독화 표현식은 문자열에서 일부 민감한 정보를 캡처하는 방법(정규식 사용)을 정의하고 나중에 쉽게 식별할 수 있도록 이를 친숙한 이름과 연결합니다.
난독화 표현식은 재사용 할 수 있습니다. 민감한 데이터를 포함하는 로그 속성의 이름을 지정하는 방법에 대해 완전히 불가지론적입니다. 예를 들어 위에 정의된 사회 보장 표현식은 ssn , socialSecurityNumber 또는 socSecNum 라는 로그 속성에 적용될 수 있습니다.
그러나 여전히 로그 속성의 형식과 밀접하게 연결된 재사용 불가능한 난독화 표현식(예: Born date (loginService specific) )을 만들 수 있습니다. 예를 들어, born on 및 before 뒤에 오는 것을 사용할 수 있습니다.
민감한 데이터를 캡처하는 방법을 정의했으므로 이제 난독화해야 할 로그(로그인 서비스의 로그)와 방법(우리가 정의한 난독화 작업 사용)을 지정해야 합니다. 이를 달성하기 위해 우리는 난독화 규칙을 정의합니다.
{
"name":"Obfuscate Login Service Logs",
"filter":"serviceName = 'loginService' AND department = 'sales'",
"actions":[
{
"attributes":["message","creditCardNumber"],
"expression":{"name":"Credit Card Number"},
"method":"HASH_SHA256"
},
{
"attributes":["message"],
"expression":{"name":"Born date - loginService specific"},
"method":"MASK"
},
{
"attributes":["message","ssn"],
"expression":{"name":"Social Security Number"},
"method":"HASH_SHA256"
}
]
}
이 규칙에는 세 가지 주요 구성 요소가 포함됩니다.
난독화 규칙 구성요소
설명
이름
이름은 규칙이 수행하는 작업을 쉽게 식별하는 데 도움이 됩니다. 이 예에서 이 규칙은 로그인 서비스에서 오는 로그의 다양한 속성을 난독화하는 방법을 정의합니다.
필터
필터는 NRQL 형식을 사용하여 로그인 서비스에서 오는 대상 로그를 식별하는 방법을 시스템에 알려줍니다. 이 예시는 serviceName = loginService 및 department = sales 인 로그를 쿼리합니다.
행위
마지막으로 이 규칙은 필터와 일치하는 로그에 적용할 난독화 작업 세트를 정의합니다. 각 작업은 다음을 정의합니다.
각 속성 집합에서 민감한 정보를 추출하는 데 사용할 이전에 생성된 난독화 표현
이 데이터를 난독화하기 위해 적용할 난독화 방법( HASH_SHA256 또는 MASK )
GraphQL API를 통해 난독화 규칙을 정의할 때 난독화 표현식의 이름 대신 id 을 지정해야 합니다. 이전 예제를 더 읽기 쉽게 만들기 위해 대신 난독화 표현식 이름을 사용했습니다.
마지막 예로서 serviceName = checkoutService 속성과 신용 카드 정보가 포함된 ccn 속성이 있는 "Checkout Service"라는 다른 서비스에서 오는 로그를 난독화해야 한다고 가정해 보겠습니다.
{
"message":"Order completed",
"ccn":"4321-5678-9876-2345",
"department":"sales",
"serviceName":"checkoutService"
}
이 서비스의 로그를 난독화하려면 이러한 특정 로그를 대상으로 하는 다른 난독화 규칙만 정의하면 되고 이전에 생성된 Credit card number 난독화 표현식을 재사용하면 됩니다.
{
"name":"Obfuscate Checkout Service Logs",
"filter":"serviceName = 'checkoutService' AND department = 'sales'",
"actions":[
{
"attributes":["ccn"],
"expression":{"name":"Credit Card Number"},
"method":"HASH_SHA256"
}
]
}
체크리스트: 로그를 난독화하는 단계
로그를 난독화하려면:
로그에 나타나는 민감한 데이터의 패턴을 식별하여 로그의 형태를 연구하십시오. 예를 들어:
모든 로그에 민감한 정보가 포함되어 있습니까? 아니면 좀 더 구체적으로 말씀해 주시겠습니까(서비스 A 또는 지역 B의 로그만)?
신용 카드 번호, 운전 면허증 번호, 주민등록번호, 생체 인식, 기타 값과 같은 민감한 정보가 포함되어 있습니까?
각각에 적용해야 하는 난독화 조치를 정의하십시오. 자문해 보십시오. 나중에 이 민감한 정보를 사용하여 내 로그를 쿼리해야 합니까( HASH 사용 고려), 아니면 이 정보를 내 로그에서 완전히 제거해야 하나요( MASK 사용 고려)?
팁
로그 난독화 UI에는 알려진 값에서 해시를 찾고 다른 표현식 및 규칙과 함께 사용하기 위해 복사할 수 있는 해싱 도구 가 포함되어 있습니다.
CPU 제한
난독화에는 분당 CPU 제한이 있습니다. 계정이 리소스 제한에 도달하면 예상대로 로그가 난독화되지 않습니다. CPU 제한을 확인하려면 New Relic Data 관리 UI의 시스템 제한 페이지 로 이동하십시오.
로그 난독화 UI의 상태 탭을 사용하여 난독화 규칙이 얼마나 잘 작동하고 있는지, 건너뛰는지, 미세 조정이 필요한지 여부를 평가할 수도 있습니다. 난독화 규칙은 CPU를 많이 사용하므로 이러한 차트는 리소스 제한의 가장 큰 영향을 받는 규칙을 결정하는 데 도움이 됩니다.
난독화 표현
New Relic UI를 사용하거나 GraphQL Explorer인 NerdGraph를 사용하여 난독화 표현식을 생성, 읽기, 업데이트 또는 삭제할 수 있습니다.
one.newrelic.com > 로그 > 난독화 : 먼저 하나 이상의 난독화 표현식을 생성한 다음 난독화 규칙을 생성합니다.