권한 관리 가이드
효과적인 권한 관리는 보안과 협업 효율성을 동시에 달성하는 핵심 요소입니다. Alpacon의 IAM(Identity and Access Management) 기능을 활용하여 체계적인 권한 관리 전략을 수립할 수 있습니다.
자세한 내용은 IAM 개요를 참고하세요.
역할 기반 권한 체계
Alpacon은 세 가지 역할(Role)을 제공하여 사용자 권한을 계층적으로 관리합니다.
역할별 권한
User (일반 사용자)
- 권한 범위: 자신에게 할당된 리소스에 대한 접근 및 사용
- 주요 기능:
- 그룹에 소속되어 해당 그룹의 서버 접근을 요청할 자격 획득
- 작업 세션을 요청하여 터미널, 파일, 에디터, 명령 도구 실행
- 자신의 프로필 및 설정 관리
- 적용 대상: 일반 팀원, 개발자, 운영자
Staff (관리자)
- 권한 범위: User 권한 + 사용자 및 그룹 관리
- 주요 기능:
- 사용자 초대 및 계정 관리
- 그룹 생성 및 멤버 관리
- 서버 등록 및 설정 변경
- 일부 워크스페이스 설정 관리
- 적용 대상: 팀 리더, 프로젝트 관리자
Superuser (슈퍼유저)
- 권한 범위: Staff 권한 + 시스템 전반의 최고 관리 권한
- 주요 기능:
- 모든 사용자 및 그룹 관리
- 워크스페이스 전체 설정 관리
- 작업 세션 요청 승인
- 결제 및 구독 관리
- 감사 로그 접근
- 적용 대상: 시스템 관리자, CTO, 보안 담당자
사용자를 Staff로 설정하면 RBAC admin 역할이, Superuser로 설정하면 superuser 역할이 자동 할당됩니다.
자세한 내용은 사용자 관리를 참고하세요.
사용자 정의 역할
기본 제공 역할 외에도, 조직에 맞는 세밀한 권한을 가진 사용자 정의 역할을 생성할 수 있습니다:
- 프로젝트 범위 관리자: 특정 서버 그룹에 대한 전체 관리 접근
- 읽기 전용 감사자: 컴플라이언스 및 모니터링을 위한 읽기 전용 접근
- 배포 운영자: 전체 관리 권한 없이 배포 명령 실행 권한
사용자 정의 역할은 오브젝트 범위를 지원하여, 워크스페이스 전체가 아닌 특정 리소스로 권한을 제한할 수 있습니다. 역할 관리(Superuser만 가능)는 워크스페이스 설정 > 역할에서 할 수 있습니다.
사용자 정의 역할 모범 사례
- 명확한 이름: 역할의 목적을 반영하는 설명적인 이름 사용 (예:
prod-deploy-operator,staging-readonly) - 좁은 범위: 전역 권한보다 오브젝트 범위 권한을 우선 사용
- 합성 우선: 넓은 역할 하나보다 집중된 역할 여러 개를 조합
- 목적 문서화: 역할에 설명을 추가하여 의도된 용도를 명시
- 정기적 검토: 사용자 정의 역할과 할당을 주기적으로 감사
그룹 기반 권한 관리
그룹을 활용하면 사용자와 서버를 논리적으로 구분하여 효율적으로 권한을 관리할 수 있습니다. 그룹 소속은 해당 그룹의 서버 접근을 요청할 수 있는 자격을 부여하며, 실제 접근은 아래에서 설명하는 승인된 작업 세션을 통해 이루어집니다.
그룹 설계 전략
1. 팀 기반 그룹 구성
조직의 팀 구조에 따라 그룹을 생성합니다.
예시:
- Backend Team: 백엔드 서버 접근 권한
- Frontend Team: 프론트엔드 서버 및 빌드 서버 접근
- DevOps Team: 모든 인프라 서버 접근
- Data Team: 데이터베이스 및 분석 서버 접근
2. 환경 기반 그룹 구성
서버 환경에 따라 접근 권한을 분리합니다.
예시:
- Production Group: 프로덕션 서버 (제한적 접근)
- Staging Group: 스테이징 서버
- Development Group: 개발 서버 (자유로운 접근)
3. 프로젝트 기반 그룹 구성
프로젝트 단위로 서버와 인력을 관리합니다.
예시:
- Project A Team: 프로젝트 A 관련 서버
- Project B Team: 프로젝트 B 관련 서버
- Shared Infrastructure: 공통 인프라 서버
자세한 내용은 그룹 개요를 참고하세요.
그룹 역할
그룹 내에서 각 멤버는 그룹 자체에 대해 수행할 수 있는 작업을 결정하는 역할을 가집니다.
- 소유자(Owner): 그룹에 대한 전체 권한
- 관리자(Manager): 그룹과 멤버 관리
- 멤버(Member): 그룹의 서버 접근을 요청할 자격
자세한 내용은 그룹에 사용자 할당을 참고하세요.
작업 세션을 통한 대화형 접근
서버에 대한 대화형 접근(터미널, 파일 전송, 코드 에디터, 명령 실행, 포트 포워딩)은 작업 세션을 통해 이루어집니다. 그룹 소속은 사용자에게 접근을 요청할 자격을 부여하고, 실제로 무엇이 어떤 서버에서 얼마 동안 실행되는지는 작업 세션이 결정합니다.
전체 흐름은 작업 세션 개요를 참고하세요.
세션이 접근을 부여하는 방식
- 요청: 대상 서버, 필요한 기능(웹 터미널, 파일 전송, 명령 실행, 코드 에디터, 터널), 목적, 사용 시간을 선택합니다.
- 승인: Superuser 역할을 가진 사용자가 요청을 검토하여 승인하거나 반려합니다. Superuser 본인의 세션은 자동으로 활성화됩니다.
- 활성: 승인되면 세션은 시간 제한을 가지며, 승인된 서버에서 승인된 기능만 만료 전까지 실행할 수 있습니다.
- 감사: 모든 세션과 세션 내 활동이 기록됩니다.
그룹으로 접근 범위 설정
민감한 서버는 적절한 인원만 세션을 요청할 자격을 갖도록 그룹을 설계하세요.
프로덕션 서버 보호
그룹: Production-Access
- Members: Senior Engineers, DevOps Team
- Servers: Production Web Server, Production DB Server
이 그룹의 멤버만 프로덕션 서버에 세션을 요청할 자격이 있습니다
개발 환경 분리
그룹: Dev-Team-A
- Members: Team A 개발자
- Servers: Team A 개발 서버, 공유 개발 DB
그룹: Dev-Team-B
- Members: Team B 개발자
- Servers: Team B 개발 서버, 공유 개발 DB
각 팀은 자신의 개발 서버에만 세션을 요청할 수 있습니다
자세한 내용은 서버 연결을 참고하세요.
작업 세션 모범 사례
- 좁게 요청: 넓은 권한이 아니라 작업에 필요한 서버와 기능만 요청
- 시간 제한 세션 선호: 오래 유지되는 접근보다 작업에 맞는 가장 짧은 사용 시간 선택
- 승인 전 검토: Superuser는 각 요청의 목적, 서버, 기능을 승인 전에 확인
- 세션 이력 확인: 승인 및 완료된 세션을 정기적으로 검토하여 비정상적인 범위나 시점 파악
토큰을 통한 자동화 접근
자동화(CI/CD 파이프라인, 스크립트, 통합)는 작업 세션 대신 API 또는 서비스 토큰을 사용합니다. 토큰은 세션 승인을 거치지 않으므로 각 토큰을 엄격하게 제한하세요.
- 토큰 범위 지정: 자동화에 필요한 리소스와 작업만 부여
- 서버 제한: 서버 허용 목록(Server ACL)으로 토큰이 접근할 수 있는 서버를 필요한 범위로 한정
- 만료 및 로테이션 설정: 토큰에 만료 시간을 지정하고 정기적으로 로테이션
자세한 내용은 API 접근 토큰과 서비스 토큰을 참고하세요.
최소 권한 원칙 (Principle of Least Privilege)
사용자에게 업무 수행에 필요한 최소한의 권한만 부여하여 보안을 강화합니다.
실천 방법
1. 기본 그룹 활용 제한
- Alpacon users 기본 그룹에는 공통 접근이 필요한 서버만 등록
- 민감한 서버는 별도 그룹으로 분리하여 관리
- 신규 사용자는 기본 그룹에서 시작하되, 필요 시 추가 그룹 할당
2. 역할 최소화
- 대부분의 사용자는 User 역할로 시작
- Staff 역할은 실제 관리 업무를 수행하는 인원에게만 부여
- Superuser 역할은 최소 인원(2-3명)에게만 제한적으로 부여
3. 정기적인 권한 검토
- 분기별로 사용자별 권한 및 그룹 소속 검토
- 퇴사자 또는 역할 변경 시 즉시 권한 회수
- 장기 미사용 계정 비활성화
활동 모니터링 및 감사
사용자 활동을 추적하여 보안 사고를 예방하고 사후 분석을 지원합니다. 모든 작업 세션(요청자, 승인 내용, 세션 내 활동)도 이러한 로그와 함께 기록됩니다.
모니터링 대상
사용자 활동 로그
각 사용자의 활동 이력을 확인할 수 있습니다:
- 로그인 시간 및 IP 주소
- 서버 접근 이력
- 설정 변경 내역
- 작업 성공/실패 여부
자세한 내용은 사용자 상세 - 활동 탭을 참고하세요.
서버 접근 이력
서버별로 접근한 사용자 및 그룹의 이력을 확인할 수 있습니다:
- 시스템 사용자별 접근 기록
- 시스템 그룹별 접근 기록
자세한 내용은 서버 상세 - 접근 탭을 참고하세요.
명령어 실행 이력
서버에서 실행된 명령어의 기록을 확인할 수 있습니다:
- 실행 시간 및 사용자
- 명령어 내용 및 결과
자세한 내용은 서버 상세 - 활동 탭을 참고하세요.
권한 관리 체크리스트
효과적인 권한 관리를 위한 체크리스트입니다.
초기 설정
- 조직 구조에 맞는 그룹 설계 및 생성
- 각 그룹에 적절한 서버 할당
- 사용자별 역할(User/Staff/Superuser) 결정
- 사용자를 적절한 그룹에 배치
운영 단계
- 신규 사용자 등록 시 최소 권한 부여
- 서버 추가 시 적절한 그룹에만 할당
- 민감한 서버는 제한된 그룹만 요청 자격을 갖도록 설정
- 기본 그룹(Alpacon users)의 서버 목록 최소화
- 작업 세션 요청의 목적과 범위를 승인 전에 검토
정기 검토
- 분기별 사용자 권한 검토 (역할 및 그룹 소속)
- 승인 및 완료된 작업 세션에서 비정상적인 범위나 시점 검토
- 퇴사자 계정 즉시 비활성화 또는 삭제
- 장기 미사용 계정 확인 및 조치
- 그룹 구성의 적절성 검토
- 활동 로그에서 이상 행위 패턴 확인
보안 강화
- 프로덕션 서버는 Senior 레벨 이상만 요청 자격 부여
- Superuser 역할은 2-3명으로 제한
- 넓은 상시 권한보다 시간 제한 작업 세션 선호
- 중요 작업 수행 시 이중 승인 프로세스 고려
- 정기적인 보안 교육 및 가이드라인 공유