사용자 역할 관리
1. 개요
ECI 관리자가 조직 내 사용자에게 부여할 역할(Role)을 생성하고 관리할 수 있는 기능을 제공합니다. 역할 기반 접근 제어(RBAC)를 통해 사용자별로 적절한 권한을 부여하여 보안을 강화하 고 업무 효율성을 높일 수 있습니다.
2. RBAC란?
RBAC (Role-Based Access Control, 역할 기반 접근 제어) 는 사용자에게 직접 권한을 부여하는 대신, 역할(Role)을 통해 권한을 관리하는 접근 제어 방식입니다.
2.1 기본 개념
┌─────────┐ 할당 ┌─────────┐ 포함 ┌─────────┐
│ 사용자 │ ──────────▶ │ 역할 │ ──────────▶ │ 권한 │
└─────────┘ └─────────┘ └─────────┘
User Role Permission
- 사용자(User): 시스템을 사용하는 개인
- 역할(Role): 권한의 묶음. 예: "VM 관리자", "조회 전용 사용자"
- 권한(Permission): 특정 리소스에 대한 특정 작업 수행 능력. 예: "가상 머신 생성", "블록 스토리지 조회"
2.2 RBAC의 장점
- 관리 효율성: 개별 사용자마다 권한을 설정하지 않고, 역할 단위로 관리
- 보안 강화: 최소 권한 원칙(Principle of Least Privilege) 적용 용이
- 일관성: 동일 역할의 사용자는 동일한 권한을 가짐
- 감사 용이성: 역할 기반으로 권한 현황 파악 가능
3. 용어 설명
3.1 역할 (Role)
역할은 권한의 집합입니다. 하나의 역할에 여러 개의 권한을 포함할 수 있으며, 사용자에게 역할을 할당하면 해당 역할에 포함된 모든 권한이 부여됩니다.
| 역할 종류 | 설명 |
|---|---|
| 기본 제공 역할 (Predefined) | 시스템에서 기본 제공하는 역할. 수정/삭제 불가 |
| 사용자 정의 역할 (Custom) | 조직에서 직접 생성한 역할. 수정/삭제 가능 |
3.2 권한 (Permission)
권한은 특정 리소스에 대해 특정 작업을 수행할 수 있는 능력입니다.
권한의 구조:
ACL.{섹션}.{하위섹션}.{액션}
예시:
ACL.Resource.Compute.VirtualMachine.CREATE- 가상 머신 생성 권한ACL.Billing.Billing.READ- 빌링 정보 조회 권한
액션 종류:
| 액션 | 설명 |
|---|---|
| CREATE | 리소스 생성 |
| READ | 리소스 조회 |
| UPDATE | 리소스 수정 |
| DELETE | 리소스 삭제 |
| ACCESS_WEB_CONSOLE | 웹 콘솔 접근 (가상 머신 전용) |
권한 의존성
권한은 서로 의존 관계가 있을 수 있습니다. 예를 들어:
- 가상 머신의 CREATE, UPDATE, DELETE 권한만 부여하고 READ 권한을 부여하지 않으면, 리소스 목록을 조회할 수 없어 실제 사용이 어렵습니다.
- 일반적으로 READ 권한은 다른 권한의 기본 전제가 됩니다. 생성, 수정, 삭제 권한을 부여할 때는 READ 권한도 함께 부여하는 것을 권장합니다.
4. 권한 카테고리
| 카테고리 | 포함 리소스 |
|---|---|
| 일반 (General) | 공지사항, 조직, 리전 |
| 인프라 (Infra) | 블록스토리지 이미지, 인스턴스 타입, 영역 |
| 사용자 관리 (User) | 사용자, 사용자 역할, 사용자 초대 |
| 관리자 (Admin) | 관리자, 관리자 역할, 관리자 초대 |
| 결제 (Billing) | 결제, 이용내역 |
| 가격 (Pricing) | 요금제 |
| 알림 (Alert) | 알림 규칙, 알림 액션, 알림 이벤트 |
| 메트릭 (Metric) | 리소스 모니터링 |
| 리소스 (Resource) | 컴퓨팅, 네트워크, 스토리지 리소스 |
5. 권한 상세 목록
5.1 일반 (General)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 공지사항 | 조회 | 공지사항 및 업데이트 알림을 확인할 수 있습니다 | ACL.General.Notice.READ |
| 조직 | 조회 | 소속 조직의 기본 정보를 확인할 수 있습니다 | ACL.General.Organization.READ |
| 리전 | 조회 | 사용 가능한 리전 목록을 확인할 수 있습니다 | ACL.General.Region.READ |
5.2 인프라 (Infra)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 블록 스토리지 이미지 | 조회 | 가상 머신 생성 시 사용할 OS 이미지 목록을 확인할 수 있습니다 | ACL.Infra.BlockStorageImage.READ |
| 인스턴스 타입 | 조회 | CPU, 메모리, GPU 등 인스턴스 사양 목록을 확인할 수 있습니다 | ACL.Infra.InstanceType.READ |
| 영역 | 조회 | 리소스를 배치할 수 있는 가용 영역 목록을 확인할 수 있습니다 | ACL.Infra.Zone.READ |
5.3 결제 (Billing)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 결제 | 조회 | 조직의 이용내역을 확인할 수 있습니다 | ACL.Billing.Billing.READ |
5.4 가격 (Pricing)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 가격 | 조회 | 가격 정보와 가격표를 확인할 수 있습니다 | ACL.Pricing.Pricing.READ |
5.5 메트릭 (Metric)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 메트릭 | 조회 | CPU, 메모리, 네트워크 등 리소스 사용량 모니터링 데이터를 확인할 수 있습니다 | ACL.Metric.Metric.READ |
5.6 알림 (Alert)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 알림 규칙 | 생성 | 리소스 모니터링을 위한 알림 규칙을 생성할 수 있습니다 | ACL.Alert.AlertRule.CREATE |
| 알림 규칙 | 조회 | 알림 규칙 목록과 상세 설정을 확인할 수 있습니다 | ACL.Alert.AlertRule.READ |
| 알림 규칙 | 수정 | 알림 규칙의 이름, 조건, 액션 등을 변경할 수 있습니다 | ACL.Alert.AlertRule.UPDATE |
| 알림 규칙 | 삭제 | 알림 규칙을 삭제할 수 있습니다 | ACL.Alert.AlertRule.DELETE |
| 알림 액션 | 생성 | 알림 발생 시 실행할 액션 템플릿을 생성할 수 있습니다 | ACL.Alert.AlertActionTemplate.CREATE |
| 알림 액션 | 조회 | 알림 액션 템플릿 목록과 상세 설정을 확인할 수 있습니다 | ACL.Alert.AlertActionTemplate.READ |
| 알림 액션 | 수정 | 알림 액션 템플릿의 설정을 변경할 수 있습니다 | ACL.Alert.AlertActionTemplate.UPDATE |
| 알림 액션 | 삭제 | 알림 액션 템플릿을 삭제할 수 있습니다 | ACL.Alert.AlertActionTemplate.DELETE |
| 알림 이벤트 | 조회 | 알림 규칙에 의해 발생한 이벤트 이력을 확인할 수 있습니다 | ACL.Alert.AlertEvent.READ |
5.7 사용자 관리 (User)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 권한목록(ACL) | 조회 | 사용 가능한 전체 권한 목록을 확인할 수 있습니다 | ACL.User.ACL.READ |
| 사용자 | 조회 | 조직에 소속된 사용자 목록과 정보를 확인할 수 있습니다 | ACL.User.User.READ |
| 사용자 | 수정 | 사용자의 역할, 이름 등 정보를 수정할 수 있습니다 | ACL.User.User.UPDATE |
| 사용자 | 삭제 | 조직에서 사용자를 제거할 수 있습니다 | ACL.User.User.DELETE |
| 활동 로그 | 조회 | 사용자의 로그인, 리소스 변경 등 조직의 활동 로그를 확인할 수 있습니다 | ACL.User.UserAudit.READ |
| 액세스 토큰 | 생성 | API 호출을 위한 액세스 토큰을 발급할 수 있습니다 | ACL.User.UserAccessToken.CREATE |
| 액세스 토큰 | 조회 | 발급된 액세스 토큰 목록을 확인할 수 있습니다 | ACL.User.UserAccessToken.READ |
| 액세스 토큰 | 삭제 | 발급된 액세스 토큰을 폐기할 수 있습니다 | ACL.User.UserAccessToken.DELETE |
| 사용자 초대 | 생성 | 새로운 사용자를 조직에 초대할 수 있습니다 | ACL.User.UserInvite.CREATE |
| 사용자 초대 | 조회 | 발송된 초대 목록과 상태를 확인할 수 있습니다 | ACL.User.UserInvite.READ |
| 사용자 초대 | 삭제 | 발송된 초대를 취소할 수 있습니다 | ACL.User.UserInvite.DELETE |
| 사용자 역할 | 생성 | 새로운 사용자 정의 역할을 생성할 수 있습니다 | ACL.User.UserRole.CREATE |
| 사용자 역할 | 조회 | 역할 목록과 각 역할에 포함된 권한을 확인할 수 있습니다 | ACL.User.UserRole.READ |
| 사용자 역할 | 수정 | 사용자 정의 역할의 이름, 설명, 권한을 수정할 수 있습니다 | ACL.User.UserRole.UPDATE |
| 사용자 역할 | 삭제 | 사용자 정의 역할을 삭제할 수 있습니다 | ACL.User.UserRole.DELETE |
5.8 리소스 - 컴퓨팅 (Resource.Compute)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 가상 머신 | 생성 | 새로운 가상 머신을 생성할 수 있습니다 | ACL.Resource.Compute.VirtualMachine.CREATE |
| 가상 머신 | 조회 | 가상 머신 목록과 상세 정보를 확인할 수 있습니다 | ACL.Resource.Compute.VirtualMachine.READ |
| 가상 머신 | 수정 | 가상 머신의 이름, 설정 등을 변경할 수 있습니다 | ACL.Resource.Compute.VirtualMachine.UPDATE |
| 가상 머신 | 삭제 | 가상 머신을 영구적으로 삭제할 수 있습니다 | ACL.Resource.Compute.VirtualMachine.DELETE |
| 가상 머신 실행 | 생성 | 가상 머신을 시작하여 실행 상태로 전환할 수 있습니다 | ACL.Resource.Compute.VirtualMachineAllocation.CREATE |
| 가상 머신 실행 | 조회 | 가상 머신의 실행 상태와 리소스 할당 정보를 확인할 수 있습니다 | ACL.Resource.Compute.VirtualMachineAllocation.READ |
| 가상 머신 실행 | 수정 | 실행 중인 가상 머신의 할당 설정을 변경할 수 있습니다 | ACL.Resource.Compute.VirtualMachineAllocation.UPDATE |
| 가상 머신 실행 | 삭제 | 가상 머신을 중지하여 리소스 할당을 해제할 수 있습니다 | ACL.Resource.Compute.VirtualMachineAllocation.DELETE |
| 가상 머신 실행 | 웹 콘솔 접근 | 브라우저에서 가상 머신에 직접 접속하여 조작할 수 있습니다 | ACL.Resource.Compute.VirtualMachineAllocation.ACCESS_WEB_CONSOLE |
| 가상 클러스터 | 생성 | 여러 가상 머신을 묶은 클러스터를 생성할 수 있습니다 | ACL.Resource.Compute.VirtualCluster.CREATE |
| 가상 클러스터 | 조회 | 가상 클러스터 목록과 상세 정보를 확인할 수 있습니다 | ACL.Resource.Compute.VirtualCluster.READ |
| 가상 클러스터 | 수정 | 가상 클러스터의 이름, 설정 등을 변경할 수 있습니다 | ACL.Resource.Compute.VirtualCluster.UPDATE |
| 가상 클러스터 | 삭제 | 가상 클러스터를 영구적으로 삭제할 수 있습니다 | ACL.Resource.Compute.VirtualCluster.DELETE |
| 가상 클러스터 실행 | 생성 | 가상 클러스터를 시작하여 실행 상태로 전환할 수 있습니다 | ACL.Resource.Compute.VirtualClusterAllocation.CREATE |
| 가상 클러스터 실행 | 조회 | 가상 클러스터의 실행 상태와 리소스 할당 정보를 확인할 수 있습니다 | ACL.Resource.Compute.VirtualClusterAllocation.READ |
| 가상 클러스터 실행 | 수정 | 실행 중인 가상 클러스터의 할당 설정을 변경할 수 있습니다 | ACL.Resource.Compute.VirtualClusterAllocation.UPDATE |
| 가상 클러스터 실행 | 삭제 | 가상 클러스터를 중지하여 리소스 할당을 해제할 수 있습니다 | ACL.Resource.Compute.VirtualClusterAllocation.DELETE |
5.9 리소스 - 네트워크 (Resource.Network)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 네트워크 인터페이스 | 생성 | 가상 머신에 연결할 네트워크 인터페이스(NIC)를 생성할 수 있습니다 | ACL.Resource.Network.NetworkInterface.CREATE |
| 네트워크 인터페이스 | 조회 | 네트워크 인터페이스 목록과 IP 주소 등 상세 정보를 확인할 수 있습니다 | ACL.Resource.Network.NetworkInterface.READ |
| 네트워크 인터페이스 | 수정 | 네트워크 인터페이스의 설정을 변경할 수 있습니다 | ACL.Resource.Network.NetworkInterface.UPDATE |
| 네트워크 인터페이스 | 삭제 | 네트워크 인터페이스를 삭제할 수 있습니다 | ACL.Resource.Network.NetworkInterface.DELETE |
| 공인 IP | 생성 | 외부 인터넷 접속을 위한 공인 IP 주소를 할당받을 수 있습니다 | ACL.Resource.Network.PublicIp.CREATE |
| 공인 IP | 조회 | 할당된 공인 IP 목록과 연결 상태를 확인할 수 있습니다 | ACL.Resource.Network.PublicIp.READ |
| 공인 IP | 수정 | 공인 IP의 연결 대상 등 설정을 변경할 수 있습니다 | ACL.Resource.Network.PublicIp.UPDATE |
| 공인 IP | 삭제 | 공인 IP 할당을 해제하고 삭제할 수 있습니다 | ACL.Resource.Network.PublicIp.DELETE |
| 서브넷 | 생성 | 가상 네트워크 내에 IP 주소 범위를 정의한 서브넷을 생성할 수 있습니다 | ACL.Resource.Network.Subnet.CREATE |
| 서브넷 | 조회 | 서브넷 목록과 IP 대역 등 상세 정보를 확인할 수 있습니다 | ACL.Resource.Network.Subnet.READ |
| 서브넷 | 수정 | 서브넷의 설정을 변경할 수 있습니다 | ACL.Resource.Network.Subnet.UPDATE |
| 서브넷 | 삭제 | 서브넷을 삭제할 수 있습니다 | ACL.Resource.Network.Subnet.DELETE |
| 가상 네트워크 | 생성 | 격리된 가상 네트워크(VNet)를 생성할 수 있습니다 | ACL.Resource.Network.VirtualNetwork.CREATE |
| 가상 네트워크 | 조회 | 가상 네트워크 목록과 구성 정보를 확인할 수 있습니다 | ACL.Resource.Network.VirtualNetwork.READ |
| 가상 네 트워크 | 수정 | 가상 네트워크의 이름, 설정 등을 변경할 수 있습니다 | ACL.Resource.Network.VirtualNetwork.UPDATE |
| 가상 네트워크 | 삭제 | 가상 네트워크를 삭제할 수 있습니다 | ACL.Resource.Network.VirtualNetwork.DELETE |
| VPN | 생성 | VPN을 생성할 수 있습니다 | ACL.Resource.Network.Vpn.CREATE |
| VPN | 조회 | VPN 연결 목록과 상태를 확인할 수 있습니다 | ACL.Resource.Network.Vpn.READ |
| VPN | 수정 | VPN 연결 설정을 변경할 수 있습니다 | ACL.Resource.Network.Vpn.UPDATE |
| VPN | 삭제 | VPN 연결을 삭제할 수 있습니다 | ACL.Resource.Network.Vpn.DELETE |
5.10 리소스 - 스토리지 (Resource.Storage)
| 리소스 | 권한 | 설명 | 코드명 |
|---|---|---|---|
| 블록 스토리지 | 생성 | 가상 머신에 연결할 블록 스토리지 볼륨을 생성할 수 있습니다 | ACL.Resource.Storage.BlockStorage.CREATE |
| 블록 스토리지 | 조회 | 블록 스토리지 목록과 용량, 상태 등 상세 정보를 확인할 수 있습니다 | ACL.Resource.Storage.BlockStorage.READ |
| 블록 스토리지 | 수정 | 블록 스토리지의 이름, 크기 등을 변경할 수 있습니다 | ACL.Resource.Storage.BlockStorage.UPDATE |
| 블록 스토리지 | 삭제 | 블록 스토리지를 영구적으로 삭제할 수 있습니다 | ACL.Resource.Storage.BlockStorage.DELETE |
| 스냅샷 | 생성 | 블록 스토리지의 특정 시점 백업(스냅샷)을 생성할 수 있습니다 | ACL.Resource.Storage.BlockStorageSnapshot.CREATE |
| 스냅샷 | 조회 | 스냅샷 목록과 생성 시간 등 상세 정보를 확인할 수 있습니다 | ACL.Resource.Storage.BlockStorageSnapshot.READ |
| 스냅샷 | 수정 | 스냅샷의 이름 등 정보를 변경할 수 있습니다 | ACL.Resource.Storage.BlockStorageSnapshot.UPDATE |
| 스냅샷 | 삭제 | 스냅샷을 삭제할 수 있습니다 | ACL.Resource.Storage.BlockStorageSnapshot.DELETE |
| 스냅샷 스케줄러 | 생성 | 정기적으로 스냅샷을 생성하는 자동화 스케줄을 설정할 수 있습니다 | ACL.Resource.Storage.BlockStorageSnapshotScheduler.CREATE |
| 스냅샷 스케줄러 | 조회 | 스냅샷 자동 생성 스케줄 설정을 확인할 수 있습니다 | ACL.Resource.Storage.BlockStorageSnapshotScheduler.READ |
| 스냅샷 스케줄러 | 수정 | 스냅샷 스케줄의 주기, 보관 기간 등을 변경할 수 있습니다 | ACL.Resource.Storage.BlockStorageSnapshotScheduler.UPDATE |
| 스냅샷 스케줄러 | 삭제 | 스냅샷 자동 생성 스케줄을 삭제할 수 있습니다 | ACL.Resource.Storage.BlockStorageSnapshotScheduler.DELETE |
| 오브젝트 스토리지 | 생성 | 파일 저장을 위한 오브젝트 스토리지 버킷을 생성할 수 있습니다 | ACL.Resource.Storage.ObjectStorage.CREATE |
| 오브젝트 스 토리지 | 조회 | 오브젝트 스토리지 목록과 사용량 등을 확인할 수 있습니다 | ACL.Resource.Storage.ObjectStorage.READ |
| 오브젝트 스토리지 | 수정 | 오브젝트 스토리지의 설정을 변경할 수 있습니다 | ACL.Resource.Storage.ObjectStorage.UPDATE |
| 오브젝트 스토리지 | 삭제 | 오브젝트 스토리지 버킷을 삭제할 수 있습니다 | ACL.Resource.Storage.ObjectStorage.DELETE |
| 오브젝트 스토리지 사용자 | 생성 | 오브젝트 스토리지 접근을 위한 별도 사용자 계정을 생성할 수 있습니다 | ACL.Resource.Storage.ObjectStorageUser.CREATE |
| 오브젝트 스토리지 사용자 | 조회 | 오브젝트 스토리지 사용자 목록과 접근 키를 확인할 수 있습니다 | ACL.Resource.Storage.ObjectStorageUser.READ |
| 오브젝트 스토리지 사용자 | 수정 | 오브젝트 스토리지 사용자의 정보를 변경할 수 있습니다 | ACL.Resource.Storage.ObjectStorageUser.UPDATE |
| 오브젝트 스토리지 사용자 | 삭제 | 오브젝트 스토리지 사용자 계정을 삭제할 수 있습니다 | ACL.Resource.Storage.ObjectStorageUser.DELETE |
| 오브젝트 스토리지 권한 | 생성 | 오브젝트 스토리지 사용자에게 버킷 접근 권한을 부여할 수 있습니다 | ACL.Resource.Storage.ObjectStorageUserGrant.CREATE |
| 오브젝트 스토리지 권한 | 조회 | 오브젝트 스토리지 사용자별 권한 설정을 확인할 수 있습니다 | ACL.Resource.Storage.ObjectStorageUserGrant.READ |
| 오브젝트 스토리지 권한 | 수정 | 오브젝트 스토리지 사용자의 권한 을 변경할 수 있습니다 | ACL.Resource.Storage.ObjectStorageUserGrant.UPDATE |
| 오브젝트 스토리지 권한 | 삭제 | 오브젝트 스토리지 사용자의 권한을 회수할 수 있습니다 | ACL.Resource.Storage.ObjectStorageUserGrant.DELETE |
| 병렬 파일 시스템 | 생성 | 고성능 병렬 파일 시스템(PFS)을 생성할 수 있습니다 | ACL.Resource.Storage.ParallelFileSystem.CREATE |
| 병렬 파일 시스템 | 조회 | 병렬 파일 시스템 목록과 상태를 확인할 수 있습니다 | ACL.Resource.Storage.ParallelFileSystem.READ |
| 병렬 파일 시스템 | 수정 | 병렬 파일 시스템의 설정을 변경할 수 있습니다 | ACL.Resource.Storage.ParallelFileSystem.UPDATE |
| 병렬 파일 시스템 | 삭제 | 병렬 파일 시스템을 삭제할 수 있습니다 | ACL.Resource.Storage.ParallelFileSystem.DELETE |
| 병렬 파일 시스템 가상머신 연결 | 생성 | 병렬 파일 시스템에 가상 머신을 연결할 수 있습니다 | ACL.Resource.Storage.ParallelFileSystemMember.CREATE |
| 병렬 파일 시스템 가상머신 연결 | 조회 | 병렬 파일 시스템에 연결된 가상 머신 목록을 확인할 수 있습니다 | ACL.Resource.Storage.ParallelFileSystemMember.READ |
| 병렬 파일 시스템 가상머신 연결 | 삭제 | 병렬 파일 시스템에서 가상 머신 연결을 해제할 수 있습니다 | ACL.Resource.Storage.ParallelFileSystemMember.DELETE |