계정

역할 기반 액세스 제어

RBAC(역할 기반 액세스 제어) 문서

개요

시스템은 다양한 리소스 및 작업에 대한 액세스 제어를 관리하기 위해 포괄적인 RBAC 모델을 구현합니다. 역할, 정책 및 사용자-역할 할당으로 구성됩니다.

핵심 구성 요소

리소스

시스템은 다음과 같은 보호된 리소스를 정의합니다:

  • Audit
  • DevPod
  • Image
  • Payment
  • Pubkey
  • Registry
  • Region
  • Resource
  • Serverless
  • Storage
  • Team
  • Role
  • UserRole

작업

리소스에 대한 사용 가능한 작업:

  • List
  • Get
  • Create
  • Update
  • Delete

역할 시스템

역할은 사용자가 특정 리소스에서 수행할 수 있는 작업을 정의하는 권한의 모음입니다. 역할은 관련 권한을 함께 그룹화하여 액세스 권한을 효율적으로 구성하고 관리하는 데 도움이 됩니다.

사전 정의된 역할

  1. AccountAdmin

    • 계정 수준 리소스에 대한 전체 액세스
    • 팀 멤버 관리 가능
    • 계정 설정 구성 가능
  2. Developer

    • DevPod 관리 가능
    • Serverless 리소스 관리 가능
    • 이미지 관리 가능
    • 스토리지 관리 가능(생성/읽기만)
  3. Auditor

    • 감사 로그에 대한 읽기 전용 액세스
  4. Finance

    • 결제 기능에 대한 전체 액세스
  5. Ops

    • DevPod 및 Serverless에 대한 읽기 액세스
    • 이미지, 스토리지, Pubkey 및 리소스에 대한 전체 액세스

정책

정책은 특정 권한을 정의하는 액세스 제어의 기본 구성 요소입니다. 각 정책은 특정 리소스에서 특정 작업을 수행할 수 있는 권한을 부여하는 규칙을 나타냅니다.

정책 구조

  • Resource: 대상 리소스
  • Action: 허용된 작업

정책 할당

  • 정책은 RolePolicy 매핑을 통해 역할에 할당됨
  • 여러 정책을 단일 역할에 할당할 수 있음
  • 정책 할당은 역할당 고유함

사용자 권한 제어

시스템은 사용자, 역할 및 정책의 3계층 모델을 통해 권한 제어를 구현합니다. 역할은 사용자와 정책 사이의 다리 역할을 하여 액세스 권한을 제어하는 ​​유연하고 관리 가능한 방법을 제공합니다.

제어 흐름

  1. 사용자 할당

    • 사용자에게 하나 이상의 역할이 할당됨
    • 역할 할당은 각 계정에 특정함
    • 사용자는 다른 계정에서 다른 역할을 가질 수 있음
  2. 브리지로서의 역할

    • 역할은 정책 모음의 컨테이너 역할을 함
    • 각 역할은 특정 책임 집합을 정의함
    • 역할은 권한 관리를 더 유지 관리 가능하게 만듦
  3. 정책 시행

    • 정책은 실제 권한을 정의함
    • 각 요청은 사용자의 역할 정책에 대해 검증됨
    • 일치하는 정책이 있는 경우에만 액세스가 부여됨

권한 부여 프로세스

  1. 요청 처리

    • 계정 정보 추출
    • 대상 리소스 및 작업 식별
    • 사용자 역할 및 정책 확인
  2. 권한 확인

    • 계정별 역할이 대상 계정에 대해 검증됨
    • 정책 일치는 정확한 일치 및 와일드카드를 모두 고려함
  3. 액세스 제어

    • 할당된 역할에 일치하는 정책이 있으면 액세스가 부여됨
    • 거부된 요청은 오류가 아닌 빈 결과를 반환함
    • 감사 로깅은 RBAC 검증 후 발생함

모범 사례

  1. 역할 관리

    • 가능하면 사전 정의된 역할 사용
    • 필요한 최소 권한으로 사용자 정의 역할 생성
    • 역할 할당을 정기적으로 검토
  2. 보안 고려 사항

    • 항상 계정 컨텍스트 검증
    • 역할 기반 UI 제한 구현
    • 역할 변경에 대한 감사 로그 유지
  3. 성능

    • 역할 및 정책 할당이 캐시됨
    • 대량 할당을 위한 일괄 작업 사용 가능
    • 권한 확인을 위한 최적화된 데이터베이스 쿼리