로그 난독화 규칙을 사용하면 특정 유형의 정보가 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 > 로그 > 난독화 : 먼저 하나 이상의 난독화 표현식을 생성한 다음 난독화 규칙을 생성합니다.