문서유형ㅣ기술 정보
분야ㅣ유틸리티
적용제품버전ㅣTibero 6, Tibero 7
문서번호ㅣTUTTI033
개요
tbwrap을 사용하여 tbPSM 언어로 작성된 소스 파일을 암호화하여 파일로 저장하고, 암호화된 DDL문으로 프로시저, 패키지, 함수 등을 데이터베이스 생성할 수 있습니다.
$ tbwrap
tbWrap 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Usage: tbwrap [controls]
Controls:
iname Input file path
oname Output file path [default:<input file name>.tbw]
Example:
tbwrap iname=psm.sql --> psm.tbw is generated.
tbwrap iname=psm.sql oname=abc.tbw --> abc.tbw is generated.
방법
사용방법
-- 현재 경로에 확장자만 tbw로 변경된 파일로 출력/저장
$ tbwrap iname=test.sql
-- 현재 경로에 test_enc.tbw라는 파일로 출력/저장
$ tbwrap iname=test.sql oname=test_enc.tbw
-- 디렉터리 지정하여 출력/저장
$ tbwrap iname=$HOME/work/test.sql oname=$HOME/work/test_enc.tbw
사용 예제
함수(fn_test.sql)를 암호화하고 데이터베이스 생성하는 과정을 다음 예제를 통해서 확인합니다.
$ cat fn_test.sql
――――――――――――――――――――――――――――――――――――――――――――――――――――――
create or replace function fn_test (
in_str varchar2
) return varchar2
is
begin
return in_str ;
end ;
/
――――――――――――――――――――――――――――――――――――――――――――――――――――――
tbwrap을 사용하여 함수 fn_test.sql을 fn_test_enc.tbw로 암호화합니다.
$ tbwrap iname=fn_test.sql oname=fn_test_enc.tbw
tbWrap 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Processing fn_test.sql to fn_test_enc.tbw...............................Done
$ cat fn_test_enc.tbw
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
create or replace function fn_test wrapped
CwjTAHTE0wUuhqqxDYjjhGz2Wd6yUrzQWk9z/+zxOkXlxtIoVXgQt+DZ3zhmc2unVa0xT8ymqa9VslnjZDg7b0U9RbpY0PuGusQRCEEly+wY2DiGENXZwMCnwbaLUQ1ZQ2d8X/te+VMcmpi0B8AvMw==
/
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
이후 데이터베이스에서 정상적으로 반영하고 결과를 확인합니다.
$ tbsql tibero/tmax
tbSQL 7
TmaxTibero Corporation Copyright (c) 2020-. All rights reserved.
Connected to Tibero.
SQL> @fn_test_enc.tbw
Function 'FN_TEST' created.
SQL> select fn_test('TEST!') from dual ;
FN_TEST('TEST!')
-----------------------
TEST!
SQL> select text from user_source where name = 'FN_TEST' order by line ;
TEXT
------------------------------------------------------------------------------------------------------------------------
create or replace function fn_test wrapped
CwjTAHTE0wUuhqqxDYjjhGz2Wd6yUrzQWk9z/+zxOkXlxtIoVXgQt+DZ3zhmc2unVa0xT8ymqa9VslnjZDg7b0U9RbpY0PuGusQRCEEly+wY2DiGENXZwMCn
wbaLUQ1ZQ2d8X/te+VMcmpi0B8AvMw==
주의사항
- 패키지를 배포할 경우 사용자에게 사용 방법은 노출시키되 구현 내용은 노출되지 말아야 합니다.
따라서 선언부는 암호화하지 말고, 구현부만 암호화하여 배포하도록 합니다.- 암호화된 구문은 복호화가 불가능하므로 원본 소스 코드를 분실하지 않도록 유의해야 합니다.
- 트리거는 암호화되지 않으므로 내부 구문에서 암호화된 서브 프로그램을 호출하도록 합니다.
- tbwrap 프로그램은 문법 체크는 하지 않으므로 암호화된 파일로 컴파일해야 문법 오류를 확인할 수 있습니다.