본문 바로가기

Big DATA/Cloudera

Sensitive Data Redaction

데이터 치환(Data Redaction)은 모든 개인 식별 정보(PII: Personally Identifiable Information)와 같은 민감한 정보를 보호하는 주요 방법입니다. 개인 식별 정보(PII)는자체 데이터로만 또는 다른 정보와 결합되어 특정 개인을 식별하거나 그 사람의 위치 정보를 식별할 수 있는 것을 의미합니다. Redaction 기능을 사용하면 PII 정보를 식별 정보를 포함하지 않는 패턴으로 변환 할 수 있습니다. 예를 들면, 123-45-6789와 같은 주민번호(Social Security Number)를 다음과 같은 형식과 같이 인지할 수 없는 문자열로 변환할 수 있습니다: XXX-XX-XXXX 또는 XXX-XX-6789.

하둡내의 데이터를 보호하기 위해서 암호화 기술을 사용할 수 있지만, 암호화만을 사용하여 하둡내의 데이터를 보호하는 경우에 발생할 수 있는 문제점은 클러스터내의 모든 데이터에 대한 접근 권한을 가지는 관리자의 경우, 이 관리자는 복호화된 민감한 사용자 데이터에 대한 접근 권한을 가지는 것을 의미합니다. 비록 데이터에 적절한 ACL이 있는 사용자 조차도 민감한 데이터에 대한 로그나 쿼리에 대한 접근 권한을 가질수 있기 때문에 이러한 환경에서는 민감한 데이터가 전체 또는 일부 유출될 수도 있습니다. 

데이터 치환(Data Redaction)은 PCI와 HIPAA와 같은 산업 표준 규정을 준수하기 위해 활용해야되는 중요 기능을 제공합니다. 이 기능을 활용하여 민감한 사용자 정보는 클러스터 관리자나 데이터 분석가와 같은 다른 채널의 사용자들이 활용할 수 없도록 방지해야 합니다.   

Log and Query Redaction - Scope and Rules

CDH내의 데이터 치환(Data Redaction)은 민감한 SQL 데이터 및  로그 파일을 대상으로 합니다. HDFS 서비스-수준 구성정보를 변경하여 전체 클러스터 대상으로 Redaction을 Enable 또는 Disable 할 수 있습니다. Redaction은 메타데이터가 아닌 데이터 자체에 민감한 정보가 있음을 가정으로 구현됩니다. 특정 파일에 대한 Redaction 기능을 활성화한 경우, 해당 파일내에 있는 민감한 데이터만이 치환됩니다. 파일의 이름이나 파일의 소유자와 같은 메타데이터는 치환대상이 될 수 없습니다.

Data Redaction이 enabled된 경우, 다음과 같은 데이터들이 치환됩니다 :

  • HDFS내의 로그 및 종속된 모든 클러스터 서비스. Log Redaction 기능은 Isilon기반의 클러스터에서는 사용할 수 없습니다.
  • Cloudera Navigator에 전송되는 감사 데이터(Audit Data)
  • Hue, Hive 및 Impala에서 출력되는 SQL 쿼리 스트링.
Redaction Rules

Redaction 기능은 패턴 매칭을 기반으로 합니다. 주민등록번호, 신용카드 번호와 일자와 같은 민감한 정보의 패턴을 검색할 수 있는 Redaction Rule을 정의하기 위해서 Regular Expression을 사용합니다. 

Redaction Rule을 생성하기 위해서 다음과 같이 Cloudera Manager를 사용합니다:  

  • Search: 데이터에 매핑되는 정규식 표현(Regular Expression). 데이터에 정규식과 매핑되는 패턴이 검출되는 경우, 대체 문자열(Replace String)으로 해당 데이터가 변경됩니다. 예를 들어, 신용카드 번호를 치환하기 위한 정규식 표현식(Regular Expression)은 "\d{4}[^\w]\d{4}[^\w]\d{4}[^\w]\d{4}"와 같습니다..
  • Replace: 정규식 표현식으로 검색된 데이터를 수정할 문자열(String)로 스트링 값입니다. 예를 들어, 신용카드의 카드 번호를 X 문자열로 변경하기 위해서는 대체 문자열(Replace String)의 값은 XXXX-XXXX-XXXX-XXXX입니다.
  • Trigger: 데이터 상에서 검색할 간략한 문자열을 지정(선택 사항). Redactor는Trigger에 정의된 문자열이 해당 데이터에 있는 경우에만 정규식 표현식과 데이터가 일치하는지 여부를 검색합니다. Trigger 항목을 기입하지 않는 경우에는 데이터가 검색 정규 표현식과 패턴이 매핑되는 경우에만 데이터를 수정합니다. 단순한 스트링 매칭이 Regular Expression Matching 보다는 빠르기 때문에, 이 옵션을 사용하면 성능을 개선 시킬 수 있습니다. 

다음은 Cloudera Manager에 사전에 정의된 Redaction Rule입니다. 복수 개의 Redaction Rule은 순차적으로 실행됩니다. 아래의 예에서는 최초 신용카드의 데이터가 치환되며, 그 다음으로 SSN, Email 정보 순서로 치환되며, 마지막에는 Hostname의 정보가 치환됩니다. 

Redaction RuleSearch ExpressionReplace Expression
Credit Card numbers (with separator)\d{4}[^\w]\d{4}[^\w]\d{4}[^\w]\d{4}XXXX-XXXX-XXXX-XXXX
Social Security numbers (with separator)\d{3}[^\w]\d{2}[^\w]\d{4}XXX-XX-XXXX
Email addresses
\b([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-\._] \ *[A-Za-z0-9])@(([A-Za-z0-9]|[A-Za-z] \ [A-Za-z0-9\-]*[A-Za-z0-9])\.)+([A-Za-z0-9] \ |[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\b
email@redacted.host
Hostnames
\b(([A-Za-z]|[A-Za-z][A-Za-z0-9\-] \ *[A-Za-z0-9])\.)+([A-Za-z0-9] \ |[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\b
HOSTNAME.REDACTED

Enabling Log and Query Redaction Using Cloudera Manager

Cloudera Manager의 레이아웃은 크게 1) Classic Layout과 2) New Layout이 있으며, Cloudera는 클래식 모드 대신 New Layout 사용을 권장합니다. New Layout은 Redaction Rule을 사전에 구성하고 테스트 할 수 있습니다. Cloudera Manager를 활용하여 "Log and Query Redaction"을 구성하기 위해서는 :

  1. HDFS 서비스로 이동.
  2. Configuration 탭 클릭.
  3. 검색 창에서, 다음과 같은 Redaction 속성을 표시하기 위해 옵션 값을 입력: 

    PropertyDescription
    Enable Log and Query Redaction

    클러스터에 "Log and Query Redaction"을 적용하기 위한 체크박스 - 체크박스 확인란을 선택

    Log and Query Redaction Policy

    Log 파일과 Query 스트링에서 민감한 정보를 수정하는 룰(Rule) 목록입니다. 미리 구성된 룰을 사용하거나, 사용자 룰(Custom Rule)을 추가하십시오. "Test Redaction Rules"에 테스트용 데이터를 입력하고, "Test Redaction"을 클릭. 정규식 표현식과 패턴이 매핑되지 않는 경우에는, 입력한 텍스트는 변화되지 않고 반환됩니다.

  4. 변경사항을 적용하기 위해서, "Save Changes"을 클릭.
  5. 클러스터 재시작

Configuring the Cloudera Navigator Data Management Component to Redact PII

Lineage 다이어그램에 표시된 Entity 속성에서 감사 이벤트(Audit Event)에 대해 신용카드 번호 패턴 또는 다른 PII 데이터에 대해 마스킹을 지정할 수 있습니다. 감사 정보는 Audit Server 데이터 베이스 및 Metadata Server 스토리지에 저장된 데이터를 대상으로 합니다. 신용카드 정보외의 데이터를 Redaction하는 것은 Cloudera Navigator 속성에서 지원되지 않으며, 주민등록 번호 및 다른 PII 정보를 redaction하기 위해서는 다른 정규식 표현식(Regular Expression)을 사용해야 합니다. 마스킹 기능을 적용하기 전에 수집된 모든 감사 이벤트 및 lineage entity에 대해서는 적용되지 않습니다. 

  1. 다음 방식 중 하나를 선택:

    • Clusters > Cloudera Management Service > Cloudera Management Service 클릭.
    • Cloudera Management Service 테이블의 Home > Status 탭에서, click Cloudera Management Service 링크 클릭.
  2. "Configuration" 탭을 클릭.
  3. "Navigator Audit Server Default Group" 카테고리 확장.
  4. "Advanced" 카테고리 클릭.
  5. 마스킹해야할 신용카드 번호 형식과 일치하는 정규식 표현식을 사용하여 "PII Masking Regular Expression" 속성을 구성하십시오.  기본 표현식은 다음과 같습니다:

    (4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(3[47][0-9]{13})
    |(3(?:0[0-5]|[68][0-9])[0-9]{11})|(6(?:011|5[0-9]{2})[0-9]{12})|((?:2131|1800|35\\d{3})\\d{11})

    다음과 같은 하위 표현식으로 구성됩니다:

    • Visa - (4[0-9]{12}(?:[0-9]{3})?)
    • MasterCard - (5[1-5][0-9]{14})
    • American Express - (3[47][0-9]{13})
    • Diners Club - (3(?:0[0-5]|[68][0-9])[0-9]{11})
    • Discover - (6(?:011|5[0-9]{2})[0-9]{12})
    • JCB - ((?:2131|1800|35\\d{3})\\d{11})
    속성을 비워두면, PII 정보는 마스킹되지 않습니다.
  6. 변경사항을 적용하기 위해서, "Save Changes"을 클릭.


'Big DATA > Cloudera' 카테고리의 다른 글

How Does Cloudera Manager Work?  (0) 2017.02.01
Cloudera - Oracle RAC 구성  (0) 2017.01.10
Authorization With Apache Sentry  (0) 2016.11.14