데이터 웨어하우스의 3A 보안 기능에 대한 자세한 설명

이 기사는 Huawei Cloud 커뮤니티 " GaussDB (DWS) 3A 보안 기능 ", 작성자: yd_281561943에서 공유되었습니다.

1. 소개

  • 적용 버전 : [8.0.0 (이상)]

데이터베이스 보안이란 허가받지 않은 사용자가 데이터베이스 내의 데이터 정보를 도용, 변조, 파괴하지 못하도록 데이터베이스를 보호하는 기술을 말한다. 데이터베이스 보안 기술은 간단히 세 가지 A로 나눌 수 있습니다.

  • 인증: 인증은 누가 (입력)에 허용되는지에 대한 문제를 해결합니다.
  • 권한 : 할 수 있는 것(일)의 문제를 해결하기 위한 권한
  • 감사: 감사는 수행된 작업(모니터링)의 문제를 해결합니다.

2. 인증——인증

연결 인증은 사용자가 데이터베이스에 로그인할 수 있는지 여부에 대한 문제를 해결합니다. 이 제품은 다음과 같은 인증 방법을 지원합니다.

  • 호스트 기반 인증: 서버는 클라이언트의 IP 주소, 사용자 이름, 접속할 데이터베이스를 기반으로 구성 파일을 확인하여 사용자가 인증을 통과했는지 확인합니다.
  • 비밀번호 인증: 원격 연결을 위한 암호화된 비밀번호 인증과 로컬 연결을 위한 암호화되지 않은 비밀번호 인증을 포함합니다.
  • 인증서 인증: 이 모드에는 SSL 연결 구성이 필요하며 클라이언트는 유효한 SSL 인증서를 제공해야 하며 사용자 비밀번호는 필요하지 않습니다.
  • 타사 인증: ldap, oneaccess 등

이러한 방법은 모두 "pg_hba.conf" 파일(pg_hba.conf 파일 형식)을 구성해야 하며 pg_hba는 여러 줄의 HBA 레코드로 구성됩니다.

HBA 레코드의 의미는 어떤 사용자(USER)가 허용되는지, 어떤 IP 주소(ADDRESS), 어떤 연결 유형(TYPE), 어떤 인증 방법(METHOD), 어떤 데이터베이스(DATABASE)에 연결할 것인지를 의미합니다.

인증 중에는 각 연결 요청에 대해 hba 파일의 레코드를 아래에서 아래로 확인하여 현재 레코드가 일치하면 반환됩니다. HBA 레코드의 순서는 매우 중요합니다. HBA의 이러한 논리는 매우 중요하므로 쉽게 변경해서는 안 됩니다. 그렇지 않으면 매우 심각한 문제가 발생할 수 있습니다.

사례: HBA 로직 변경으로 인한 문제

업그레이드 과정에서 pg_hba.conf 파일의 레코드가 정렬되어 업그레이드 전후의 ldap 구성 줄 순서가 sha256 구성 줄의 끝으로 변경되는 문제가 발생했습니다. pg_hba.conf의 순차 탐색 메커니즘으로 인해 업그레이드 후 ldap 사용자가 sha256 구성 줄과 잘못 일치하여 연결이 실패합니다.

순서 변경으로 인해 발생하는 문제를 해결하기 위해 수정 계획의 첫 번째 버전은 루프 탐색 시작 부분에 LDAP 판단 논리를 배치하는 것입니다. 먼저 인증 유형을 살펴보고 LDAP 인증인지 여부를 판단합니다. 구성 라인의 메소드 필드는 ldap입니다. 그렇지 않은 경우 다음 라인으로 점프합니다. 메소드가 ldap인 것을 찾을 때까지입니다.

이 수정 계획 버전에서는 LDAP 인증 연결이 모든 LDAP HBA 레코드와 일치합니다. 사용자가 데이터베이스에 연결하면 연결은 성공할 수 있지만 비즈니스를 수행할 수 없으며 "잘못된 사용자 이름/비밀번호, 로그인이 거부되었습니다."라는 오류 메시지가 보고됩니다. 그 이유는 내부 노드가 명령문을 실행할 때 노드 간 인증이 수행되기 때문입니다. 인증 유형은 신뢰이며 비밀번호는 제공되지 않습니다. 수정 후에는 ldap 레코드만 일치하게 되며 ldap 메소드에는 비밀번호가 필요하므로 오류가 보고됩니다.

업그레이드 전후의 ldap 및 sha256 구성 줄 위치는 다음과 같습니다.

업그레이드하기 전:
모두 호스트 @/etc/ldap/ldap_user 0.0.0.0/0 ldap ldapserver=xxx.xxx.xxx.xxx ldapport=xxx ldapprefix="CN=" ldapsuffix="OU=test_dmj_group,DC=com"
모두 모두 호스팅 0.0.0.0/0 sha256
업그레이드 후:
모두 모두 호스팅 0.0.0.0/0 sha256
모두 호스트 @/etc/ldap/ldap_user 0.0.0.0/0 ldap ldapserver=xxx.xxx.xxx.xxx ldapport=xxx ldapprefix="CN=" ldapsuffix="OU=test_dmj_group,DC=com"

TYPE : type은 local,host,hostssl,hostnossl의 네 가지 유형 중 하나입니다.

각기:

local: Unix 도메인 소켓 연결만 허용됩니다.

호스트: TCP/IP 연결을 허용하고 SSL 및 비 SSL 연결 요청을 일치시킬 수 있습니다.

Hostsl: TCP/IP 연결을 허용하고 SSL 연결 요청에만 일치합니다.

hostnossl: TCP/IP 연결을 허용하고 SSL이 아닌 연결 요청만 일치시킵니다.

DATABASE : all을 사용하여 모든 데이터베이스를 나타낼 수도 있고, 데이터베이스를 쉼표로 구분하여 명시적으로 지정할 수도 있습니다.

USER : all을 사용하여 모든 사용자를 나타낼 수도 있고, 사용자를 쉼표로 구분하여 명시적으로 지정할 수도 있습니다. 특정 데이터베이스 사용자의 이름이거나 +가 앞에 오는 그룹 이름일 수 있습니다. + 표시는 실제로 "이 역할에 직접 또는 간접적으로 속하는 모든 역할과 일치"를 의미하는 반면, + 표시가 없는 이름은 해당 특정 역할에만 일치합니다.

ADDRESS : 선언 레코드가 일치하고 액세스를 허용하는 주소입니다. 유형이 로컬이면 로컬 연결을 의미하며 IP 주소를 지정할 필요가 없습니다.

METHOD : 인증 방법에는 trust, Reject, md5, sha256, ldap, cert, oneaccess 등이 있습니다.

trust: 화이트리스트, 무조건 연결을 허용합니다.

거부: 블랙리스트, 무조건 연결을 거부합니다.

md5: PG의 비밀번호 인증 방법이 안전하지 않습니다.

sha256: gaussdb에 대한 비밀번호 인증입니다.

ldap: 타사 인증에 LDAP를 사용합니다.

cert: 클라이언트 인증서 인증 모드입니다. 이 모드에서는 SSL 연결 구성이 필요하며 클라이언트가 유효한 SSL 인증서를 제공해야 합니다.

oneaccess: 타사 인증에 oneaccess를 사용합니다.

3.인증——인증

권한은 데이터베이스 개체에 대한 사용자 작업이 허용되는지 여부를 나타냅니다. GaussDB(DWS)의 권한에는 시스템 권한, 데이터 개체 권한 및 사용자 권한의 세 가지 시나리오가 포함됩니다.

3.1 시스템 권한

3.1.1 권력분립

기본적으로 SYSADMIN 속성을 가진 시스템 관리자는 시스템에서 가장 높은 권한을 갖습니다. 실제 업무관리에서는 시스템 관리자의 과도한 권한 집중으로 인한 높은 리스크를 방지하기 위해 권한분립을 설정하고, 시스템 관리자의 CREATEROLE 속성 권한과 AUDITADMIN 속성 권한을 보안관리자에게, AUDITADMIN 속성 권한을 각각 부여한다. .

3.1.2 시스템 권한 승인

시스템 권한은 SYSADMIN, CREATEDB, CREATEROLE, AUDITADMIN 및 LOGIN을 포함하여 사용자 속성이라고도 합니다.

CREATE/ALTER ROLE/USER user_name [WITH] 옵션 문의 옵션에서 시스템 권한 부여를 구현하기 위해 시스템 권한을 부여할 수 있습니다.

시스템 관리자 | NOSYSADMIN

새 역할이 "시스템 관리자"인지 확인합니다. SYSADMIN 속성이 있는 역할이 시스템에서 가장 높은 권한을 갖습니다. 기본값은 NOSYSADMIN입니다.

감사 관리자 | NOAUDITADMIN

역할에 감사 관리 속성이 있는지 여부를 정의합니다. 기본값은 NOAUDITADMIN입니다.

생성DB | NOCreateDB

새 역할이 데이터베이스를 생성할 수 있는지 여부를 결정합니다. 새 역할에는 데이터베이스를 생성할 수 있는 권한이 없습니다. 기본값은 NOCREATEDB입니다.

크리에이터롤 | NOCREATEROLE

역할이 새 역할을 생성할 수 있는지(즉, CREATE ROLE 및 CREATE USER 실행) 여부를 결정합니다. CREATEROLE 권한이 있는 역할은 다른 역할을 수정하고 삭제할 수도 있습니다. 기본값은 NOCREATEROLE입니다.

로그인 | 노로그인

LOGIN 속성이 있는 역할만 데이터베이스에 로그인할 수 있습니다. LOGIN 속성이 있는 역할은 사용자로 간주될 수 있습니다. 기본값은 NOLOGIN입니다.

3.2 데이터 개체 권한

데이터 개체에는 테이블과 뷰, 지정된 필드, 데이터베이스, 함수, 스키마 등이 포함됩니다. 이를 생성, 추가, 삭제, 수정, 쿼리하는 등의 작업은 데이터 개체 권한입니다. 권한 부여 구문 형식은 GRANT [privileges] ON [objects] TO [users]이고 권한 철회 구문 형식은 REVOKE [privileges] ON [objects] FROM [users]입니다.

3.3 사용자 권한

3.3.1 사용자 권한 부여

하나의 역할이나 사용자의 권한을 하나 이상의 다른 역할이나 사용자에게 부여합니다. 승인된 역할이나 사용자는 승인된 역할이나 사용자의 권한을 갖습니다. WITH ADMIN OPTION을 선언하면 인가된 사용자는 다른 역할이나 사용자에게 권한을 다시 부여할 수 있고, 해당 역할이나 사용자가 상속한 모든 권한을 취소할 수 있습니다. 승인된 역할이나 사용자가 변경되거나 취소되면 역할이나 사용자 권한을 상속하는 모든 사용자의 권한도 그에 따라 변경됩니다. 구문 형식은 GRANT role TO user입니다.

3.3.2 사전 설정된 역할

GaussDB(DWS)는 "gs_role_"로 시작하는 이름의 사전 설정된 역할 세트를 제공합니다. 이러한 사전 설정된 역할에는 몇 가지 고정된 권한이 있습니다. 일부 사용자가 관련 작업을 수행해야 하는 경우 해당 사용자에게 사전 설정된 역할만 부여하면 됩니다. 현재 GaussDB(DWS)의 사전 설정된 역할은 다음과 같습니다.

4.감사——감사

감사란 로그인 후 데이터베이스 내에서 사용자의 로그인 및 종료, 행위 및 작업을 기록하는 것을 말하며, 데이터베이스 보안 관리자는 이러한 로그 정보를 이용하여 사용자, 불법 작업의 시간 및 내용을 알아낼 수 있습니다.

4.1 감사 구성 항목 설정

데이터베이스가 특정 기능을 감사할 수 있도록 하려면 감사 기본 스위치(audit_enabled)와 해당 감사 항목 스위치(audit_operation_exec)를 켜야 합니다. 둘 다 데이터베이스 작업 중에 이 구성 항목의 값을 수정하면 적용됩니다. 즉시 데이터베이스를 다시 시작할 필요가 없습니다.

주의할 점은 두 가지입니다. 첫째, ddl 작업을 감사하는 경우 특정 개체의 ddl 작업을 감사하도록 audit_system_object를 구성해야 합니다. 둘째, 트랜잭션을 감사하는 경우 트랜잭션 내의 작업이 감사되는지 여부에 따라 달라집니다. 특정 구성 항목이 구성됩니다. 감사 항목의 매개변수 제어:

4.2 감사 로그 보기

감사 쿼리 명령은 pgxc_query_audit입니다.

pgxc_query_audit(timestamptz starttime,timestamptz endtime,audit_log)에서 *를 선택하세요.

starttime과 endtime은 각각 감사 레코드의 시작 시간과 종료 시간을 나타내며, audit_log는 조회 중인 감사 로그의 새로운 물리적 파일 경로를 나타냅니다. audit_log를 지정하지 않으면 기본적으로 현재 인스턴스에 연결된 감사 로그 정보가 표시됩니다. 감사 쿼리 결과는 다음과 같습니다.

postgres=# 테이블 t1 생성(id int);
오류: 관계 "t1"이 이미 존재합니다.
postgres=# select * from pgxc_query_audit('2021-03-21','2021-03-30') order by endtime desc 제한 1;
-[ 기록 1 ]---+--------------------------------
시작시간 | 2021-03-21 11:49:41.643+08
종료 시간 | 2021-03-21 11:49:41.652+08
작업 유형 | ddl
감사 유형 | ddl_table
결과 | 실패한
사용자 이름 | perfadm
데이터베이스 | 포스트그레스
클라이언트_콘정보 | gsql@[로컬]
객체_이름 | t1
명령_텍스트 | 테이블 t1(id int) 생성;
세부 정보 | 관계 "t1"이 이미 존재합니다.
거래_xid | 0
쿼리_ID | 1062177
노드_이름 | cn_5001
스레드 ID | 139916885260032@669613657906735
로컬_포트 | 6000
원격_포트 |

5. 기타 데이터 웨어하우스 보안 기술

데이터 보안 표시: 데이터 둔감화, 행 수준 액세스 제어.

데이터 보안 저장소: 데이터 저장소 암호화, 투명한 암호화.

 

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

1990년대에 태어난 프로그래머가 비디오 포팅 소프트웨어를 개발하여 1년도 안 되어 700만 개 이상의 수익을 올렸습니다. 결말은 매우 처참했습니다! 고등학생들이 성인식으로 자신만의 오픈소스 프로그래밍 언어 만든다 - 네티즌 날카로운 지적: 만연한 사기로 러스트데스크 의존, 가사 서비스 타오바오(taobao.com)가 가사 서비스를 중단하고 웹 버전 최적화 작업 재개 자바 17은 가장 일반적으로 사용되는 Java LTS 버전입니다. Windows 10 시장 점유율 70%에 도달, Windows 11은 계속해서 Open Source Daily를 지원합니다. Google은 Docker가 지원하는 오픈 소스 Rabbit R1을 지원합니다. Electric, 개방형 플랫폼 종료 Apple, M4 칩 출시 Google, Android 범용 커널(ACK) 삭제 RISC-V 아키텍처 지원 Yunfeng은 Alibaba에서 사임하고 향후 Windows 플랫폼에서 독립 게임을 제작할 계획
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11093720