Kubernetes를 구축했습니까? 이제 다음 5가지 RBAC 도구를 사용하여 권한을 감사하십시오.
게시 됨: 2022-03-14Kubernetes RBAC는 Kubernetes 클러스터의 리소스에 대한 세분화된 액세스를 제공하는 데 사용되는 효율적인 역할 기반 권한 부여 방법입니다.
그러나 제대로 사용하지 않으면 쉽게 컴플라이언스 재앙을 초래할 수 있습니다. 그렇기 때문에 Kubernetes에서 위험한 권한을 감사하고 찾기 위해 RBAC 도구가 필요합니다.
이 기사에서는 Kubernetes RBAC가 무엇인지, 위험한 권한을 감사하고 위험한 권한을 감사하는 데 가장 도움이 되는 도구를 찾는 것이 왜 중요한지 설명합니다!
RBAC 란 무엇입니까?
RBAC(역할 기반 액세스 제어)는 각 액세스 권한 부여가 사용자에게 할당된 역할을 기반으로 하는 보안 메커니즘입니다. 따라서 이 시스템을 사용하면 Kubernetes 클러스터의 리소스(네임스페이스, 포드, 작업)에 대한 액세스를 애플리케이션 또는 사용자로 제한할 수 있습니다.
Kubernetes에서 RBAC 정책을 사용하여 시스템 사용자(사용자 또는 그룹)의 액세스 권한과 서비스 계정(서비스 계정)의 액세스 권한을 관리할 수 있습니다.
Webhook 또는 Node Authorization을 통해 ABAC(속성 기반 액세스 제어)와 같이 Kubernetes에서 사용자에게 권한을 부여하는 다른 방법이 있지만 안정 버전에서 가장 널리 사용되는 기본 권한 메커니즘은 RBAC입니다.
실질적으로 리소스와의 모든 상호 작용은 API 서버를 통해 이루어지며, 이는 결국 모든 것이 해당 서버(마스터 노드 또는 제어판의 필수 구성 요소)에 대한 HTTP 요청으로 제한된다는 것을 의미합니다.
Kubernetes에는 클러스터 리소스 액세스 권한을 설정하기 위해 결합할 수 있는 4개의 RBAC 관련 개체가 있습니다. 이는 Role, ClusterRole, RoleBinding 및 ClusterRoleBinding입니다. 모든 Kubernetes 개체와 마찬가지로 이러한 개체를 사용하려면 Kubernetes API를 사용해야 합니다.
Kubernetes의 역할
Kubernetes에는 Role 및 ClusterRole이라는 두 가지 유형의 역할이 있습니다. 둘 사이의 가장 큰 차이점은 Role은 구체적인 네임스페이스에 속하지만 ClusterRole은 클러스터에 대해 전역적이라는 것입니다. 따라서 ClusterRole의 경우 클러스터에 속하므로 이름이 고유해야 합니다. Role의 경우 두 개의 서로 다른 네임스페이스가 같은 이름의 Role을 가질 수 있습니다.
언급해야 할 또 다른 차이점은 Role은 동일한 네임스페이스 내에 있는 리소스에 대한 액세스를 허용하는 반면 ClusterRole은 모든 네임스페이스의 리소스에 대한 액세스 권한을 부여할 수 있을 뿐만 아니라 노드와 같은 동일한 네임스페이스의 리소스에 대한 액세스 권한도 부여할 수 있다는 것입니다. 다른 사람들 사이에서.
이제 역할 유형을 알았으므로 다음은 이러한 역할을 할당할 수 있는 사람을 아는 것입니다. 이 경우 사용자 계정, 서비스 계정 및 그룹이 있습니다. 사용자 계정은 특정 사용자에게 할당된 계정이고 서비스 계정은 프로세스에서 사용됩니다. 예를 들어 애플리케이션이 클러스터의 리소스에 프로그래밍 방식으로 액세스해야 한다고 가정해 보겠습니다. 이를 위해 서비스 계정을 사용합니다.
마지막으로 역할을 계정(사용자 또는 서비스) 또는 그룹에 바인딩하는 "접착제"가 필요합니다. 이를 위해 Kubernetes에는 RoleBinding 및 ClusterRoleBinding의 두 가지 리소스가 있습니다. RoleBinding은 동일한 네임스페이스에 있는 역할을 참조할 수 있는 반면 ClusterRoleBinding은 모든 네임스페이스의 모든 역할을 참조하고 전역적으로 권한을 할당할 수 있습니다.
참고로 권한은 "기본적으로 모든 것이 거부"되고 동일한 사용자에게 여러 역할을 할당할 수 있기 때문에 리소스에 대한 액세스만 허용합니다.
RBAC를 사용하기 위한 유일한 전제 조건은 " –authorization-mode=RBAC
" 옵션을 사용하여 클러스터에서 활성화되어야 한다는 것입니다. 다음 명령을 사용하여 확인할 수 있습니다.
kubectl api-versions
위험한 RBAC 권한은 무엇이며 이를 수정하는 방법은 무엇입니까?
포드 리소스에 대한 무단 액세스를 허용하거나 허용할 수 있는 모든 권한은 위험한 권한으로 간주됩니다. 예를 들어 사용자에게 편집 권한이 있는 경우 자신의 역할을 편집할 수 있고 다른 방법으로는 액세스가 허용되지 않는 리소스에 액세스할 수 있습니다. 이로 인해 규정 준수 문제가 발생할 수 있습니다. 마찬가지로, 이전 권한을 선택하지 않은 상태로 두면 일부 사용자는 더 이상 필요하지 않은 리소스에 액세스할 수 있습니다.

역할이 많을 때 이러한 위험한 권한을 수동으로 찾는 것은 어렵고 시간이 많이 걸립니다. 이 프로세스를 수행하기 위해 전체 클러스터를 스캔하여 위험한 권한을 찾는 데 도움이 되는 여러 RBAC 권한 감사 도구가 있습니다. 또한 RBAC의 효율성은 정기적인 권한 감사가 필요한 최신 RBAC 정책에 달려 있다는 점을 이해하는 것도 중요합니다.
다음은 다양한 언어 및 사용자 인터페이스를 기반으로 권한을 감사하는 최고의 RBAC 도구입니다.
쿠비스캔
KubiScan은 Kubernetes 클러스터에서 위험한 권한을 스캔하기 위한 Python 기반 RBAC 도구입니다. 이 도구는 마스터 노드 내에서 실행되어야 하며 터미널에서 직접 실행하여 위험한 권한 목록을 제공할 수 있습니다. Kubiscan은 위험한 역할, ClusterRoles, RoleBindings, ClusterBindings, 주제, 파드, 심지어 컨테이너를 찾는 데 사용할 수 있습니다.
크레인
앱비아의 Krane은 Ruby 기반 Kubernetes RBAC 정적 분석 및 시각화 도구입니다. 로컬에서 CLI로 실행하거나 CI/CD 파이프라인에서 실행할 수 있습니다. 또한 Kubernetes 컨테이너 내에서 독립 실행형 서비스로 작동할 수도 있습니다. Krane은 패싯 트리 및 그래프 네트워크 보기를 통해 RBAC 권한을 분석하는 기능을 제공합니다. 또한 Slack 통합을 통해 위험한 권한에 대한 경고를 제공합니다.

RBAC 도구
InsightCloudSec의 RBAC 도구는 Go로 구축된 독립 실행형 권한 감사 도구입니다. 위험한 RBAC 권한을 검색하고 강조 표시할 수 있을 뿐만 아니라 Auditgen 기능을 통해 권한 감사에서 RBAC 정책을 생성할 수도 있습니다. RBAC 도구는 RBAC 시각화 기능도 제공합니다.
페어윈드
Fairwinds Insight는 다양한 Kubernetes 보안 및 규정 준수 기능을 제공하는 독립 실행형 도구입니다. 정책 시행 기능을 통해 RBAC 권한을 감사하고 표준 및 사용자 정의 정책에 대해 스캔할 수 있습니다. Fairwinds는 주문형 데모를 제공합니다.

권한 관리자
Sighup의 Permission Manager는 Javascript 기반 Kubernetes 권한 관리 도구입니다. Kubernetes 클러스터 내에서 사용자 권한을 관리하는 쉽고 주도적인 방법을 제공합니다. Permission Manager는 또한 기본 RBAC 권한 감사를 수행할 수 있는 도구의 엔터프라이즈 버전을 제공합니다.
결론
Kubernetes RBAC는 Kubernetes 클러스터의 리소스에 대한 액세스를 관리하는 효율적인 방법입니다. 그러나 제대로 구현되지 않으면 보안 및 규정 준수 문제가 발생할 수 있습니다. 그러나 RBAC 감사 도구를 통해 권한을 지속적으로 감사하면 이를 방지할 수 있습니다.
Kubernetes 모범 사례에 관심이 있을 수도 있습니다.