DBMS 2

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

Security

DBMS 2
Sybase 가이드
DBA를 위한 가이드
Security
작성자
admin
작성일
2021-02-19 13:58
조회
663

Security

소스 코드 암호화

12.6 부터 stored procedure, function, view와 같은 오브젝트의 DDL을 다른 사용자가 볼 수 없게 암호화해서 저장할 수 있습니다.

그렇지만 이때 암호화된 소스는 복호화가 되지 않기 때문에 주의해서 사용해야 합니다.

syntax
ALTER PROCEDURE [owner.]procedure-name SET HIDDEN;
ALTER FUNCTION [owner.]function-name SET HIDDEN;
ALTER VIEW view-name SET HIDDEN;

예)
ALTER PROCEDURE sp_product_info SET HIDDEN;


환경 파일 암호화

12.6 부터 .odbc.ini 와 같은 사용자 계정과 같은 민감한 정보를 저장하고 있는 텍스트 파일을 암호화할 수 있는 방법을 제공하고 있습니다.

dbfhide라는 유틸리티를 이용하여 대상 텍스트 파일을 암호화하여 사용할 수 있으며 이때 주의하실 점을 한번 암화화된 소스는 복호화되지 않습니다.

syntax
% dbfhide source-file dest-file

예1)
% dbfhide asiqdemo.cfg encrypted_asiqdemo.cfg
% start_asiq @encrypted_asiqdemo.cfg

예2)
% dbfhide .odbc.ini encrypted_odbc.ini
% mv encrypted_odbc.ini .odbc.ini
% dbisqlc -c dsn=asiqdemo ……


패킷 암호화

IQ 클라이언트 환경에서 설정할 수 있는 방법


  • 특정한 클라이언트가 IQ 서버와 암호화된 패킷을 주고 받고자 할 때 Encryption 이라는 connection parameter 값을 설정하여 사용할 수 있습니다.단, TDS 패킷은 암호화되지 않습니다.
  • TCP/IP 프로토콜 환경에서만 가능하며 지정할 수 있는 값은 NONE, SIMPLE, ECC_TLS, RSA_TLS 입니다.
  • 예)
    "ENG=…;LINKS=tcpip;Encryption=RSA_TLS(trusted_certificates=sample.crt"

IQ 서버 환경에서 설정할 수 있는 방법


  • IQ 서버와 모든 클라이언트 사이에 암호화된 패킷을 주고 받고자 할 때 서버 기동 옵션으로 -ec에 특정한 값을 설정하여 사용할 수 있습니다. 단, TDS 패킷은 암호화되지 않습니다.
  • TCP/IP 프로토콜 환경에서만 가능하며 지정할 수 있는 값은 NONE, SIMPLE, ECC_TLS, RSA_TLS 입니다.
  • 예)
    % start_asiq -ec ecc_tls(certificate=sample.crt;certificated_password=…..)
카다로그 파일 암호화

CREATE DATABASE 명령어를 통해 카다로그 영역인 .db 파일을 읽을 수 없도록 암호화 할 수 있으며 다음과 같은 두가지 레벨이 있습니다.


  • Simple Encryption : 암호화할 때 key를 지정하지 않는 경우
  • Strong Encryption : 128 bit 암호화 알고리즘과 security key를 지정한 경우

이렇게 암호화 했어도 적절한 권한을 가진 사용자가 SQL을 통해서는 카다로그 내용을 조회할 수 있습니다.

syntax
CREATE DATABASE database-name
……
ENCRYPTED ON | OFF | key-spec

예)
CREATE DATABASE asiqdemo.db
……
ENCRYPTED ON ;


Audit

보안체계를 강화하기 위해 12.6부터 감사기능이 제공되며 감사기능이 설정되면 특정한이벤트 혹은 모든 이벤트에 대한 자세한 정보를 transaction log에 기록합니다.

이렇게 감사기능을 설정하면 보안에 따른 장점은 있으나 약간의 성능 저하는 감수해야 합니다.

transaction log에 기록된 감사 정보는 dbtran 이라는 유틸리티를 통해 조회할 수 있으며 감사되는 이벤트는 다음과 같습니다.


  • 모든 connect 시도, 실패한 connect 시도, DDL, public 옵션에 대한 변경
  • setuser 시도, DBA 권한을 요청하는 모든 시도

Auditing 이라는 옵션을 On으로 설정하여 모든 이벤트에 대한 감사를 할 수 있고 On으로 설정한 후 sa_enable_auditing_type 이라는 stored procedure를 통해 특정한 이벤트에 대한 감사를 지정할 수 있습니다.

예)
SET OPTION PUBLIC.Auditing = 'On'; // 감사 시작
sa_disable_auditing_type('all'); // 모든 이벤트에 대한 감사 정지
sa_enable_auditing_type('connect'); // 성공된connect 만 감사">