본문으로 건너뛰기

K8s RBAC 관리

런타임 환경 - 권한 관리 탭

"개발팀은 dev 네임스페이스만, 운영팀은 prod 네임스페이스만 접근하도록 하고 싶다면?" KIOPS의 RBAC 관리 기능을 사용하면 팀별, 역할별로 Kubernetes 클러스터 접근 권한을 세밀하게 관리할 수 있습니다.

왜 RBAC이 중요할까요?

모든 사용자에게 클러스터 전체 접근 권한을 주면 실수로 인한 장애 위험이 높아집니다. RBAC을 사용하면 "필요한 권한만 필요한 사람에게" 부여하여 보안과 안정성을 높일 수 있습니다.

RBAC이란?

RBAC(Role-Based Access Control, 역할 기반 접근 제어)은 Kubernetes에서 "누가 무엇을 할 수 있는지"를 정의하는 방식입니다. 쉽게 말해, 회사의 출입 카드 시스템과 비슷합니다. 각 직원이 자신의 부서와 필요한 공간에만 접근할 수 있듯이, RBAC은 사용자가 필요한 리소스에만 접근할 수 있도록 합니다.

KIOPS의 RBAC 구조

KIOPS의 RBAC 관리는 [런타임 환경] > Kubernetes 클러스터 선택 > 권한 관리 탭에서 이루어지며, 다음 4개의 서브 탭으로 구성됩니다.

  • 서비스 계정 (RBACManagementTab): 클러스터의 ServiceAccount를 직접 조회/생성/삭제합니다. SA 생성 시 SSH로 클러스터에 바로 ServiceAccount가 생성됩니다 (별도의 createInCluster 플래그는 없습니다).
  • 권한 바인딩: ServiceAccount에 대한 RoleBinding/ClusterRoleBinding을 관리합니다.
  • 권한 템플릿: cluster-admin / admin / editor / viewer 등 기본 ClusterRole에 매핑되는 권한 템플릿을 제공합니다.
  • 통합 계정 관리 (KiwiSAManagementTab, cluster-admin 전용): KIOPS DB가 관리하는 ServiceAccount + 네임스페이스 바인딩 + 사용자 할당 + 클러스터 동기화를 처리하며, 이 탭의 SA 생성 모달에서 createInCluster 플래그를 통해 KIOPS DB 등록과 클러스터 실제 생성 여부를 선택할 수 있습니다.

권한 수준

KIOPS에서 사용하는 권한 템플릿은 Kubernetes의 기본 ClusterRole에 매핑됩니다.

  • cluster-admin: 클러스터 전체에 대한 모든 권한입니다. 클러스터 관리자에게만 부여하세요.
  • admin: 네임스페이스 내 모든 리소스를 관리할 수 있습니다. 운영팀이나 관리자에게 적합합니다.
  • editor: 리소스를 생성/수정/삭제할 수 있지만 RBAC 설정은 변경할 수 없습니다. 개발팀에게 적합합니다.
  • viewer: 읽기 전용 접근만 가능합니다. 모니터링이나 감사 목적에 적합합니다.
최소 권한 원칙

보안을 위해 "최소 권한 원칙"을 따르세요. 사용자에게 필요한 최소한의 권한만 부여하면 실수나 악의적인 행동으로 인한 피해를 최소화할 수 있습니다.


사전 요구사항

  • Kubernetes 클러스터가 KIOPS에 등록되어 있어야 합니다.

권한 안내: 이 기능에 접근할 수 없다면 기관 관리자에게 권한을 요청하세요.


권한 관리 탭 (RBAC 관리)

권한 관리 탭은 [런타임 환경] > Kubernetes 클러스터 선택 > 권한 관리 위치에 있으며, 클러스터의 ServiceAccount, RoleBinding, ClusterRole 등의 RBAC 리소스를 직접 다룹니다.

Step 1: 권한 관리 탭 이동

  1. 좌측 메뉴에서 [런타임 환경] 을 클릭합니다.
  2. 대상 Kubernetes 클러스터를 선택합니다.
  3. 클러스터 상세 페이지에서 권한 관리 탭을 클릭합니다.

Step 2: 서비스 계정 생성

  1. 서비스 계정 서브 탭에서 추가 버튼을 클릭합니다.
  2. SA 정보를 입력합니다:
    • 이름: ServiceAccount 이름 (예: developer-sa)
    • 네임스페이스: 모달 진입 시 클러스터의 실제 네임스페이스가 SSH로 자동 조회되어 드롭다운에 표시됩니다.
    • 설명: SA 용도 설명
  3. 생성 버튼을 클릭하면 SSH를 통해 클러스터에 ServiceAccount가 즉시 생성됩니다.
서비스 계정 생성 동작

권한 관리 탭의 서비스 계정 서브 탭에는 createInCluster 플래그가 없으며, SA 생성 시 SSH로 클러스터에 바로 SA가 생성됩니다. KIOPS DB에만 등록한 뒤 나중에 동기화하는 흐름은 통합 계정 관리 탭(아래)에서 제공됩니다.

Step 3: 권한 템플릿 기반 RoleBinding 생성

권한 바인딩은 권한 템플릿 서브 탭으로 시작하는 것이 가장 빠릅니다.

  1. 권한 템플릿 서브 탭에서 사용할 템플릿(cluster-admin / admin / editor / viewer) 카드를 클릭합니다.
  2. 모달에서 바인딩할 ServiceAccount를 선택합니다.
  3. 적용할 네임스페이스 또는 클러스터 범위를 선택합니다.
  4. 생성 버튼을 클릭하면 RoleBinding(또는 ClusterRoleBinding)이 생성되고, 결과는 권한 바인딩 서브 탭에서 확인할 수 있습니다.

Step 4: 시스템 리소스 보호

  • 시스템 ServiceAccount (예: default, kube-*)와 시스템 네임스페이스 (kube-system, kube-public 등)는 삭제가 차단됩니다.
  • 삭제 시도 시 UI에서 경고가 표시되며 작업이 진행되지 않습니다.

통합 계정 관리 탭 (cluster admin 전용)

통합 계정 관리 탭은 cluster-admin 권한자만 접근할 수 있는 별도 화면으로, KIOPS DB가 관리하는 SA와 KIOPS 사용자 간의 할당을 다룹니다.

Step 1: 통합 계정 관리 탭 이동

  1. [런타임 환경] > Kubernetes 클러스터 선택 > 권한 관리 화면에서 통합 계정 관리 서브 탭을 클릭합니다.
  2. cluster-admin 권한이 없는 사용자에게는 이 서브 탭이 표시되지 않습니다.

통합 계정 관리 탭의 createInCluster 플래그: 이 탭의 SA 생성 모달에서는 createInCluster 플래그를 켜면 KIOPS DB 등록과 함께 클러스터에도 즉시 ServiceAccount가 생성되며, 끄면 KIOPS DB에만 등록되고 이후 동기화 작업으로 반영할 수 있습니다.

Step 2: 사용자에게 SA 할당

  1. 할당할 사용자를 검색합니다.
  2. 사용자 행에서 SA 할당 버튼을 클릭합니다.
  3. 할당할 ServiceAccount를 선택합니다.
  4. 만료일 (expiresAt)을 설정합니다. 만료일이 지나면 자동으로 할당이 해제됩니다.
  5. 할당 버튼을 클릭합니다.

Step 3: 클러스터 동기화

  1. 사용자 할당이 변경되면 클러스터 측 토큰/바인딩과 동기화가 필요합니다.
  2. 클러스터에 동기화 버튼을 클릭하면 KIOPS가 SSH로 클러스터에 변경 사항을 반영합니다.

SA 및 바인딩 관리 작업

ServiceAccount 수정

  1. SA 목록에서 대상 SA를 클릭합니다.
  2. 수정 버튼을 클릭하여 설명이나 바인딩을 수정합니다.
  3. 변경 후 저장 합니다.

네임스페이스 바인딩 제거

  1. SA 상세에서 바인딩 목록을 확인합니다.
  2. 제거할 바인딩 옆의 삭제 버튼을 클릭합니다.

사용자 SA 할당 해제

  1. 통합 계정 관리 탭에서 대상 사용자를 찾습니다.
  2. 할당 해제 버튼을 클릭합니다.
  3. 확인 대화상자에서 해제 를 클릭합니다.

ServiceAccount 삭제

  1. SA 목록에서 대상 SA를 선택하고 삭제 버튼을 클릭합니다.
  2. 이 SA가 클러스터에 동기화 된 상태인 경우 다음 두 가지 옵션이 표시됩니다:
    • DB에서만 삭제: KIOPS DB에서만 SA를 제거하고 클러스터의 ServiceAccount는 그대로 유지합니다.
    • 클러스터에서도 삭제: KIOPS DB와 클러스터의 ServiceAccount를 함께 제거합니다.
  3. 적절한 옵션을 선택하고 삭제 를 클릭합니다.
SA 삭제 영향

SA 삭제 시 해당 SA를 사용하는 사용자의 접근 권한이 즉시 제거됩니다.


내 K8s 권한 확인 (추정)

추정 표기: 아래 내용의 메뉴 위치는 KIOPS UI 버전에 따라 다를 수 있습니다.

사용자는 자신에게 할당된 K8s 권한을 확인할 수 있을 것으로 보입니다. 정확한 메뉴 위치는 운영팀에 문의하세요.

표시될 것으로 예상되는 정보:

  • 클러스터: 접근 가능한 K8s 클러스터 목록
  • ServiceAccount: 각 클러스터에서 할당받은 ServiceAccount 이름
  • 네임스페이스: 해당 SA를 통해 접근 가능한 네임스페이스 목록
  • 역할: 각 네임스페이스에서의 권한 수준

실제 사용 시나리오

시나리오 1: 개발팀 네임스페이스 접근 권한 부여

상황: 개발팀 3명에게 dev 네임스페이스 편집 권한 부여

단계:

  1. 권한 관리 탭의 서비스 계정 서브 탭에서 SA 생성: dev-team-sa (SSH로 클러스터에 즉시 생성됨)
  2. 권한 템플릿 서브 탭에서 editor 카드 클릭 → dev-team-sa 선택 → dev 네임스페이스 적용
  3. 통합 계정 관리 서브 탭에서 개발팀 사용자 3명에게 dev-team-sa 할당 (만료일 설정)

시나리오 2: 운영팀 다중 네임스페이스 관리

상황: 운영팀에게 prod, staging 네임스페이스 관리 권한 부여

단계:

  1. 권한 관리 탭의 서비스 계정 서브 탭에서 SA 생성: ops-team-sa (SSH로 클러스터에 즉시 생성됨)
  2. 권한 템플릿 서브 탭에서 admin 카드 클릭 → ops-team-sa 선택 → prod 적용
  3. 권한 템플릿 서브 탭에서 admin 카드 클릭 → ops-team-sa 선택 → staging 적용
  4. 통합 계정 관리 서브 탭에서 운영팀 사용자에게 ops-team-sa 할당

문제 해결

SA 동기화 실패

  • 권한 오류가 발생하는 경우: KIOPS가 사용하는 ServiceAccount에 RBAC 리소스 생성 권한이 부족합니다. 클러스터 관리자에게 ClusterRole 및 RoleBinding 생성 권한을 요청하세요.
  • 네임스페이스를 찾을 수 없는 경우: 바인딩하려는 네임스페이스가 클러스터에 존재하지 않습니다. 먼저 해당 네임스페이스를 생성한 후 다시 시도하세요.
  • 연결 실패가 발생하는 경우: 클러스터와의 네트워크 연결에 문제가 있습니다. 런타임 환경 페이지에서 클러스터 연결 상태를 확인하고, 필요시 재연결하세요.

사용자가 리소스 접근 불가

  • 원인 1: SA가 할당되지 않음 → 통합 계정 관리 탭에서 SA 할당 확인
  • 원인 2: 만료일이 지남 → 만료일 갱신 또는 재할당
  • 원인 3: 클러스터 미동기화 → 동기화 버튼 클릭

보안 권장사항

RBAC을 안전하게 운영하기 위한 보안 권장사항입니다.

보안은 지속적인 과정입니다

RBAC 설정은 한 번 하고 끝나는 것이 아닙니다. 정기적으로 검토하고 업데이트하세요.

  1. 최소 권한 원칙: 사용자에게 필요한 최소 권한만 부여합니다. "혹시 필요할지 몰라서" 더 많은 권한을 주지 마세요.

  2. 정기 검토: 분기별로 SA 할당과 바인딩을 검토합니다. 퇴사자나 프로젝트 종료로 불필요해진 권한을 정리하세요.

  3. 만료일 활용: 사용자 SA 할당 시 가능하면 만료일을 설정하여 자동으로 권한이 회수되도록 합니다.

  4. 감사 로그 확인: RBAC 변경사항을 정기적으로 확인합니다. 비정상적인 변경이 있는지 모니터링하세요.

  5. 네임스페이스 분리: dev, staging, prod 등 환경별로 네임스페이스를 분리하면 실수로 인한 영향을 최소화할 수 있습니다.


관련 가이드