본문 바로가기

ComputerScience/Database 이론

[Database] 11. 보안과 권한 관리 개념 정리

728x90

 

안녕하세요. CS지식 정리도 할 겸, 학교에서 배운 데이터베이스 개념 + "데이터베이스 개론-IT COOKBOOK" 의 책을 공부하며 알게 된 내용을 정리하려고 합니다.

 

지난 포스트"트랜잭션과 동시성관련 개념 정리"에 이어 이번 포스트는 데이터베이스에서의 보안과 권한 개념을 정리하려고 합니다.

 

주관적으로 작성된 글이기에 틀린 내용이 있을 수 있습니다.(댓글로 알려주시면 감사합니다 :)

데이터베이스 보안

데이터베이스는 중요한 정보나 개인정보같은 민감한 정보가 있습니다. 권한 관리를 통해 기밀성이 보호되오야 합니다. 데이터의 정확성과 일관성을 위해 무결성을 유지하는 것도 중요합니다. 데이터베이스 시스템은 항상 사용가능해야 합니다. 외부 공격, 시스템 장애 등등 으로부터 보호됨으로 가용성을 유지해야 합니다.

 

일반적으로 데이터를 보호하는 방법은 세 가지가 있습니다.

물리적 환경에 대한 보안

자연재해 등 데이터베이스에 물리적 손실을 발생시키는 위험으로부터 보호해야 합니다. Db 서버의 물리적 위치를 안전한 장소에 배치하고 접근 제한이 필요합니다.

권한 관리를 통한 보안

데이터베이스 사용자에게 적절한 권한과 접근 권한을 관리해야 합니다. 사용자에게 필요한 최소한의 권한을 부여해야 합니다.

운영 관리를 통한 보안

로그 관리, 추적등을 통해 시스템 데이터베이스 활동을 모니터링하고 보안 위반 or 이상 행위 시도를 탐지해야 합니다. 즉, 사용자가 권한 내에서 데이터베이스를 사용할 때 데이터 무결성을 유지하도록 제약조건을 정의하고 통제해야 합니다.

권한 관리

데이터베이스 관리 시스템(DBMS)는 사용자의 계정 관리와 각 사용자에게 특정 작업 수행에 대한 권한을 할당합니다. 계정이 발금된 사용자가 로그인 했을 경우에 해당 사용자는 자신에게 부여된 권한 범위 내 db에 접근하고 조작이 가능합니다. Db의 모든 객체(테이블, 뷰 etc...)는 객체를 생성한 사용자만 사용권한을 가집니다. 추후 SQL 문을 통해 다른 사용자에게 사용 권한을 부여(Grant)하거나 취소(Revoke)할 수 있습니다. Role(롤) 또한 권한을 관리할 수 있습니다. 이는 사용자 그룹에 대한 권한을 미리 Role을 통해 정의해서 쉽게 부여하거나 취소할 수 있어 유지보수에 좋습니다.

Grant(권한 부여)

Grant 권한 On 객체 To <사용자 | 사용자 그룹> [With Grant Option];
// ex) Grant Select, Insert, Update(등급, 할인율) On 고객 To Yang;

 

테이블과 같은 객체를 만든 소유자가 다른 사용자에게 객체 사용 권한을 부여할 때 사용되는 SQL문은 'Grant' 명령어를 사용합니다. 

 

권한은 부여할 권한 종류를 나타냅니다 Insert, Select, Update, Delete 등이 있습니다. 특정 속성만 권한을 부여할 수 있습니다.

객체는 권한을 부여할 대상 객체를 나타내고 테이블, 뷰의 이름으로 지정할 수 있습니다.

사용자 또는 사용자 그룹 은 권한을 받을 사용자 또는 그룹입니다.

With Grant Option은 optional 입니다. 이 옵션을 사용했을 때, 부여받은 사용자가 자신이 부여받은 권한을 다른 사용자에게 부여하는 권한을 허용합니다.

 

Grant(권한 부여) | DDL

Grant 권한 To 사용자
// ex) Grant Create View To shin;

 

DDL 관련된 권한도 부여할 수 있습니다. 

Revoke(권한 취소)

Revoke 권한 On 객체 From 사용자 Cascade | Restrict;
// ex) Revoke Select On 주문 From Kiwi Cascade;

 

특정 객체(테이블, 뷰 등..)에 대한 권한을 소유하고 있는 사용자에게 권한 취소를 할 때 사용되는 SQL 문입니다.

 

Cascade는 권한 취소할 때 해당 사용자가 다른 사용자에게 부여한 하위 권한도 함께 취소합니다.

Restrict는 권한 취소할 때 해당 사용자가 다른 사용자에게 부여한 하위 권한이 있는 경우 권한 취소를 제한합니다.



"Restrict" 옵션을 사용한 경우, 해당 사용자가 다른 사용자에게 부여한 하위 권한은 그대로 유지됩니다. 권한을 취소하기 위해서는 해당 사용자가 직접 하위 권한을 취소해야 합니다. "Restrict" 옵션을 사용하면 권한 취소를 제한하는 효과가 있습니다.

예를 들어

사용자 A가 사용자 B에게 Select 권한을 부여했고, 사용자 B가 다시 사용자 C에게 Select 권한을 부여한 경우, A가 B에게 부여한 Select 권한을 취소할 때 "Cascade" 옵션을 사용하면 B가 C에게 부여한 권한도 함께 취소됩니다.

반면, "Restrict" 옵션을 사용하면 B가 C에게 부여한 권한은 유지되며, A가 B에게 부여한 권한만 취소됩니다.

그래서 "Restrict" 옵션을 사용할 경우 권한을 취소하고자 하는 경우에는 해당 사용자가 직접 하위 권한을 취소해야 합니다.

 

Revoke(권한 취소) | DDL

Revoke 객체 From 사용자;
// ex) Revoke Create View From Kiwi;

 

DDL 관련된 권한도 취소할 수 있습니다. 

 

Role(역할) | 생성, 권한부여, 권한추가, 삭제

사용자 그룹에 대한 권한을 묶어서 관리하기 위한 개념입니다. 여러 사용자에게 동일한 권한을 부여하거나 취소하는 작업을 쉽게 해 유지보수에 좋습니다. 역할에 새로운 권한 추가 or 취소를 하게 되면 role을 부여받은 사용자 모두에게 변화가 적용됩니다.

Create Role 롤이름; // 1
Grant 권한 On 객체 To 롤이름; // 2
Grant 롤이름 To 사용자; // 3
Revoke 롤이름 From 사용자; //4
Drop Role 롤이름; //5

 

1. 역할 생성입니다.

2. 객체와 관련된 권한을 역할에 추가합니다. 이때 권한은 위에서 Grant 명렁어 사용할 때 처럼 사용하면 됩니다. (Insert, Update etc...)

3. 여러 권한을 부여한 role을 사용자 (1...N)에게 부여합니다.

4. 사용자로부터 지정된 역할을 제거합니다.

5. 역할을 삭제합니다. 이 경우 역할을 부여받은 모든 사용자는 역할에 대한 권한이 취소됩니다.

728x90