SQL++/N1QL 쿼리

데이터베이스에 저장된 PII를 식별하는 가장 빠른 방법: N1QL, Nodejs 및 Docker를 사용한 간단한 예제

고객들이 자주 요청하는 것은 데이터베이스 내에서 PII를 식별하는 방법입니다. 이를 수행하는 방법을 간단한 예로 보여드리겠습니다.

사용자 스토리: "문서 내에서 암호화되지 않은 신용카드 번호와 주민등록번호를 식별하여 개발자가 데이터베이스에 저장해서는 안 되는 정보를 저장하지 않도록 하고 싶습니다."

배경:  N1QL에는 "토큰화" 기능을 4.6부터 지원합니다. 이 기능을 정규식 함수 의 특정 보조 인덱스와 데이터베이스 내의 패턴을 식별할 수 있는 강력한 도구 세트가 있습니다.

솔루션 예시:  버킷(이 경우에는 '기본' 버킷) 내에 저장된 암호화되지 않은 주민등록번호를 식별하는 쿼리를 만들었습니다. xxx-xx-xxxx 또는 xxxxxxxxx와 일치하는 모든 숫자 패턴을 찾고 있습니다. TOKENS 함수를 사용하면 문서를 문자열 배열로 취급할 수 있습니다. 저는 "specials" 플래그를 사용하여 N1QL이 이러한 문자열을 그대로 유지하도록 지시했습니다. 이 플래그를 사용하지 않으면 공백과 대시를 제거하고 해당 문자 뒤에 오는 항목을 무시합니다. 그런 다음 토큰 배열 내의 요소와 일치하는 정규식을 찾습니다.

버킷에 저장된 암호화되지 않은 신용카드 번호를 식별할 때도 동일한 접근 방식을 사용합니다:

처리 시간을 단축하기 위해 위의 쿼리에 메모리 최적화된 보조 인덱스(MOI)를 사용합니다. Couchbase의 모든 변이는 비동기적으로 인덱스 프로젝터로 전송됩니다. MOI는 인덱스에 포함된 정보를 20ms마다 업데이트한다는 추가적인 이점이 있습니다. 인덱스는 또한 토큰화를 활용합니다.

...그리고 암호화되지 않은 신용 카드의 경우

사용해 보세요: Docker는 제가 개발 환경을 시작하는 데 가장 좋아하는 방법입니다. 위의 예제에 대한 사용하기 쉬운 리포지토리는 github에 있습니다: n1ql-query-nodejs . 도커 컴포즈를 사용하여 두 개의 서비스를 빌드합니다:

  1. 단일 노드 카우치베이스 클러스터 서비스입니다.
  2. 암호화되지 않은 PII를 찾는 등 몇 가지 예제를 위해 250,000개의 사용자 프로필과 인덱스로 Couchbase 클러스터를 프로비저닝하는 nodejs 서비스입니다.
이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 토드 그린스타인

토드 그린스타인은 카우치베이스의 솔루션 아키텍트입니다. Todd는 API 설계, 아키텍처, 데이터 모델링, nodejs 및 골랑 개발을 전문으로 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.