DBMS_REDACT

DBMS_REDACT 패키지의 기본 개념과 패키지 내의 상수 및 프러시저들의 의미를 설명합니다.

개요

DBMS_REDACT은 Tibero에서의 Data redaction을 위한 interface를 제공하는 패키지입니다. Data redaction은 낮은 권한 레벨을 가진 유저 또는 애플리케이션으로부터 입력된 쿼리의 결과 데이터를 masking(Redaction)할 수 있는 기능입니다.

상수

DBMS_REDACT에서는 패키지 내의 프러시저의 파라미터로서 사용할 수 있는 상수들을 정의하고 있습니다.

  • DBMS_REDACT.ADD_POLICY의 function_type 파라미터 상수

상수
타입
설명

NONE

0

BINARY_INTEGER

Data redaction을 하지 않음

FULL

1

BINARY_INTEGER

고정된 값들에 대해 redact

PARTIAL

2

BINARY_INTEGER

Partial redaction으로 컬럼 데이터의 일부분을 redact

FORMAT_PRESERVING

3

BINARY_INTEGER

원본 데이터의 형식을 유지하면서 암호화하는 방식으로 redact (현재 미지원)

RANDOM

4

BINARY_INTEGER

데이터를 무작위 값으로 redact (현재 미지원)

REGEXP

5

BINARY_INTEGER

정규 표현식을 기반으로 redact (현재 미지원)

NULLIFY

6

BINARY_INTEGER

NULL 값으로 redact (현재 미지원)

REGEXP_WIDTH

7

BINARY_INTEGER

컬럼의 너비를 보존하면서 정규 표현식을 기반으로 redact (현재 미지원)

  • DBMS_REDACT.ALTER_POLICY의 action 파라미터 상수

상수
타입
설명

ADD_COLUMN

1

BINARY_INTEGER

Redaction policy에 컬럼 추가

DROP_COLUMN

2

BINARY_INTEGER

Redaction policy에 컬럼 제거

MODIFY_EXPRESSION

3

BINARY_INTEGER

Redaction policy의 표현 수정

MODIFY_COLUMN

4

BINARY_INTEGER

Redaction policy의 컬럼을 수정함으로써 redaction의 function_type 또는 function_parameters를 수정

SET_POLICY_DESCRIPTION

5

BINARY_INTEGER

Redaction policy에 대한 설명을 추가

SET_COLUMN_DE

SCRIPTION

6

BINARY_INTEGER

Redaction policy의 컬럼에 대한 설명 추가

프러시저

본 절에서는 DBMS_REDACT 패키지에서 제공하는 프러시저를 알파벳 순으로 설명합니다.

REDACT적용 결과를 확인하기 위해 권한을 가진 유저(SYS 등)을 통해 다음과 같은 방식으로 필요한 권한을 부여하거나 테이블을 생성할 수 있습니다.

  • 예제

ADD_POLICY

테이블 또는 뷰에 대한 Data redaction policy를 정의합니다.

ADD_POLICY 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

object_schema

  • 테이블을 소유하고 있는 스키마

  • NULL인 경우 현재 유저

object_name

  • Data redaction policy를 추가할 테이블 또는 뷰의 이름

policy_name

  • 정책의 이름

policy_description

  • Redaction policy에 대한 설명

column_name

  • Redaction policy를 적용할 컬럼의 이름

  • 하나보다 많은 컬럼에 대해 적용하는 경우 ALTER_POLICY 프러시저를 이용

column_description

  • Redaction이 적용된 컬럼에 대한 설명

function_type

  • 사용할 redaction 함수의 타입

    • DBMS_REDACT.NONE

    • DBMS_REDACT.FULL (기본값)

    • DBMS_REDACT.PARTIAL

  • 만약 function_type이 DBMS_REDACT.REGEXP인 경우 function_parameters 를 생략해야 함

  • Data redaction policy를 정의하려면 regexp_* parameter 를 사용해야 함

function_parameters

  • Redaction 함수를 위한 파라미터로 function_type이 어떤 값인지에 따라 가능한 값이 바뀜.

  • 만약 function_type이 DBMS_REDACT.REGEXP인 경우 function_parameters를 생략해야 함

  • Data redaction policy를 정의하려면 regexp_* parameter를 사용해야 함

  • 사용할 redaction 함수의타입

    • DBMS_REDACT.NONE : 생략 가능하며 NULL이 기본값

    • DBMS_REDACT.FULL : 생략 가능하며 NULL이 기본값

    • DBMS_REDACT.PARTIAL : Masking parameter를 값으로 넣어줌

  • 다음은 각 데이터 타입별 Masking parameter에 대한 설명임

[Character]

Character 데이터 타입에 대한 Masking parameter는 다음 5가지 요소들이 콤마(,)로 분리된 리스트 형태로 구성됨

  • Input 형식 : Masking이 될 수도 있으면 'V', 형식 문자에 대해서는 무시하므로 'F'로 설정

  • Output 형식 : Masking이 될 수도 있으면 'V', 형식 문자는 그대로 유지

  • Mask character : 실제 값을 대신하게 될 글자. '*' 또는 'x'로 설정

  • 시작 숫자 위치 : String 상에서 masking을 시작할 위치를 설정. String의 시작점은 1. 위치를 계산할 때는 형식 문자들은 고려되지 않음

  • 끝 숫자 위치 : String 상에서 masking이 끝나는 위치를 설정

예를 들어 'VVVFVVFVVVV,VVV-VV-VVVV,X,1,5'가 masking paramter로 들어오면 123-45-6789는 XXX-XX-6789가 됨

[Number]

Number 데이터 타입에 대한 Masking parameter는 다음 3가지 요소들이 콤마(,)로 분리된 리스트 형태로 구성됨

  • Mask character : '0'과 '9' 사이의 글자로 실제 값을 대체

  • 시작 숫자 위치 : String 상에서 masking을 시작할 위치를 설정. String의 시작점은 1. 위치를 계산할 때 소수점은 고려되지 않음

  • 끝 숫자 위치 : String 상에서 masking이 끝나는 위치를 설정

예를 들어 masking parameter가 '9,1,5'인 경우 123456789는 999996789가 됨

[Datetime]

Datetime 데이터 타입에 대한 Masking parameter는 다음 6가지 요소들이 구분자 없이 순차적으로 붙어 구성됨

    • 'M' : 월에 대해 masking하지 않음

    • 'm#' : 가능하면 명시된 숫자로 월을 mask, #은 1부터 12 사이 숫자

    • 'D' : 일에 대해 masking하지 않음

    • 'd#' : 가능하면 명시된 숫자로 일을 mask, #은 1부터 31 사이 숫자

  • 년도

    • 'Y' : 년도에 대해 masking하지 않음

    • 'y#' : 가능하면 명시된 숫자로 년도를 mask, #은 1부터 9999 사이 숫자

    • 'H' : 시에 대해 masking하지 않음

    • 'h#' : 가능하면 명시된 숫자로 시를 mask, #은 0부터 23 사이 숫자

    • 'M' : 분에 대해 masking하지 않음

    • 'm#' : 가능하면 명시된 숫자로 분을 mask, #은 0부터 59 사이 숫자

    • 'S' : 초에 대해 masking하지 않음

    • 's#' : 가능하면 명시된 숫자로 초를 mask, #은 0부터 59 사이 숫자

예를 들어 masking parameter가 'm12DYHMS'인 경우 01-May-01 01:01:01는 01-Dec-01 01:01:01가 됨

expression

  • 테이블 또는 뷰에 대한 default boolean expression

  • 이 파라미터로 들어온 expression의 값이 TRUE일 때만 redaction을 수행

다음 함수들을 지원

  • SYS_CONTEXT

  • SUBSTR 관련 함수들

  • LENGTH 관련 함수들

enable

  • Data redaction policy의 자동 적용 여부를 결정하는 boolean 값

  • TRUE인 경우 자동으로 정책을 적용

regexp_*

  • function_type이 DBMS_REDACT.REGEXP일 때 사용되는 파라미터들이지만 현재 function_type으로 DBMS_REDACT.REGEXP가 지원되지 않는 상태

  • 예제

– function_type이 DBMS_REDACT.PARTIAL인 경우

– function_type이 DBMS_REDACT.FULL인 경우

ALTER_POLICY

테이블 또는 뷰에 대한 Data redaction policy를 바꿉니다. 다음과 같은 방식을 통해 정책을 바꿉니다.

  • 정책의 expression을 변경

  • 특정 컬럼의 redaction의 종류를 변경

  • 특정 컬럼에 대한 redaction 함수의 파라미터를 변경

  • Redaction policy에 컬럼을 추가

  • Redaction policy에서 컬럼을 제거

ALTER_POLICY 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

object_schema

  • 테이블을 소유하고 있는 스키마

  • NULL인 경우 현재 유저

object_name

  • Data redaction policy를 추가할 테이블 또는 뷰의 이름

policy_name

  • 정책의 이름

action

  • 자세한 내용은 “29.2. 상수”를 참고

column_name

  • Redaction policy를 적용할 컬럼의 이름

  • 하나보다 많은 컬럼에 대해 적용하는 경우 ALTER_POLICY 프러시저를 이용

function_type

사용할 redaction 함수의 타입

  • DBMS_REDACT.NONE

  • DBMS_REDACT.FULL (기본값)

  • DBMS_REDACT.PARTIAL

  • 만약 function_type이 DBMS_REDACT.REGEXP인 경우 function_parameters 를 생략해야 함

  • Data redaction policy를 정의하려면 regexp_* parameter 를 사용해야 함

function_parameters

  • Redaction 함수를 위한 파라미터로 function_type이 어떤 값인지에 따라 가능한 값이 바뀜

  • 만약 function_type이 DBMS_REDACT.REGEXP인 경우 function_parameters를 생략해야 함

Data redaction policy를 정의하려면 regexp_* parameter를 사용해야 함

  • DBMS_REDACT.NONE : 생략 가능하며 NULL이 기본값

  • DBMS_REDACT.FULL : 생략 가능하며 NULL이 기본값

  • DBMS_REDACT.PARTIAL : masking parameter를 값으로 넣어줌. 각 데이터 타입에 대한 masking parameter에 대한 자세한 내용은 “29.3.1. ADD_POLICY”의 "function_parameters" 항목을 참고.

expression

테이블 또는 뷰에 대한 default boolean expression

이 파라미터로 들어온 expression의 값이 TRUE일 때만 redaction을 수행

다음 함수들을 지원

  • SYS_CONTEXT

  • SUBSTR 관련 함수들

  • LENGTH 관련 함수들

enable

  • Data redaction policy의 자동 적용 여부를 결정하는 boolean 값

  • TRUE인 경우 자동으로 정책을 적용

regexp_*

  • function_type이 DBMS_REDACT.REGEXP일 때 사용되는 파라미터들이지 만 현재 function_type으로 DBMS_REDACT.REGEXP가 지원되지 않는 상태

policy_description

Redaction policy에 대한 설명

column_description

Redaction이 적용된 컬럼에 대한 설명

  • 예제

DISABLE_POLICY

Data redaction policy가 적용되지 않게 합니다.

DISABLE_POLICY 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

object_schema

  • 테이블 또는 뷰를 소유하고 있는 스키마

  • NULL인 경우 현재 유저

object_name

Data redaction policy를 제거할 테이블 또는 뷰의 이름

policy_name

제거될 정책의 이름

  • 예제

DROP_POLICY

테이블 또는 뷰로부터 masking policy를 제거합니다.

DROP_POLICY 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

object_schema

  • 테이블 또는 뷰를 소유하고 있는 스키마

  • NULL인 경우 현재 유저

object_name

Data redaction policy를 제거할 테이블 또는 뷰의 이름

policy_name

제거될 정책의 이름

  • 예제

ENABLE_POLICY

Data redaction policy가 다시 적용되게 합니다.

ENABLE_POLICY 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

object_schema

  • 테이블 또는 뷰를 소유하고 있는 스키마

  • NULL인 경우 현재 유저

object_name

Data redaction policy를 제거할 테이블 또는 뷰의 이름

policy_name

제거될 정책의 이름

  • 예제

UPDATE_FULL_REDACTION_VALUES

Full redactation에 대한 Data redaction policy에 대해 기본적으로 보여지는 값들을 변경합니다.

UPDATE_FULL_REDACTION_VALUES 프러시저의 세부 내용은 다음과 같습니다.

  • 프로토타입

  • 파라미터

파라미터
설명

number_val

NUMBER 데이터 타입에 대한 컬럼들의 기본값을 변경

binfloat_val

BINARY_FLOAT 데이터 타입에 대한 컬럼들의 기본값을 변경

bindouble_val

BINARY_DOUBLE 데이터 타입에 대한 컬럼들의 기본값을 변경

char_val

CHAR 데이터 타입에 대한 컬럼들의 기본값을 변경

varchar_val

VARCHAR2 데이터 타입에 대한 컬럼들의 기본값을 변경

nchar_val

NCHAR 데이터 타입에 대한 컬럼들의 기본값을 변경

nvarchar_val

NVARCHAR2 데이터 타입에 대한 컬럼들의 기본값을 변경

date_val

DATE 데이터 타입에 대한 컬럼들의 기본값을 변경

ts_val

TIMESTAMP 데이터 타입에 대한 컬럼들의 기본값을 변경

tswtz_val

TIMESTAMP WITH TIME ZONE 데이터 타입에 대한 컬럼들의 기본값을 변경

blob_val

BLOB 데이터 타입에 대한 컬럼들의 기본값을 변경

clob_val

CLOB 데이터 타입에 대한 컬럼들의 기본값을 변경

nclob_val

NCLOB 데이터 타입에 대한 컬럼들의 기본값을 변경

Last updated