Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

Oracle Data Redaction으로 민감한 데이터 보호하기: 동적 데이터 마스킹(DDM) 완벽 가이드

모든 조직은 주민등록번호, 신용카드 번호, 은행 계좌번호처럼 외부에 노출되어서는 안 되는 민감한 데이터를 안전하게 보호해야 하는 중요한 과제에 직면해 있습니다.

소개

각종 규정과 법률은 조직이 자체 데이터와 고객 정보가 악의적인 사용자에게 넘어가지 않도록 보호할 것을 요구하고 있습니다. 데이터 블랙킹(Data Redaction), 즉 동적 데이터 마스킹(Dynamic Data Masking, DDM)은 민감한 데이터 요소를 난독화하거나 숨겨서 무단 노출을 방지하는 기술입니다.

Oracle® Data Redaction은 민감한 정보의 노출을 최소화하고, 애플리케이션 페이지에서 민감한 데이터가 드러날 수 있는 애플리케이션 취약점의 악용을 예방하는 데 효과적인 솔루션입니다.

데이터베이스 관리자, 애플리케이션 관리자, 보안 관리자, 그리고 애플리케이션이 화면에 출력하는 민감한 데이터를 손쉽게 보호하여 규정 준수 요건을 충족하고자 하는 애플리케이션 소유자라면 누구나 Data Redaction을 활용할 수 있습니다.

동적 데이터 마스킹(DDM)이란?

DDM은 운영(프로덕션) 데이터베이스에서 개발·테스트용 비프로덕션 데이터베이스로 데이터를 복사할 때, 마스킹 규칙에 따라 실제와 유사하지만 정제된(scrubbed) 데이터로 민감한 정보를 대체하는 프로세스입니다.

Oracle 12c(현재는 11.2.0.8 버전에서도 지원)부터는 Data Redaction이라는 이름의 내장형 DDM 기능이 도입되었습니다.

Data Redaction의 주요 특징

  • 별도 라이선스가 필요한 Enterprise Edition 옵션인 Oracle Advanced Security의 일부입니다.
  • 데이터베이스 애플리케이션 화면에 표시되는 민감한 데이터를 보호합니다.
  • 원본 데이터 타입과 (선택적으로) 출력 포맷을 그대로 유지하므로 애플리케이션 사용자에게 완전히 투명합니다.
  • SQL 쿼리 결과를 호출자에게 반환하는 직전에만 데이터가 변경되고, 버퍼·캐시·스토리지에는 원본이 그대로 유지되므로 데이터베이스 자체에도 거의 영향을 주지 않습니다.

블랙킹(Redaction) 유형

Data Redaction은 용도에 따라 여러 가지 유형으로 구분됩니다. 아래 이미지에서 각 유형의 차이를 확인할 수 있습니다.

Oracle Data Redaction으로 민감한 데이터 보호하기: 동적 데이터 마스킹(DDM) 완벽 가이드

블랙킹이 적용되지 않는 예외 사항

EXEMPT REDACTION POLICY 시스템 권한을 보유한 사용자에게는 데이터가 절대 블랙킹되지 않습니다. 또한 다음과 같은 상황에서도 블랙킹이 적용되지 않습니다.

  • SYS 사용자로 접속하는 경우
  • 데이터베이스 복제(replication)
  • 백업 및 복원
  • Export / Import 작업

설정 방법

정책을 정의하려면 정책의 추가, 수정, 삭제에 사용되는 DBMS_REDACT 패키지에 대한 실행(EXECUTE) 권한이 필요합니다.

테스트를 위해 아래와 같이 테이블을 생성하고 샘플 데이터를 입력했습니다.

CREATE TABLE CUSTOMERS
   (cust_id     NUMBER NOT NULL
    ,name        varchar2(20)
    ,credit_card NUMBER(16)
    ,exp_date    DATE
    ,creditlimit NUMBER(6,2)
    ,emailadr    varchar2(20)
   )
/

INSERT INTO CUSTOMERS VALUES (1982,'Vijay Garg'    ,4263982640269299,'11-FEB-2022',22.50,'Vijay.Garg@gmail.com');
INSERT INTO CUSTOMERS VALUES (5428,'Ganesh Murthy',4917484589897107,'03-APR-2022',54.00,'Ganesh@oracle.com');
INSERT INTO CUSTOMERS VALUES (6734,'Himanshu Menon' ,4001919257537193,'23-FEB-2022',66.99,'Himanshu@yahoo.com');
INSERT INTO CUSTOMERS VALUES (3285,'Dishant Mathur'    ,4007702835532454,'21-JUN-2022',233.00,'Dishant@aol.com');
INSERT INTO CUSTOMERS VALUES (4522,'Saurabh Agarwal'    ,6362970000457013,'11-JUL-2022',777.00,'Saurabh@gmail.com');
INSERT INTO CUSTOMERS VALUES (1836,'Ankita Anthony'    ,6062826786276634,'06-AUG-2022',235.00,'Ankita@net4india.com');
INSERT INTO CUSTOMERS VALUES (7494,'Varun Mehra'    ,5425233430109903,'18-SEP-2022',33.00,'Varun@outlook.com');
INSERT INTO CUSTOMERS VALUES (6548,'Aaaksh Chopra'    ,2222420000001113,'13-OCT-2022',97.00,'Aaaksh@aol.com');
Commit;

FUNCTION_TYPE 파라미터 설정

정책 정의 시 FUNCTION_TYPE 값을 지정하여 어떤 방식의 블랙킹을 적용할지 결정합니다. 사용 가능한 값은 다음과 같습니다.

  • DBMS_REDACT.NONE — 블랙킹 없음
  • DBMS_REDACT.FULL — 전체 블랙킹
  • DBMS_REDACT.PARTIAL — 부분 블랙킹
  • DBMS_REDACT.RANDOM — 무작위 블랙킹
  • DBMS_REDACT.REGEXP — 정규식 기반 블랙킹

유형별 데이터 출력 결과

아래 섹션에서는 각 블랙킹 유형별로 데이터가 어떻게 표시되는지 살펴봅니다.

1. 블랙킹 없음 (No redaction)

블랙킹을 적용하지 않으면 다음 문장으로 원본 데이터를 그대로 조회할 수 있습니다.

ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY';
COLUMN credit_card format 0000000000000000
COLUMN EMAILADR    format a20
SELECT * FROM CUSTOMERS
Oracle Data Redaction으로 민감한 데이터 보호하기: 동적 데이터 마스킹(DDM) 완벽 가이드

2. 전체 블랙킹 (Full redaction)

DBMS_REDACT 패키지에 대한 실행 권한을 가진 사용자가 정책을 정의합니다. 아래 예제에서는 표현식 1=1이 항상 참이므로 신용카드 데이터가 항상 블랙킹됩니다.

정책 생성:

BEGIN
 DBMS_REDACT.ADD_POLICY (
   object_schema       => 'SAGARG',
   object_name         => 'CUSTOMERS',
   column_name         => 'CREDIT_CARD',
   policy_name         => 'REDACT_POLICY_CARD',
   function_type       => DBMS_REDACT.FULL,
   expression          => '1=1'
 );
END;
/
Oracle Data Redaction으로 민감한 데이터 보호하기: 동적 데이터 마스킹(DDM) 완벽 가이드

3. 부분 블랙킹 (Partial redaction)

아래 예제처럼 신용카드 번호의 1번째 자리부터 12번째 자리까지를 0으로 마스킹할 수 있습니다.

BEGIN
 DBMS_REDACT.ADD_POLICY (
   object_schema       => 'SAGARG',
   object_name         => 'CUSTOMERS',
   column_name         => 'CREDIT_CARD',
   policy_name         => 'REDACT_POLICY_CARD',
   function_type       => DBMS_REDACT.PARTIAL,
   function_parameters => '0,1,12',
   expression          => '1=1'
 );
END;
/

기존에 생성한 정책을 삭제하려면 다음 명령을 실행합니다.

execute DBMS_REDACT.drop_policy ('SAGARG','CUSTOMERS','REDACT_POLICY_CARD');
Oracle Data Redaction으로 민감한 데이터 보호하기: 동적 데이터 마스킹(DDM) 완벽 가이드

필요에 따라 다른 컬럼에도 동일한 방식으로 부분 블랙킹을 적용할 수 있습니다.

4. 무작위 블랙킹 (Random redaction)

무작위 블랙킹을 적용하면 해당 정보가 매번 임의의 값으로 대체되어 표시됩니다.

BEGIN
 DBMS_REDACT.ADD_POLICY (
   object_schema       => 'SAGARG',
   object_name         => 'CUSTOMERS',
   column_name         => 'CREDIT_CARD',
   policy_name         => 'REDACT_POLICY_CARD',
   function_type       => DBMS_REDACT.RANDOM,
   expression          => '1=1'
 );
END;
/
Oracle Data Redaction으로 민감한 데이터 보호하기: 동적 데이터 마스킹(DDM) 완벽 가이드

5. 정규식 기반 블랙킹 (Regular expressions)

정규식을 활용하면 패턴 매칭을 기반으로 데이터를 블랙킹할 수 있습니다. 이메일 주소, IP 주소 등 자주 사용되는 패턴은 미리 정의되어 있어 편리합니다. 아래 예제는 이메일 주소의 로컬 파트(계정명)를 숨깁니다.

BEGIN
 DBMS_REDACT.ADD_POLICY (
   object_schema          => 'SAGARG',
   object_name            => 'CUSTOMERS',
   column_name            => 'EMAILADR',
   policy_name            => 'REDACT_POLICY_CARD',
   function_type          => DBMS_REDACT.REGEXP,
   regexp_pattern         => DBMS_REDACT.RE_PATTERN_EMAIL_ADDRESS,
   regexp_replace_string  => DBMS_REDACT.RE_REDACT_EMAIL_NAME,
   regexp_position        => DBMS_REDACT.RE_BEGINNING,
   regexp_occurrence      => DBMS_REDACT.RE_ALL,
   expression             => '1=1'
 );
END;
/
Oracle Data Redaction으로 민감한 데이터 보호하기: 동적 데이터 마스킹(DDM) 완벽 가이드

expression 파라미터 값이 항상 '1=1'이므로, 모든 세션에서 해당 데이터가 블랙킹됩니다.

특정 사용자에게만 블랙킹 적용하기

특정 사용자에게만 블랙킹을 적용하려면 정책의 expression에 다음과 같은 조건을 추가합니다.

'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''SAGARG'''

적용 예시:

BEGIN
 DBMS_REDACT.ADD_POLICY(
  object_schema => 'SAGARG',
  object_name => 'CUSTOMERS',
  column_name => 'CREDIT_CARD',
  policy_name => 'REDACT_POLICY_CARD',
  function_type => DBMS_REDACT.RANDOM,
  expression => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''SAGARG''');
END;
/
Oracle Data Redaction으로 민감한 데이터 보호하기: 동적 데이터 마스킹(DDM) 완벽 가이드

결론

Oracle Data Redaction을 사용해 애플리케이션 화면에 출력되는 데이터를 블랙킹하면, 해당 정보를 볼 필요가 없는 애플리케이션 사용자에게 민감한 데이터가 노출될 위험을 크게 줄일 수 있습니다.

또한 민감한 정보를 볼 의도가 없는 데이터베이스 사용자가 업무 중 우연히 민감한 데이터를 접하는 상황도 예방할 수 있습니다. 규정 준수와 데이터 보안을 동시에 강화할 수 있는 실용적인 솔루션이라 할 수 있습니다.

궁금한 점이나 의견이 있다면 피드백 탭을 통해 남겨주세요.

전문가와 함께 환경 최적화하기

Rackspace Application Services(RAS) 전문가들은 폭넓은 애플리케이션 포트폴리오 전반에서 다음과 같은 전문 서비스와 관리형 서비스를 제공합니다.

  • e커머스 및 디지털 경험(DX) 플랫폼
  • 엔터프라이즈 리소스 플래닝(ERP)
  • 비즈니스 인텔리전스(BI)
  • Salesforce 고객관계관리(CRM)
  • 데이터베이스
  • 이메일 호스팅 및 생산성 솔루션

Rackspace가 제공하는 것:

  • 공정한 전문성: 현대화 여정을 단순화하고 안내하며, 즉각적인 가치를 창출하는 역량에 집중합니다.
  • Fanatical Experience™: "프로세스 우선, 기술 차후(Process first. Technology second.®)" 철학과 전담 기술 지원을 결합해 종합적인 솔루션을 제공합니다.
  • 타의 추종을 불허하는 포트폴리오: 풍부한 클라우드 경험을 바탕으로 올바른 기술을 올바른 클라우드에 선택·배포하도록 돕습니다.
  • 애자일한 서비스 제공: 고객의 여정이 어느 단계에 있든 그 자리에서 만나 함께 성공합니다.

지금 바로 채팅으로 시작해 보세요.