계정
역할 기반 액세스 제어
RBAC(역할 기반 액세스 제어) 문서
개요
시스템은 다양한 리소스 및 작업에 대한 액세스 제어를 관리하기 위해 포괄적인 RBAC 모델을 구현합니다. 역할, 정책 및 사용자-역할 할당으로 구성됩니다.
핵심 구성 요소
리소스
시스템은 다음과 같은 보호된 리소스를 정의합니다:
- Audit
- DevPod
- Image
- Payment
- Pubkey
- Registry
- Region
- Resource
- Serverless
- Storage
- Team
- Role
- UserRole
작업
리소스에 대한 사용 가능한 작업:
- List
- Get
- Create
- Update
- Delete
역할 시스템
역할은 사용자가 특정 리소스에서 수행할 수 있는 작업을 정의하는 권한의 모음입니다. 역할은 관련 권한을 함께 그룹화하여 액세스 권한을 효율적으로 구성하고 관리하는 데 도움이 됩니다.
사전 정의된 역할
-
AccountAdmin
- 계정 수준 리소스에 대한 전체 액세스
- 팀 멤버 관리 가능
- 계정 설정 구성 가능
-
Developer
- DevPod 관리 가능
- Serverless 리소스 관리 가능
- 이미지 관리 가능
- 스토리지 관리 가능(생성/읽기만)
-
Auditor
- 감사 로그에 대한 읽기 전용 액세스
-
Finance
- 결제 기능에 대한 전체 액세스
-
Ops
- DevPod 및 Serverless에 대한 읽기 액세스
- 이미지, 스토리지, Pubkey 및 리소스에 대한 전체 액세스
정책
정책은 특정 권한을 정의하는 액세스 제어의 기본 구성 요소입니다. 각 정책은 특정 리소스에서 특정 작업을 수행할 수 있는 권한을 부여하는 규칙을 나타냅니다.
정책 구조
- Resource: 대상 리소스
- Action: 허용된 작업
정책 할당
- 정책은 RolePolicy 매핑을 통해 역할에 할당됨
- 여러 정책을 단일 역할에 할당할 수 있음
- 정책 할당은 역할당 고유함
사용자 권한 제어
시스템은 사용자, 역할 및 정책의 3계층 모델을 통해 권한 제어를 구현합니다. 역할은 사용자와 정책 사이의 다리 역할을 하여 액세스 권한을 제어하는 유연하고 관리 가능한 방법을 제공합니다.
제어 흐름
-
사용자 할당
- 사용자에게 하나 이상의 역할이 할당됨
- 역할 할당은 각 계정에 특정함
- 사용자는 다른 계정에서 다른 역할을 가질 수 있음
-
브리지로서의 역할
- 역할은 정책 모음의 컨테이너 역할을 함
- 각 역할은 특정 책임 집합을 정의함
- 역할은 권한 관리를 더 유지 관리 가능하게 만듦
-
정책 시행
- 정책은 실제 권한을 정의함
- 각 요청은 사용자의 역할 정책에 대해 검증됨
- 일치하는 정책이 있는 경우에만 액세스가 부여됨
권한 부여 프로세스
-
요청 처리
- 계정 정보 추출
- 대상 리소스 및 작업 식별
- 사용자 역할 및 정책 확인
-
권한 확인
- 계정별 역할이 대상 계정에 대해 검증됨
- 정책 일치는 정확한 일치 및 와일드카드를 모두 고려함
-
액세스 제어
- 할당된 역할에 일치하는 정책이 있으면 액세스가 부여됨
- 거부된 요청은 오류가 아닌 빈 결과를 반환함
- 감사 로깅은 RBAC 검증 후 발생함
모범 사례
-
역할 관리
- 가능하면 사전 정의된 역할 사용
- 필요한 최소 권한으로 사용자 정의 역할 생성
- 역할 할당을 정기적으로 검토
-
보안 고려 사항
- 항상 계정 컨텍스트 검증
- 역할 기반 UI 제한 구현
- 역할 변경에 대한 감사 로그 유지
-
성능
- 역할 및 정책 할당이 캐시됨
- 대량 할당을 위한 일괄 작업 사용 가능
- 권한 확인을 위한 최적화된 데이터베이스 쿼리