DBMS/AgensSQL

DBMS 암호화 기능과 데이터 암호화

(주)비트나인 2023. 9. 14. 17:27

DBMS 암호화 기능과 데이터 암호화

 

개인 정보의 중요성이 강조되는 요즘, 기업들은 사내 직원 및 고객 데이터 정보를 안전하게 보관해야 할 의무가 강화되고 있습니다. 기업이 수집한 데이터를 기반으로 고도화된 분석과 인공지능 서비스의 확대로 개인 정보 이외의 데이터 가치도 높아졌습니다. 따라서 DBMS를 운영하는 과정에서 보안의 중요성은 날이 갈수록 더해지고 있습니다.

AgensSQL은 몇 가지 기본적인 보안 기능을 제공하고 있습니다. AgensSQL에서 제공하는 보안 기능에 대한 간단한 설명과 몇 가지 예시를 살펴보겠습니다.

 

1. Password Profile

 

AgensSQL을 사용하면 데이터베이스 슈퍼유저가 명명된 프로파일을 만들 수 있습니다. 각 프로필은 암호 및 md5인증을 강화하는 암호 관리 규칙을 정의합니다. 프로필의 규칙은 다음과 같습니다.

- 실패한 로그인 시도 횟수 

- 과도한 로그인 시도 실패로 인해 계정 잠금

- 비밀번호 만료 표시

- 암호 만료 후 유예 기간 정의

- 암호 복잡성에 대한 규칙 정의

- 암호 재사용을 제한하는 규칙 정의

 

Password Profile은 인증 요구 사항이 적용된 유저를 관리하는 데 사용합니다. 암호 요구 사항이 변경되면 해당 프로필과 연결된 각 사용자에게 새 요구 사항이 적용되도록 프로필을 수정할 수 있습니다. 

프로필은 한 명 이상의 사용자와 연결할 수 있습니다. 사용자가 서버에 연결하면 서버는 자신의 로그인 역할과 연결된 프로필을 적용합니다. 프로파일은 클러스터 내의 모든 데이터베이스에서 공유되지만, 각 클러스터는 여러 개의 프로파일을 가질 수 있습니다. 여러 데이터베이스에 대한 액세스 권한을 가진 단일 사용자는 클러스터 내의 각 데이터베이스에 연결할 때 동일한 프로파일을 사용합니다.



AgensSQL은 다음 이름의 프로파일을 만듭니다. DEFAULT 대체 프로필을 지정하지 않으면 역할이 생성될 때 새 역할과 연결되어 DEFAULT 프로필을 삭제할 수 없습니다.

DEFAULT 프로필에는 다음 특성이 포함되어 있습니다:

FAILED_LOGIN_ATTEMPS UNLIMITED
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL

 

데이터베이스 SuperUser만 ALTER PROFILE 명령을 사용하여 DEFAULT 프로필의 매개 변수 값을 수정할 수 있습니다.

 

FAILED_LOGIN_ATTEMPTS 

사용자가 시도할 수 있는 실패한 로그인 시도 횟수를 지정합니다 . 

 

PASSWORD_LOCK_TIME 

서버가 FAILED_LOGIN_ATTEMPTS 로 인해 잠긴 계정의 잠금을 해제되기 전에 경과해야 하는 시간을 지정합니다. 

 

PASSWORD_LIFE_TIME

사용자에게 새 암호를 입력하라는 메시지가 표시되기 전에 현재 암호를 사용할 수 있는 일 수를 지정합니다. PASSWORD_LIFE_TIME 절을 사용하여 암호가 만료된 후 연결이 거부되기 전에 경과할 일 수를 지정하는 경우 PASSWORD_GRACE_TIME 절을 포함합니다. PASSWORD_GRACE_TIME이 지정되지 않은 경우 암호는 기본값인 PASSWORD_GRACE_TIME으로 지정된 날짜에 만료되며 사용자는 새 암호가 제공될 때까지 명령을 실행할 수 없습니다. 

 

PASSWORD_GRACE_TIME 

암호가 만료된 후 사용자가 암호를 변경해야 할 때까지의 유예 기간을 지정합니다. 유예 기간이 만료되면 사용자는 연결할 수 있지만 만료된 암호를 업데이트할 때까지 명령을 실행할 수 없습니다. 

 

PASSWORD_REUSE_TIME

사용자가 암호를 다시 사용하기 전에 기다려야 하는 일 수를 지정합니다. PASSWORD_REUSE_TIME 및 PASSWORD_REUSE_MAX 매개변수는 함께 사용하기 위한 것입니다. 이러한 매개변수 중 하나에 대해 유한한 값을 지정하고 다른 하나는 UNLIMITED 로 지정하면 이전 암호를 다시 사용할 수 없습니다. 두 매개변수가 모두 UNLIMITED로 설정되면 암호 재사용에 대한 제한이 없습니다. 

 

PASSWORD_REUSE_MAX

비밀번호를 재사용하기 전에 발생해야 하는 비밀번호 변경 횟수를 지정합니다. PASSWORD_REUSE_TIME 및 PASSWORD_REUSE_MAX 매개변수 는 함께 사용하기 위한 것입니다. 이러한 매개변수 중 하나에 대해 유한한 값을 지정하고 다른 하나는 UNLIMITED로 지정하면 이전 암호를 다시 사용할 수 없습니다. 두 매개변수가 모두 UNLIMITED로 설정되면 암호 재사용에 대한 제한이 없습니다.

 

PASSWORD_VERIFY_FUNCTION

암호 복잡성을 지정합니다. 

 

2. Data Redaction

Data Redaction은 특정 사용자에게 표시되는 데이터를 동적으로 변경하여 민감한 데이터 노출을 제한합니다. CREATE REDACTION POLICY 명령을 사용하여 Data Redaction 정책을 등록 합니다.

이 명령은 정책이 적용되는 테이블, 열, 사용자를 결정 및 기타 옵션을 지정합니다.

SuperUser와 테이블 소유자는 데이터 편집을 건너뛰고 원본 데이터를 볼 수 있습니다.

다른 모든 사용자는 수정 정책이 적용되어 제한된 데이터를 볼 수 있습니다.

일반적인 테이블 조회 결과
Data Redaction을 적용한 테이블 조회 결과

Data Redaction 기능을 활용하여 민감한 정보를 관리할 수 있습니다.

 

3. Audit

AgensSQL은 데이터베이스 보안 관리자 및 운영자가 감사 로깅 기능을 사용하여 데이터베이스 활동을 추적하고 분석할 수 있도록 합니다. AgensSQL 감사 로깅은 지정된 데이터베이스 이용 정보를 포함한 감사 로그 파일을 생성합니다. 감사 로그 파일은 ag_audit 구성 매개 변수의 설정에 따라 CSV 형식으로 생성됩니다

postgresql.conf 또는 postgresql.auto.conf에 지정된 매개변수로 Audit 기능을 제어할 수 있습니다.

 

postgresql.conf의 매개변수를 사용하여 데이터베이스 Audit을 구성할 수 있습니다. Audit 기능을 사용하기 위해선 기본적으로 logging_collector 설정이 on으로 설정되어 있어야 합니다. Audit 기능의 경우 서비스 부하 및 Log Disk Full 등의 이슈가 있으므로 서비스에 모니터링이 가능한 경우에만 적용을 권고합니다.

 

ag_audit

데이터베이스  감사 기능을  활성화하거나 비활성화합니다. csv 값은 데이터베이스 감사 기능을 활성화합니다. 이러한 값은 감사 정보가 저장되는 파일 형식을 나타냅니다. 기본값은 none으로 데이터베이스 감사 기능을 비활성화합니다.

 

ag_audit_directory

Audit 로그 파일을 저장 디렉터리를 지정합니다. 디렉터리의 경로는 데이터 폴더에 상대적이거나 절대적일 수 있습니다. 기본값은 ag_audit으로 $PGDATA/ag_audit 디렉토리 입니다.

ag_audit_filename

감사 정보가 저장될 감사 파일의 파일 이름을 지정합니다. 기본 파일 이름은 ag-audit-%Y%m%d_%H%M%S입니다.

ag_audit_rotation_size

파일 크기에 따라 로그파일의 교체가 발생합니다. 주석 처리하거나 0으로 설정하면 파일 크기에 따른 파일 교체가 발생하지 않습니다. 단위는 Kb 이며 기본값은 0 입니다.

ag_audit_rotation_age

로그파일 교체가 발생하는 시간(분)을 지정합니다. 이 기능을 사용하지 않으려면 이 매개 변수를  0으로 설정하면 됩니다. 기본값은 0 입니다.

ag_audit_connect

데이터베이스 연결 시도에 대한 감사 범위를 설정합니다. 연결 시도에 대한 감사를 사용하지 않으려면 none으로 설정합니다. 실패한 연결 시도를 감사하려면 값을 failed 값으로 설정합니다. 모든 연결 시도를 감사하려면 값을 all 값으로 설정합니다. 기본값은 failed 입니다.

 

ag_audit_disconnect

연결된 사용자가 데이터베이스 연결 끊김을 감사할 수 있습니다. 연결 끊김 감사를 사용하려면 값을 all 값으로 설정합니다. 사용하지 않으려면 값을 none로 설정합니다. 기본값은 none 입니다.

ag_audit_statement

세션 감사를 기록할 명령문 클래스를 지정합니다. 가능한 값은 다음과 같습니다

READ: SELECT, COPY

WRITE: INSERT, UPDATE, DELETE, TRUNCATE, COPY

FUNCTION : 함수 호출 및 DO 블록

ROLE : 역할 및 권한과 관련된 명령문 (예: GRANT, REVOKE, CREATE/ALTER/Drop ROLE)

DDL : ROLE 클래스에 포함되지 않은 모든 DDL

MISC : 기타 명령(예: DISCOVER, FETCH, CHECKPOINT, VACUUM, SET).

MISC_SET : 기타 SET 명령(예: SET ROLE)

ERROR: 모든 데이터베이스 오류

ALL: 위의 내용을 모두 포함합니다

쉼표로 구분된 목록을 사용하여 여러 클래스를 제공할 수 있습니다. 기본값은 DDL, ERROR입니다.

ag_audit_tag

이 구성 매개 변수를 사용하여 각 항목에 대한 감사 로그 파일에 포함될 문자열 값을 추적 태그로 지정합니다.

 

 

 

글 : 이정안 전임 ( 비트나인 DB Tech팀 )