역할 기반 접근 제어(RBAC)
개요
ECI는 RBAC(Role-Based Access Control) 로 조직 사용자의 리소스 접근 범위를 제어합니다. 사용자에게 직접 권한을 주는 대신 역할(Role) 단위로 묶어서 관리하므로, 동일한 업무를 수행하는 사용자에게 일관된 권한을 빠르게 부여할 수 있습니다.
┌─────────┐ 할당 ┌─────────┐ 포함 ┌─────────┐
│ 사용자 │ ────────▶│ 역할 │ ────────▶│ 권한 │
└─────────┘ └─────────┘ └─────────┘
기본 제공 역할 4종
ECI는 일반적인 사용 시나리오에 맞춰 미리 구성된 4가지 역할을 제공합니다. 기본 제공 역할은 수정·삭제 불가입니다.
| 역할명 | 한글명 | 적합한 대상 |
|---|---|---|
| Owner | 소유자 | 조직 전체를 관리하는 담당자. 인원을 최소화하는 것을 권장 |
| Contributor | 기여자 | 일반 연구자·개발자. 가상머신·스토리지·네트워크 리소스를 직접 생성·운영 |
| Support | 서포터 | 운영 지원 담당자. 리소스 조회와 제한적 수정으로 트러블슈팅 수행 |
| Reader | 뷰어 | 인턴·감사자·외부 협력자 등 조회만 필요한 경우 |
역할별 권한 요약
| 작업 영역 | Owner | Contributor | Support | Reader |
|---|---|---|---|---|
| 리소스 조회 (가상머신·네트워크·스토리지·메트릭) | ✓ | ✓ | ✓ | ✓ |
| 가상머신·네트워크·스토리지 생성·수정·삭제 | ✓ | ✓ | 일부 | : |
| 가상머신 웹 콘솔 접근 | ✓ | ✓ | : | : |
| 사용자 초대·역할 할당 | ✓ | : | : | : |
| 사용자 정의 역할 생성·수정 | ✓ | : | : | : |
| 액세스 토큰 발급·삭제 | ✓ | 본인 토큰만 | : | : |
| 활동 로그 조회 | ✓ | : | ✓ | : |
| 청구서·사용량 조회 | ✓ | : | : | : |
위 표는 일반 사용 패턴 기준입니다. 각 역할의 정확한 권한 목록은 사용자 역할 관리 페이지에서 역할을 선택하면 확인할 수 있습니다.
권한(Permission) 구조
권한은 ACL. 접두사로 시작하는 4–5단계 코드로 표현됩니다.
ACL.{섹션}.{하위섹션}.{액션} # Resource 외 섹션
ACL.Resource.{Compute|Network|Storage}.{리소스}.{액션} # Resource 섹션
예시
ACL.Resource.Compute.VirtualMachine.CREATE: 가상머신 생성ACL.Resource.Storage.BlockStorage.UPDATE: 블록 스토리지 수정ACL.Resource.Compute.VirtualMachineAllocation.ACCESS_WEB_CONSOLE: 가상머신 웹 콘솔 접근ACL.Billing.Billing.READ: 청구서·사용량 조회ACL.User.UserInvite.CREATE: 사용자 초대 발송ACL.Alert.AlertRule.CREATE: 알림 규칙 생성
Resource 섹션은 Compute / Network / Storage 중간 분류 아래에 리소스가 있어 5단계로 길어집니다. 단, Resource.OrganizationResourceSummary처럼 중간 분류 없이 바로 붙는 항목도 있습니다.
액션 종류
| 액션 | 의미 |
|---|---|
CREATE | 리소스 생성 |
READ | 리소스 조회 |
UPDATE | 리소스 수정 |
DELETE | 리소스 삭제 |
ACCESS_WEB_CONSOLE | 가상머신 웹 콘솔 접근 (가상머신 전용) |
섹션과 하위 섹션
| 섹션 | 하위 분류 / 리소스 |
|---|---|
| General | Notice, Organization, Region |
| Infra | BlockStorageImage, InstanceType, Zone |
| Billing | Billing |
| Pricing | Pricing |
| Metric | Metric |
| Alert | AlertRule, AlertActionTemplate, AlertEvent |
| User | ACL, User, UserAudit, UserAccessToken, UserInvite, UserRole |
| Resource.Compute | VirtualMachine, VirtualMachineAllocation, VirtualCluster, VirtualClusterAllocation |
| Resource.Network | VirtualNetwork, Subnet, NetworkInterface, PublicIp, Vpn, LoadBalancer |
| Resource.Storage | BlockStorage, BlockStorageSnapshot, BlockStorageSnapshotScheduler, ObjectStorage, ObjectStorageUser, ObjectStorageUserGrant, ParallelFileSystem, ParallelFileSystemMember |
| Resource (직접) | OrganizationResourceSummary |
CREATE/UPDATE/DELETE만 부여하고 READ를 빼면 사용자가 리소스 목록을 못 봐서 실제로 사용할 수 없습니다. 생성·수정·삭제 권한을 줄 때는 같은 리소스의 READ 권한도 함께 부여하세요.
사용자 정의 역할 생성
조직별 워크플로에 맞춰 역할을 직접 만들 수 있습니다.
1단계: 역할 생성
- 사용자 관리 > 사용자 역할로 이동합니다.
- 역할 생성을 클릭합니다.
- 역할명·설명을 입력합니다.
- 권한 트리에서 필요한 권한을 체크합니다.
- 생성을 클릭합니다.
2단계: 사용자에게 역할 부여
- 사용자 관리 > 사용자에서 대상 사용자를 선택합니다.
- 사용자 상세 페이지에서 역할 편집으로 만든 역할을 추가합니다.
- 저장을 클릭합니다.
여러 역할을 부여하면 모든 역할의 권한이 합쳐져서(union) 적용됩니다. 작은 단위 역할을 여러 개 조합해 운영하는 패턴이 관리에 편합니다.
사용자 정의 역할 예시
| 역할명 | 부여하는 권한 (요약) | 적합한 대상 |
|---|---|---|
| 가상머신 관리자 | ACL.Resource.Compute.VirtualMachine.*, ACL.Resource.Compute.VirtualMachineAllocation.* (ACCESS_WEB_CONSOLE 포함), ACL.Resource.Compute.VirtualCluster.* | 가상머신 운영 전담자 |
| 네트워크 조회자 | ACL.Resource.Network.{VirtualNetwork,Subnet,NetworkInterface,PublicIp,Vpn}.READ | 보안·감사 담당 |
| 빌링 담당자 | ACL.Billing.Billing.{READ,UPDATE} + ACL.Pricing.Pricing.READ | 재무 담당 |
| 스토리지 관리자 | ACL.Resource.Storage.{BlockStorage,BlockStorageSnapshot,BlockStorageSnapshotScheduler,ObjectStorage,ObjectStorageUser,ParallelFileSystem}.* | 데이터 운영 담당 |
| 알림 운영자 | ACL.Alert.{AlertRule,AlertActionTemplate,AlertEvent}.* + ACL.Metric.Metric.READ | SRE/온콜 담당 |
권한 코드 전체 목록
API·CLI·감사 로그에서 사용하는 권한 코드 전체 목록입니다. 포털의 권한 트리 UI와 1:1 대응됩니다.
일반·인프라·결제·가격·메트릭·알림·사용자
General
| 코드 | 설명 |
|---|---|
ACL.General.Notice.READ | 공지사항 조회 |
ACL.General.Organization.READ | 조직 정보 조회 |
ACL.General.Region.READ | 리전 목록 조회 |
Infra
| 코드 | 설명 |
|---|---|
ACL.Infra.BlockStorageImage.READ | OS 이미지 목록 조회 |
ACL.Infra.InstanceType.READ | 인스턴스 타입 목록 조회 |
ACL.Infra.Zone.READ | 가용 영역 목록 조회 |
Billing / Pricing / Metric
| 코드 | 설명 |
|---|---|
ACL.Billing.Billing.READ | 이용 내역 조회 |
ACL.Billing.Billing.UPDATE | 결제 설정 변경 |
ACL.Pricing.Pricing.READ | 가격표 조회 |
ACL.Metric.Metric.READ | 메트릭 조회 |
Alert
| 코드 | 설명 |
|---|---|
ACL.Alert.AlertRule.{CREATE,READ,UPDATE,DELETE} | 알림 규칙 |
ACL.Alert.AlertActionTemplate.{CREATE,READ,UPDATE,DELETE} | 알림 액션 템플릿 |
ACL.Alert.AlertEvent.READ | 알림 이벤트 이력 조회 |
User
| 코드 | 설명 |
|---|---|
ACL.User.ACL.READ | 권한 목록 조회 |
ACL.User.User.{READ,UPDATE,DELETE} | 사용자 관리 |
ACL.User.UserAudit.READ | 활동 로그 조회 |
ACL.User.UserAccessToken.{CREATE,READ,DELETE} | 액세스 토큰 |
ACL.User.UserInvite.{CREATE,READ,DELETE} | 사용자 초대 |
ACL.User.UserRole.{CREATE,READ,UPDATE,DELETE} | 사용자 정의 역할 |
Resource — Compute / Network / Storage
Resource.Compute
| 코드 | 설명 |
|---|---|
ACL.Resource.Compute.VirtualMachine.{CREATE,READ,UPDATE,DELETE} | 가상머신 |
ACL.Resource.Compute.VirtualMachineAllocation.{CREATE,READ,UPDATE,DELETE} | 가상머신 실행(시작·중지) |
ACL.Resource.Compute.VirtualMachineAllocation.ACCESS_WEB_CONSOLE | 가상머신 웹 콘솔 접근 |
ACL.Resource.Compute.VirtualCluster.{CREATE,READ,UPDATE,DELETE} | 가상 클러스터 |
ACL.Resource.Compute.VirtualClusterAllocation.{CREATE,READ,UPDATE,DELETE} | 가상 클러스터 실행 |
Resource.Network
| 코드 | 설명 |
|---|---|
ACL.Resource.Network.VirtualNetwork.{CREATE,READ,UPDATE,DELETE} | 가상 네트워크 |
ACL.Resource.Network.Subnet.{CREATE,READ,UPDATE,DELETE} | 서브넷 |
ACL.Resource.Network.NetworkInterface.{CREATE,READ,UPDATE,DELETE} | 네트워크 인터페이스 |
ACL.Resource.Network.PublicIp.{CREATE,READ,UPDATE,DELETE} | 공인 IP |
ACL.Resource.Network.Vpn.{CREATE,READ,UPDATE,DELETE} | VPN |
ACL.Resource.Network.LoadBalancer.{CREATE,READ,UPDATE,DELETE} | 로드 밸런서 |
Resource.Storage
| 코드 | 설명 |
|---|---|
ACL.Resource.Storage.BlockStorage.{CREATE,READ,UPDATE,DELETE} | 블록 스토리지 |
ACL.Resource.Storage.BlockStorageSnapshot.{CREATE,READ,UPDATE,DELETE} | 스냅샷 |
ACL.Resource.Storage.BlockStorageSnapshotScheduler.{CREATE,READ,UPDATE,DELETE} | 스냅샷 스케줄러 |
ACL.Resource.Storage.ObjectStorage.{CREATE,READ,UPDATE,DELETE} | 오브젝트 스토리지 |
ACL.Resource.Storage.ObjectStorageUser.{CREATE,READ,UPDATE,DELETE} | 오브젝트 사용자 |
ACL.Resource.Storage.ObjectStorageUserGrant.{CREATE,READ,UPDATE,DELETE} | 오브젝트 사용자 권한 |
ACL.Resource.Storage.ParallelFileSystem.{CREATE,READ,UPDATE,DELETE} | PFS |
ACL.Resource.Storage.ParallelFileSystemMember.{CREATE,READ,DELETE} | PFS 멤버(가상머신 연결) |
Resource (직접)
| 코드 | 설명 |
|---|---|
ACL.Resource.OrganizationResourceSummary.READ | 조직 리소스 요약 조회 |
자주 묻는 질문
기본 제공 역할(Owner/Contributor/Support/Reader)을 수정할 수 있나요?
수정·삭제 불가입니다. 비슷한 권한이 필요하면 사용자 정의 역할을 새로 만드세요.
삭제하려는 역할이 삭제되지 않습니다.
해당 역할이 사용자에게 할당되어 있으면 삭제할 수 없습니다. 먼저 그 역할을 쓰는 사용자에게서 역할을 제거하거나 다른 역할로 교체한 후 삭제하세요.
권한이 없는 메뉴는 어떻게 표시되나요?
표시되지 않거나 비활성화 상태로 보입니다. 사용자에게는 "접근 권한 없음" 안내가 노출됩니다.