역할과 권한 관리
Alpacon에서 사용자와 그룹의 서버 접근 권한을 관리합니다.
권한 모델
Alpacon의 권한은 두 단계로 작동합니다.
1. 사용자 역할 (워크스페이스 수준)
| 역할 | 권한 |
|---|---|
| User | 할당된 서버만 접근, 자신의 프로필 수정 |
| Staff | 사용자·그룹 관리, 일부 워크스페이스 설정 |
| Superuser | 모든 권한, 워크스페이스 전체 제어 |
2. 서버 접근 권한 (그룹 기반)
- 서버에 그룹을 할당합니다.
- 그룹의 모든 멤버가 해당 서버에 접근합니다.
- 한 사용자가 여러 그룹에 속할 수 있습니다.
역할 기반 접근 제어 (RBAC)
워크스페이스 수준 권한(앞서 설명한 사용자 역할)은 RBAC로 관리됩니다. 기본 제공 RBAC 역할은 사용자 역할 단계와 짝을 이루고, 서버 접근은 기본적으로 그룹을 기준으로 정해집니다. 전체 그림은 아래 권한 상속 및 누적을 참고하세요. 권한을 더 세밀하게 나누려면 사용자 정의 역할을 만들 수도 있습니다.
기본 제공 역할
기본 제공 역할은 사용자 역할 단계에 매핑되어 자동으로 할당됩니다.
| 역할 | 자동 할당 조건 | 권한 |
|---|---|---|
| admin | 사용자를 Staff로 설정할 때 | 사용자·그룹 관리, 일부 워크스페이스 설정 |
| superuser | 사용자를 Superuser로 설정할 때 | 모든 권한, 워크스페이스 전체 제어 |
기본 제공 역할은 시스템이 자동으로 할당하고 관리합니다. Staff도 Superuser도 아닌 일반 사용자에게는 워크스페이스 전체 범위의 역할이 부여되지 않으며, 이들의 접근 권한은 그룹 소속과 직접 할당된 역할에서 나옵니다.
직접 로그인 검토
External access에는 별도의 권한이 적용됩니다. 모든 워크스페이스에는 Superuser가 명시적으로 할당하는 reviewer, auditor, security_admin 역할이 있습니다. admin은 Staff 멤버에게 자동으로 할당되는 기본 제공 역할입니다. 역할별 권한은 다음과 같습니다.
| 권한 | 허용되는 작업 | reviewer | auditor | security_admin | admin |
|---|---|---|---|---|---|
local_access_event:read | 서버에 기록된 직접 로그인 읽기 | 예 | 예 | 예 | 예 |
local_access_finding:read | 발견 사항과 기간 요약 읽기, 증거 내보내기 | 예 | 예 | 예 | 예 |
local_access_finding:dispose | 발견 사항에 개별 또는 일괄 결정 기록 | 예 | — | — | 예 |
direct_access_entry:read | 허용된 직접 접근 목록과 상시 허용 요청 읽기 | 예 | 예 | 예 | 예 |
direct_access_entry:request | 상시 허용 항목 요청 | 예 | — | — | 예 |
direct_access_entry:create, :update, :delete | 상시 허용 항목 추가·변경·삭제, 요청 승인·거절(승인에는 :create 적용) | — | — | 예 | 예 |
local_access_detection:update | 직접 로그인 탐지 켜기·끄기 | — | — | 예 | 예 |
이 역할은 워크스페이스 전체 범위로 할당해야 작동합니다. superuser는 모든 권한을 가집니다. 콘솔에서 역할별로 보이는 내용은 역할과 권한을 참고하세요.
사용자 정의 역할
조직의 필요에 맞게 세밀한 권한을 정의하려면 사용자 정의 역할을 만듭니다. 사용자 정의 역할은 두 가지 범위 수준을 지원합니다.
- 전역 범위: 해당 리소스 유형의 모든 오브젝트에 권한이 적용됩니다.
- 오브젝트 범위: 특정 리소스 유형과 오브젝트로 권한이 제한됩니다.
RBAC 권한
권한은 resource:action 형식을 따릅니다(예: server:read, server:update). 역할에 권한을 할당한 다음, 그 역할을 사용자나 그룹에 할당합니다. 토큰 접근 범위도 같은 어휘를 쓰므로, 권한 이름 전체는 접근 범위 레퍼런스에서 확인할 수 있습니다.
권한 상속은 합산 방식입니다. 사용자의 유효 권한은 직접 할당된 역할과 그룹을 통해 상속된 역할의 권한을 모두 합친 것입니다.
역할 생성과 관리
Superuser만 워크스페이스 설정 → 역할에서 역할을 관리할 수 있습니다.
리소스 범위 역할
리소스별 역할도 기본 제공 역할처럼 Alpacon에 포함되어 있지만, 워크스페이스 전체가 아닌 서버나 그룹 하나에만 적용됩니다.
예를 들어 server:maintainer와 group:member가 있습니다. 각 역할이 어떻게 할당되는지는 역할 목록의
설명에서 확인할 수 있습니다.
역할 목록
역할 목록에는 워크스페이스의 모든 역할이 이름, 설명, 생성일과 함께 표시됩니다.
역할 생성
- 새 역할을 클릭합니다.
- 역할의 이름과 설명을 입력합니다.
- 필요에 따라 권한 템플릿을 하나 이상 선택해 역할의 권한을 채웁니다.
- 저장합니다.
템플릿은 접근 범위 레퍼런스에 있는 사전 설정 중 하나입니다. 템플릿으로 만든 역할에는 활성화된 확장 기능과 관계없이 템플릿에 나열된 모든 스코프가 부여됩니다. 템플릿 없이 만든 역할에는 처음에 권한이 없습니다. 역할 상세 페이지에서 권한, 사용자, 그룹을 할당하고 템플릿으로 채운 권한도 변경할 수 있습니다.
역할 삭제
- 역할 상세 페이지로 이동합니다.
- 설정 탭으로 이동합니다.
- 역할 삭제를 클릭합니다.
- 삭제를 확인합니다.
역할 상세 페이지
역할 상세 페이지에는 권한, 사용자 할당, 그룹 할당, 설정 탭이 있습니다.
권한 탭
이 역할에 할당된 권한을 관리합니다. 각 권한은 resource:action 형식입니다. 예를 들어 server:read,
server:update가 있으며, 전체 목록은 접근 범위 레퍼런스에서 확인할 수
있습니다.
권한 목록에는 권한 이름과 특정 리소스 유형 및 오브젝트로 범위가 제한되어 있는지가 표시됩니다.
검색창에서 권한을 검색하고 전체 또는 할당됨 상태로 필터링할 수 있습니다.
권한 할당:
- 권한 할당을 클릭합니다.
- 드롭다운에서 권한을 선택합니다.
- 권한을 특정 리소스 유형과 오브젝트로 제한하려면 특정 리소스로 제한을 선택할
수 있습니다.
- 드롭다운에서 리소스 유형을 선택합니다.
- 체크박스 목록에서 오브젝트 항목을 하나 이상 선택합니다.
- 선택한 리소스 유형에 오브젝트가 없으면 해당 유형의 모든 오브젝트에 권한이 적용됩니다.
- 저장합니다.
권한 제거:
이 역할에서 권한을 제거하려면 할당 항목을 선택하고 할당 제거를 클릭하세요.
사용자 할당 탭
이 역할에 할당된 사용자를 관리합니다. 목록에는 각 사용자의 이름, 이메일, 범위 정보가 표시됩니다.
사용자 할당:
- 사용자 할당을 클릭합니다.
- 드롭다운에서 사용자를 선택합니다.
- 필요하면 범위를 설정해 이 역할을 특정 리소스로 제한합니다.
- 저장합니다.
사용자 할당 제거:
할당을 선택하고 할당 제거를 클릭해 제거하세요.
Superuser의 admin 할당은 단독으로 제거할 수 없습니다. 먼저 superuser 할당을 제거하세요.
그룹 할당 탭
이 역할에 할당된 그룹을 관리합니다. 그룹에 역할을 할당하면 그 그룹의 모든 멤버가 역할의 권한을 상속받습니다.
그룹 할당:
- 그룹 할당을 클릭합니다.
- 드롭다운에서 그룹을 선택합니다.
- 필요하면 범위를 설정해 이 역할을 특정 리소스로 제한합니다.
- 저장합니다.
그룹 할당 제거:
할당을 선택하고 할당 제거를 클릭해 제거하세요.
설정 탭
역할의 이름과 설명을 수정하거나 역할을 삭제합니다.
- 이름: 이 역할을 구분하는 고유한 이름을 입력합니다.
- 설명: 필요한 경우 역할의 목적을 입력합니다.
변경 사항을 적용하려면 저장을 클릭하세요. 역할과 모든 할당을 영구적으로 제거하려면 역할 삭제를 클릭하세요.
사용자 역할 설정
변경 방법:
- IAM > Users에서 사용자를 선택합니다.
- 업데이트를 클릭합니다.
- 역할을 변경합니다.
- 저장을 클릭합니다.
필수 권한: Staff 또는 Superuser
자세한 내용: 사용자 관리
서버 접근 권한 설정
그룹을 통한 접근 제어
1단계: 그룹 생성
- 그룹 생성하기 문서를 참고하세요.
2단계: 사용자를 그룹에 추가
- 사용자 할당 문서를 참고하세요.
3단계: 서버에 그룹 할당
- 서버 그룹 관리 문서를 참고하세요.
개별 서버 권한 설정
- Servers 페이지에서 서버를 선택합니다.
- 업데이트를 클릭합니다.
- 할당된 그룹을 선택합니다.
- 저장을 클릭합니다.
선택한 그룹의 모든 멤버가 해당 서버에 접근합니다.
기능별 권한
Websh (터미널)
그룹에 할당된 서버에 터미널로 접속합니다.
- IAM 사용자명으로 로그인합니다.
- sudo 권한을 사용할 수 있습니다.
WebFTP (파일 관리)
그룹에 할당된 서버로 파일을 업로드하거나 내려받습니다.
- 사용자 홈 디렉터리에 접근합니다.
- 권한에 따라 다른 디렉터리에 접근합니다.
MFA 필수 작업
Enterprise 플랜에서 슈퍼유저는 Policies > Authentication에서 다음 작업에 추가 MFA 인증을 요구할 수 있습니다. 기본적으로 선택된 작업은 없습니다.
- 서버 작업: 에이전트를 업그레이드하거나 다시 시작하고 alpamon-pam을 설치할 때 인증합니다.
- 웹 터미널: 본인 계정이 아닌 시스템 계정으로 접속합니다.
- 코드 에디터: 본인 계정이 아닌 시스템 계정으로 에디터를 엽니다.
- 파일 전송: 본인 계정이 아닌 시스템 계정으로 파일을 전송할 때 인증합니다.
- 명령 실행: 본인 계정이 아닌 시스템 계정으로 실행합니다.
- 승인 처리: 검토자로서 요청을 승인하거나 반려할 때 인증합니다.
권한 조합 예시
예시 1: 개발팀 서버 접근
그룹: developers
멤버: user1 (User), user2 (User), user3 (Staff)
서버: dev-server-01, dev-server-02
할당된 그룹: developers
결과: user1, user2, user3 모두 두 서버에 접근 가능예시 2: 프로덕션 서버 제한
그룹: senior-engineers
멤버: user3 (Staff), user4 (Superuser)
서버: prod-server-01
할당된 그룹: senior-engineers
결과: user3, user4만 프로덕션 서버에 접근 가능권한 상속 및 누적
여러 그룹 소속:
- 사용자가 그룹 A와 B에 속하면 두 그룹에 할당된 모든 서버에 접근합니다.
역할과 그룹:
- Superuser(RBAC
superuser)와 Staff(RBACadmin)는 그룹 할당 없이도 모든 서버에 접근합니다.
서버 maintainer와 오브젝트 범위 역할:
- 서버의 maintainer는 그룹에 할당되어 있지 않아도 해당 서버에 접근합니다. maintainer는 그 서버로 범위가 지정된
server:maintainer역할을 가진 사용자입니다. 역할을 직접 받았거나, 역할이 할당된 그룹의 멤버이면 됩니다. 역할은 관리자가 RBAC 역할 API로 주거나 거두며, 서버를 등록하거나 서버의 소유자가 된다고 해서 역할이 생기지는 않습니다. Alpacon이 이 역할을 자동으로 주던 시기에 등록한 서버라면 등록한 사용자가 그 역할을 계속 가집니다. 워크스페이스 전체나 서버 그룹 범위로 할당한 역할로는 maintainer가 되지 않습니다. - maintainer는 할당된 그룹의 소유자나 관리자처럼 서버에 존재하는 다른 계정으로도 접속할 수 있습니다.
server:read권한을 부여하는 사용자 정의 역할을 사용자나 그룹에 할당하면서 범위를 특정 서버나 그 서버가 속한 그룹으로 좁혀도(오브젝트 범위) 같은 방식으로 접근할 수 있습니다.- 이렇게 접근하는 사용자는 그룹 멤버와 마찬가지로 해당 서버를 작업 세션이나 sudo 정책 대상으로 사용할 수 있습니다.
그룹을 통한 역할 상속:
- 그룹에 역할을 할당하면 그룹의 모든 멤버가 그 역할의 권한을 상속받습니다.
- 사용자의 유효 권한은 직접 할당된 역할과 그룹에서 상속받은 역할을 합친 것입니다.
보안 모범 사례
최소 권한 원칙:
- 필요한 최소한의 권한만 부여합니다.
- 권한을 정기적으로 검토하고 조정합니다.
그룹 활용:
- 개별 사용자보다 그룹 단위로 권한을 관리합니다.
- 환경별, 프로젝트별로 그룹을 나눕니다.
Superuser 제한:
- Superuser 역할은 최소한으로 유지합니다.
- 신뢰할 수 있는 관리자에게만 부여합니다.
감사 로그
모든 권한 변경은 감사 로그에 기록됩니다.
- 누가 언제 권한을 변경했는지 확인합니다.
- 어떤 사용자나 그룹의 권한이 바뀌었는지 확인합니다.