인터베이스(InterBase)의 데이터 보안

‘보안’은 인터베이스에 대해 개발자들과 이야기할 때 가장 먼저 받는 질문입니다. 사이버 보안 환경에서 사용자 데이터를 안전하게 보호하고, 규정을 준수하는 것은 대단히 중요합니다. 민감한 건강 관련 데이터도 그렇고, 단순 이름과 연락처도 해커와 데이터 침해로부터 안전하게 보호할 수 있어야 합니다.

인터베이스(InterBase)가 사용자 데이터를 보호하는 방법

인터베이스는 의도되었든 또는 의도되지 않은 것이든 다양한 위험으로부터 사용자 데이터를 보호하기 위한 여러 방법을 구현해 활용할 수 있습니다.

인터베이스 보안 데이터베이스

인터베이스의 보안은 각 서버의 중앙 보안 데이터베이스 파일을 기반으로 합니다. admin.ib (기본 이름)라고 불리는 이 데이터베이스에는 호스트 서버의 데이터베이스와 서비스에 연결할 수 있는 권한을 가진 합법적인 사용자에 대한 정보가 들어있습니다. 이 정보에는 사용자 로그인과 암호화되어 있는 사용자 패스워드가 있으며, 서버에 로그인해야만 사용이 가능합니다.

SYSDBA와 SYSDSO

모든 서버에는 SYSDBA 가 있습니다. 특수한 계정으로, 모든 일반 SQL을 별다른 절차 없이 사용 가능하고, 데이터베이스 백업과 종료 등 여러 작업을 수행할 수 있습니다. 처음 설치했을 때 유일하게 활성화 되어 있는 인증된 계정으로, SYSDBA는 서버에 있는 다른 모든 사용자들에 대한 승인 권한을 가지고 있으며 사용자 추가/수정/삭제도 가능합니다.

Note: SYSDBA 계정의 패스워드는 ‘masterkey’입니다. 승인되지 않은 사용자의 접근을 막기 위해서는 가능한 빨리 패스워드를 변경해야 합니다.

인터베이스는 특정 암호화 작업을 위해 SYSDBA 사용자와는 별도로 SYSDSO (System Data Security Officer)를 설정할 수 있습니다. SYSDSO는 기본 제공되는 사용자 계정으로 SYSDBA와 유사합니다. 데이터베이스 암호화 프로세스의 몇 가지 주요 단계들을 제어할 수 있습니다:

  • 시스템 암호화 패스워드(SEP) 생성
  • 암호화 키 생성
  • 암호화 키로 데이터베이스와 컬럼 암호화를 할 수 있는 데이터베이스 소유자에게 암호화 키에 대한 액세스 권한 부여

그러나 SYSDSO로 데이터베이스나 컬럼을 암호화하거나 암호화된 데이터에 대한 액세스 허용/취소는 할 수 없습니다. 데이터베이스 소유자나 개별 테이블 소유자만이 실제로 데이터베이스, 컬럼을 암호화 할 수 있습니다. SYSDSO는 데이터베이스 암호화에 필요한 암호화 키를 생성하기만 하면 됩니다. 따라서 데이터베이스 보안 계층을 추가하는 사용자는 하나만 설정해 두는 것 보다는 “여러 사용자”를 설정하는 게 좋습니다.

역할 기반의 사용자 보안

‘역할’을 설정할 수 있어, 그룹 수준 보안을 구현할 수 있습니다. 데이터베이스에 있는 모든 테이블에 대한 SQL 권한을 정의하는 역할, 사용자의 템플릿을 수행하는 역할 등이 있습니다. 데이터베이스 개체에 권한이 부여되고, 데이터베이스에 연결되고 나면, 각 사용자에게 할당된 역할의 권한이 부여됩니다. 인터베이스에서 ‘역할’은 허가/취소 구문을 통해 관리할 수 있습니다. 사용자들의 변경 사항을 관리할 때 추가 작업 없이도 사용자 권한을 설정할 수 있습니다. 굉장히 유연하죠. ‘역할’은 사용자들이 데이터베이스나 서버에 연결할 때 다른 역할로 들어가서 자신에게 할당된 권한을 변경할 수도 있습니다.

데이터베이스와 컬럼 수준(level) 암호화

데이터베이스 수준 암호화를 위해, 인터베이스는 사용자 정보가 있는 데이터베이스의 모든 페이지를 암호화합니다. 그리고 암호화 키를 사용해 전체 데이터베이스를 암호화합니다. 일반적으로 데이터베이스의 모든 사용자 페이지를 암호화하면 개별 컬럼들을 선택적으로 암호화하는 것보다 오버헤드가 약간 더 많이 발생합니다.

컬럼 수준 암호화를 사용하면, 유연성은 훨씬 더 향상되고 구체화할 수 있습니다. 컬럼을 암호화 할 때는, 해당 컬럼을 포함하고 있는 테이블을 지정하고 해당 테이블의 모든 열을 암호화하거나 원하는 열만 암호화하도록 선택할 수 있습니다. 암호화된 컬러의 데이터에 액세스해야 하는 사용자에게 해당 열에 대한 암호 해독 권한이 주어집니다.

임베디드 사용자 인증

임베디드 사용자 인증(EUA)은 데이터베이스 사용자 이름과 암호를 데이터베이스에 직접 저장합니다. 연결 차이로 인해 로그인을 위한 중앙 서버 액세스가 없는 임베디드 데이터베이스 애플리케이션에 가장 적합한 리소스입니다.

인터베이스 ToGo는 데이터베이스를 애플리케이션에 직접 내장한 형태로, 사용자의 데이터가 보호되는 것을 직접적으로 알 수 있는 에디션입니다. ToGo는 임베디드 되어있는 애플리케이션에서만 액세스가 가능하기 때문에, 이러한 보안성을 갖출 수 있는 것입니다. 또한 256 비트 암호화를 사용해 데이터를 암호화 할 수 있어 다른 데이터들까지도 추가로 보호할 수 있습니다.

백업 파일 암호화

파일을 사용할 때는 데이터베이스에 보안을 추가하는 번거로움이 있지만, 백업을 하면 어떨까요? 백업 파일은 재해 복구 또는 장기 보관 목적으로 외부로 전송되는 경우가 많아, 암호화된 데이터베이스에서 백업 파일은 암호화되어 있어야 합니다. 데이터베이스 백업 파일을 암호화한다는 것은 곧 보안 프로토콜이 한 단계 더 향상된다는 의미입니다. 인터베이스는 -encrypt와 -decrypt로 백업을 보안할 수 있는 명령 (gbak) 유틸리티를 자체적으로 제공합니다.

OTW / SSL 네트워크 암호화

데이터는 일반적으로 전송되기 전에 암호화되어 있다고 하더라도, 데이터베이스 서버에서 인터베이스 원격 클라이언트로 전송되는 과정 중에는 암호화되지 않습니다. 바로 이 지점이 보안 침해가 발생할 수 있는 부분입니다. 이 문제를 방지하기 위해 인터베이스는 OTW(Over-theWire) 암호화를 지원하여 전송 프로세스 중에도 데이터를 암호화합니다.

인터베이스 보안 기능 사용에 대한 더욱 자세한 내용들은 아래 정리해 놓은 페이지들을 참고하세요.

관련 자료들

Docwiki:

유투브 영상:

인터베이스 관련 페이지:


AI api C++ c++빌더 code database Delphi fmx IDE ideas interbase ios migration modernization news python RAD스튜디오 tips UI UIUX vcl 개발 개발사례 개발팁 교육 기술레터 기술백서 데이터 데이터베이스 델파이 마이그레이션 모바일 안드로이드 윈도우 윈도우10 인공지능 인터베이스 출시 코드 파이썬 파이어몽키 프로그래밍 프로젝트 현대화