Tibero Label Security
레이블을 통하여 사용자의 접근을 제어하는 기능인 Label Security에 대해서 설명합니다.
개요
Label Security는 특정 테이블의 열 및 사용자에게 할당 된 레이블을 이용하여 대상 테이블의 행에 대한 접 근을 제어하는 기능입니다.
기본적으로 Label Security는 행 레이블과 사용자 레이블을 비교하여 사용자의 접근을 제어하는 방식으로 동작하며, 민감한 정보를 승인된 사용에게만 접근 가능하도록 설정할 수 있습니다.
Label Security의 구성 요소
Label Security 기능을 사용하기 위해선 접근 제어 지표인 레이블과 접근 제어 관련 정보를 관리하는 정책 이 필요합니다.
레이블
레이블은 다음과 같은 조건을 만족해야 합니다.
Level
데이터의 민감한 정도를 수직적으로 나타냄 (예: 공개, 대외비, 기밀)
Compartment
데이터의 구성을 수평적으로 나타냄
개별 프로젝트에 대한 접근을 제어하는 데 도움이 (예: 알파, 베타, 감마)
Group
데이터의 구성을 tree 형태로 나타냄
계층형 구조의 데이터에 대한 접근을 제어하는 데 도움이 됨 (예: 티맥스 – 티맥스데이터, 티맥스소프트)
정책
접근 제어 관련 정보를 관리하는 메인 컨테이너입니다.
예를 들어 데이터의 민감도가 공개자료, 대외비, 기밀 3 단계의 level로 이루어져 있을 때 특정 사용자에게 대외비까지 접근할 수 있는 level이 부여되었습니다면 그 사용자가 기밀 데이터에 접근하는 것은 불가능합니다.
레이블에 대한 이해
Label Security 기능을 사용하기 위해서는 레이블 기반 보안 방식에 및 레이블 구성 요소에 대한 이해가 필 요합니다.
레이블 기반 보안 방식
레이블은 크게 데이터 레이블과 사용자 레이블로 나누어 생각할 수 있습니다.
데이터 레이블 행 데이터의 민감한 정도와 특성을 나타내며, 사용자가 해당 행에 접근하기 위해 충족해야 하는 기준이 됩니다.
사용자 레이블 사용자의 민감한 정도와 레이블이 지정된 데이터에 대한 사용자의 접근을 제한하는 기준이 됩니다. 각 사 용자에게는 레벨, 구획, 그룹의 범위가 할당되며 해당 범위 내의 레이블이 있는 데이터에 접근 가능합니다.
레이블 구성 요소
레이블을 구성하는 요소는 레벨, 구획, 그룹으로 나뉩니다. 해당 요소들을 적절하게 결합하여 레이블을 생성 할 수 있습니다.
레벨 구성 요소
레벨은 레이블 정보의 민감도를 등급화 한 지표입니다. 큰 레벨 값은 정보의 민감도가 높다는 것을 의미한 다.
다음과 같이 레벨을 정의할 수 있습니다.
30
기밀 (SECRET)
S
20
대외비 (CONFIDENTIAL)
C
10
공개 (PUBLIC)
P
구획 구성 요소
구획은 레이블이 지정된 데이터 정보의 민감도를 더 세분화하는 영역입니다. 특정 프로젝트와 관련 있는 모 든 데이터는 동일한 구획으로 레이블을 지정할 수 있습니다.
다음과 같이 구획을 정의할 수 있습니다.
80
알파 (ALPHA)
A
50
베타 (BETA)
B
20
감마 (GAMMA)
G
그룹 구성 요소
그룹은 계층적 구조로 레이블이 지정된 데이터 정보의 민감도를 더 세분화하는 영역입니다. 조직 구성을 기 반으로 데이터에 레이블을 지정할 수 있으며, 특정 부서와 관련있는 모든 데이터는 레이블에 해당 부서의 그룹을 포함할 수 있습니다.
다음과 같이 그룹을 정의할 수 있습니다.
레이블 구문 유형
레이블 구성 요소를 정의한 후 특정 레벨, 구획, 그룹 집합을 결합하여 데이터 레이블을 생성할 수 있습니다. 다음과 같은 구문 형태로 레이블 문자열 표현이 가능합니다.
레벨 구성 요소
레벨은 레이블 정보의 민감도를 등급화한 지표입니다. 큰 레벨 값은 정보의 민감도가 높다는 것을 의미합니다. 다음과 같이 레벨을 정의할 수 있습니다.
30
기밀 (SECRET)
S
20
대외비 (CONFIDENTIAL)
C
10
공개 (PUBLIC)
P
구획 구성 요소
구획은 레이블이 지정된 데이터 정보의 민감도를 더 세분화하는 영역입니다. 특정 프로젝트와 관련 있는 모 든 데이터는 동일한 구획으로 레이블을 지정할 수 있습니다.
다음과 같이 구획을 정의할 수 있습니다.
80
알파 (ALPHA)
A
50
베타 (BETA)
B
20
감마 (GAMMA)
G
그룹 구성 요소
그룹은 계층적 구조로 레이블이 지정된 데이터 정보의 민감도를 더 세분화하는 영역입니다. 조직 구성을 기 반으로 데이터에 레이블을 지정할 수 있으며, 특정 부서와 관련있는 모든 데이터는 레이블에 해당 부서의 그룹을 포함할 수 있습니다.
다음과 같이 그룹을 정의할 수 있습니다.
1000
TMAX
T
1100
TMAX_DATA
T_DATA
T
1200
TMAX_SOFT
T_SOFT
T
관리자 권한 작동 방식
Label Security 관리자가 설정 한 권한에 따라 사용자의 접근을 제어합니다.
권한 부여 레벨
관리자는 사용자에게 Label Security 정책에 대한 레벨 권한을 명시적으로 설정할 수 있습니다.
사용자 최대 레벨
사용자가 읽기/쓰기 작업 중 접근 가능한 최대 레벨
사용자 최소 레벨
사용자가 쓰기 작업 중 접근 가능한 최소 레벨 (사용자 최대 레벨은 사용자 최 소 레벨보다 크거나 같아야 함)
사용자 기본 레벨
기본적으로 설정되는 레벨
사용자 기본 행 레벨
데이터를 삽입할 때 기본적으로 사용되는 레벨
권한 부여 구획
관리자는 사용자가 접근할 수 있는 구획을 명시적으로 지정할 수 있습니다. 쓰기 권한이 없는 구획이 포함된 행을 직접 삽입, 업데이트 또는 삭제할 수 없습니다.
다음은 사용자에게 지정한 구획에 대한 예입니다.
A
알파 (ALPHA)
YES
YES
YES
B
베타(BETA)
YES
YES
NO
C
감마(GAMMA)
YES
YES
NO
권한 부여 그룹
관리자는 사용자가 접근할 수 있는 그룹을 명시적으로 지정할 수 있습니다. 다음은 사용자에게 지정한 그룹에 대한 예입니다.
Label Security 정책 생성
본 절에서는 Label Security의 정책을 생성하는 방법과 그 과정을 설명합니다.
Label Security 정책 컨테이너 생성
Label Security 정책 컨테이너는 정책에 대한 메타 데이터를 저장합니다. 이 컨테이너는 정책의 이름, 정책을 부여할 테이블에 추가되는 열의 이름, 정책에 대한 기본 옵션을 담고 있습니다.
다음은 정책을 생성하는 구문에 대한 예입니다.
Default option은 정책을 특정 테이블에 적용할 때, 테이블 옵션을 부여하지 않을 경우 설정되는 기본 옵션 입니다.
Label Security 정책에 대한 데이터 레이블 생성
데이터 레이블은 테이블 행 의 민감도를 나타냅니다.
데이터 레이블의 구성요소는 레벨, 구획, 그룹이 있습니다.
레벨
등급에 따른 구분 (예: 기밀(SECRET), 대외비(CONFIDENTIAL), 공개(PUBLIC))
구획
영역에 따른 구분 (예: 알파(ALPHA), 베타(BETA), 감마(GAMMA))
그룹
계층에 따른 구분 (예: TMAX, TMAX_DATA, TMAX_SOFT)
정책에 대한 레벨 생성
레벨은 등급에 따른 구분입니다. 숫자가 클수록 높은 보안 등급을 의미합니다.
30
기밀 (SECRET)
S
20
대외비 (CONFIDENTIAL)
C
10
공개 (PUBLIC)
P
다음은 정책에 대한 레벨을 생성하는 예입니다.
정책에 대한 구획 생성
구획은 영역에 따른 구분입니다. 사용자는 자신이 속한 영역의 데이터를 읽을 수 있습니다.
80
알파 (ALPHA)
A
50
베타 (BETA)
B
20
감마 (GAMMA)
G
다음은 정책에 대한 구획을 생성하는 예입니다.
정책에 대한 그룹 생성
그룹은 계층에 따른 구분입니다. 사용자는 자신이 속한 조직의 데이터를 읽을 수 있습니다.
1000
TMAX
T
1100
TMAX_DATA
T_DATA
T
1200
TMAX_SOFT
T_SOFT
T
다음은 정책에 대한 그룹을 생성하는 예입니다.
데이터 레이블 생성
SA_LABEL_ADMIN.CREATE_LABEL을 통해 데이터 레이블을 생성할 수 있습니다. 다음은 데이터 레이블을 생성하는 예입니다.
참고
모든 정책에 대해 레이블 테그(label_tag)는 유일해야 하며, 같은 정책 내에서 같은 레이블 값(label_val ue)에 서로 다른 레이블 테그를 설정하는 것은 불가능합니다. 하지만 다른 정책에 대해서는 레이블 값 이 동일 하더라도 서로 다른 레이블 테그를 설정할 수 있습니다.
Label Security 정책에 대한 사용자 권한 부여
사용자 레이블은 SA_USER_ADMIN.SET_LEVELS, SA_USER_ADMIN.SET_COMPARTMENTS, SA_USER_ADMIN.SET_GROUPS 프러시저를 통해 부여할 수 있습니다.
정책에 대한 사용자 레벨 부여
레벨은 SA_USER_ADMIN.SET_LEVELS 프러시저를 통해 부여할 수 있습니다. 다음은 정책에 대한 사용자 레벨을 부여하는 예입니다.
policy_name
정책 이름
user_name
정책이 적용될 사용자 이름
max_level
사용자가 읽기/쓰기 작업 중 접근 가능한 최대 레벨
min_level
사용자가 쓰기 잡업 중 접근 가능한 최소 레벨(사용자 최대 레벨은 사용자 최 소 레벨보다 크거나 같아야 합니다.)
def_level
기본적으로 설정되는 레벨
row_level
데이터를 삽입할 때 기본적으로 사용되는 레벨
정책에 대한 사용자 구획 부여
레벨을 설정한 후 선택적으로 구획을 사용자에게 부여할 수 있습니다. SA_USER_ADMIN.SET_COMPART MENTS 프러시저를 통해 부여할 수 있습니다.
다음은 정책에 대한 사용자 구획을 부여하는 예입니다.
policy_name
정책 이름
user_name
정책이 적용될 사용자 이름
read_comps
읽기 가능한 구획
write_comps
쓰기 가능한 구획
def_comps
기본적으로 설정되는 구획
row_comps
데이터를 삽입할 때 기본적으로 사용되는 구획
정책에 대한 사용자 그룹 부여
레벨을 설정한 후 선택적으로 그룹을 사용자에게 부여할 수 있습니다. SA_USER_ADMIN.SET_GROUPS 프 러시저를 통해 부여할 수 있습니다.
다음은 정책에 대한 사용자 그룹을 부여하는 예입니다.
policy_name
정책 이름
user_name
정책이 적용될 사용자 이름
read_groups
읽기 가능한 그룹
write_groups
쓰기 가능한 그룹
def_groups
기본적으로 설정되는 그룹
row_groups
데이터를 삽입할 때 기본적으로 사용되는 그룹
데이터베이스 테이블에 정책 적용
테이블에 대한 정책 적용은 SA_POLICY_ADMIN.APPLY_TABLE_POLICY 프러시저를 통해 할 수 있습니다. 다음은 데이터베이스 테이블에 정책을 적용하는 예입니다.
policy_name
정책 이름
schema_name
스키마 이름
table_name
정책이 적용될 테이블 이름
table_options
정책 시행 옵션
label_function
Label 함수의 문자열
predicate
Read control과 함께 쓰이는 조건
Last updated

