Access Control List (ACL)
사용자가 인증된 후에, 해당 사용자의 IP가 인증된 사용자 리스트(White List) 또는 차단된 사용자 리스트(Black 리스트)에 있는지에 따라 Access를 허용하거나 차단한다. 사용자 IP가 White List에 없을 경우에도 차단된다.
즉, ACL은 특정 사용자의 시스템 액세스 권한 여부를 결정하는 데 사용된다.
Role-based access control(RBAC)
사용자의 역할에 따라 액세스 권한을 부여하는 방식이다.
RBAC에서 사용자는 다른 권한을 부여받을 수 있는 여러 역할을 가질 수 있다. 예를 들어 IT회사에서의 RBAC을 다음과 같이 나눠볼 수 있다.
- 시스템 관리자 역할: 서버 관리, 시스템 관리
- 데이터베이스 관리자 역할: 데이터 베이스 관리, 복구
- 네트워크 관리자 역할: 네트워크 관리, 보안 설정
총 관리자는 각 권한을 부여/회수하는 것이 간단하고, 역할에 따라 어떤 권한을 갖고 있는지 쉽게 파악할 수 있다.
하지만 한계가 있다. 다음과 같은 경우를 살펴보자.
시스템 관리자가 데이터베이스의 역할도 부여받고 싶은데, 시스템 관리자의 역할이 주 업무이므로 데이터 베이스 관리 중 삭제, 복구는 불가능하도록 하고 싶다. 이럴 경우 어떻게 해야 할까?
다른 역할을 또 만들어야 한다.
- 시스템 & 데이터 관리자 역할: 서버 관리, 시스템 관리, 삭제 기능을 제거한 데이터 베이스관리
이때 또 네트워크 관리자 역할도 부여받는다면... 점점 역할이 많아지고 복잡해진다.
Attribute-based access control(ABAC)
역할 대신 속성을 이용하여 더 세밀하게 권한을 부여할 수 있다. 위의 RBAC의 한계를 개선할 수 있다.
속성은 사용자, 리소스, 작업, 개체, 환경 등을 설명하는 데이터다.
예를 들어, 특정 부서의 크루가 파일에 접근하려면 아래의 속성을 전부 갖고 있어야 한다.
- 사용자: 해당 부서 직원
- 리소스: 파일
- 동작: 읽기/쓰기
- 환경: 해당 부서의 컴퓨터
이처럼 여러 속성을 활용하여 권한에 대해 좀 더 세밀한 작업을 할 수 있다.
만약 읽기만 가능하도록 하고 싶으면 쓰기 속성을 제거하고, 재택에서도 되도록 하려면 재택 속성만 추가하면 된다.
ACL -> RBAC -> ABAC 순으로 점점 Coarse -> Fine으로 되는 것을 확인할 수 있다.
Fine일수록 유연해지고 세밀한 접근제어를 할 수 있지만, 그만큼 구현이 어렵고 관리포인트가 많아진다는 단점이 있다.
'CS' 카테고리의 다른 글
애플리케이션의 종류 (0) | 2024.01.04 |
---|---|
불변성(Immutable)과 빌더 패턴(Builder Pattern)에 대해 (0) | 2024.01.03 |
[CS] 데이터베이스 정규화와 이상현상(Normalization & Anomaly) (0) | 2023.04.19 |
개발하면서 자주 만났던 이슈 및 용어 정리 (0) | 2023.04.19 |
[CS] 네트워크 (1) | 2023.02.28 |