회원 정보 DB를 안전하게 활용하기 위한 차단

이 글은 Nell Advent Calendar 2021 다음날의 글이다.
개시하다
서비스를 운영할 때 정식 운행 중 발생한 고장에 대한 조사와 기능 개발 시 동작 확인 등을 할 때 정식 데이터로 조작할 수 있다면 작업이 순조롭게 진행될 수 있다.
그러나 사용자의 개인 정보와 민감한 데이터를 직접 가져와 회사 내부 구성원들이 비교적 여가적인 방문 환경에 반영하면 안전성이 매우 위험하기 때문에 반드시 피해야 한다.
따라서 공식 데이터의 민감한 부분을 숨겨 실제 공식 데이터에 근접한 조사, 확인 동작을 할 수 있다.
숨기기 필수 조건
  • 개인이 확정할 수 없을 정도로 비특정화 가공
  • 개인이 아닌 사용자를 지정하고자 함
  • 제품의 동작 화면에 표시되는 정보에 사용자의 정보를 추가하고 싶다
  • 구체적 방법
    전자 우편 주소
    원형을 남기지 않고 사용자 식별이 쉽게 사용자 ID를 포함하는 형식으로 가공하다
    사용자 이름
    본명 가입자도 있으니 첫글자 이후에는 모두 차단해야 한다
    사용자 아이콘 이미지 path
    때때로 개인 초상화 이미지를 등록하기 때문에 가상 이미지 path로 대체합니다
    숨기기 정보
    컨디션
    Aurora MySQL(5.6)
    실시 방침
    이번에는 SQL만 실현하고 싶어서 MySQL의 문자열 함수를 사용합니다.
    MySQL:MySQL5.6 참조 안내서:12.5 문자열 함수
    개체 데이터 숨기기
    정식 DB를 직접 게재할 수 없기 때문에 이번에는 약간 조정된 가공의 회원 정보표를 사용했다.
    등록 데이터가 사용되었습니다개인정보 테스트 데이터 발생기.

    숨겨진 SQL
    실제 회원 정보표의 SQL은 더욱 복잡하지만, 에센스만 추출하면 이런 형식이다.
    UPDATE users
    SET name = CONCAT(LEFT(name,1), REPEAT('X', CHAR_LENGTH(name) - 1)),
        mail = CONCAT('develop+user_',id,'@example.com'),
        icon_path = '/profile/default.jpg';
    
    결과 숨기기
    Screenshot 2021-12-01_15-29-12-191.png name의 두 번째 문자를 모두 X로 숨겼다.mail의 메일 주소는 develop+user_{ユーザーID}@example.com의 체계로 메일 주소에서 어느 사용자인지 알 수 있다.1 icon_path는 기본 아이콘 이미지default.jpg로 간단하게 바꿉니다.
    끝말
    이번에는 공식 데이터를 활용해 조사·검증할 때 개인정보만 숨기고 신속히 안전성을 확보하는 방법을 제시했다.
    이게 필요할 때 매번 수동으로 조작하는 것이 번거롭기 때문에 조개 껍질 스크립트만 잘하면 저장과 차단을 할 수 있어 편리합니다.
    한편, 개인정보 데이터 자체로 인한 오류나 상담 조사를 할 때는 공식 데이터를 참고해야 한다.이때 공식 데이터를 참조할 수 있는 권한이 있는 유한한 구성원만 대응하여 안전성을 확보하는 것을 주의하십시오.
    Gmail업무별로 메일 주소 만들기 기능으로 작성[email protected]된 메일 리스트는 어느 사용자에게 메일을 보내든 그곳에서 받을 수 있어 테스트 시 편리하다. 

    좋은 웹페이지 즐겨찾기