본문 바로가기
INFRA/DevOps

k8s 보안

by BTC_안민규 2022. 4. 29.

클라우드 네이티브 보안의 4C가 있다. 클라우드(Cloud), 클러스터(Cluster),. 컨테이너(Container), 코드(Code)이다

클라우드 네티이브 보안 모델의 각 계층은 다음의 가장 바깥쪽 계층을 기반으로 하낟. 코드 계층은 강력한 기본 보안 계층의 이점을 제고앟ㄴ다. 코드 수준에서 보안을 처리하여 기본 계층의 악한 보안 표준을 보호할 수 없다.

클라우드 공급자 보안

자신의 하드웨어 또는 다른 클라우드 공급자에서 쿠버네티스 클러스터를 실행 중인 경우, 보안 모범 사례는 설명서를 참고한다. 다음은 인기있는 클라우드 공급자의 보안 문서 중 일부에 대한 링크이다.

인프라스트럭처 보안

쿠버네티스 인프라의 대한 제안은 다음과 같다.

쿠버네티스 인프라에서 고려할 영역
추천
API 서버에 대한 네트워크 접근(컨트롤 플레인)
쿠버네티스 컨트롤 플레인에 대한 모든 접근은 인터넷에서 공개적으로 허용되지 않으며 클러스터 관리에 필요한 IP 주소 집합으로 제한된 네트워크 접근 제어 목록에 의해 제어된다.
노드에 대한 네트워크 접근(노드)
지정된 포트의 컨트롤 플레인에서 (네트워크 접근 제어 목록을 통한) 연결을 허용하고 NodePort와 LoadBalancer 유형의 쿠버네티스 서비스에 대한 연결을 허용하도록 노드를 구성해야 한다. 가능하면 이러한 노드가 공용 인터넷에 완전히 노출되어서는 안된다.
클라우드 공급자 API에 대한 쿠버네티스 접근
각 클라우드 공급자는 쿠버네티스 컨트롤 플레인 및 노드에 서로 다른 권한 집합을 부여해야 한다. 관리해야하는 리소스에 대해 최소 권한의 원칙을 따르는 클라우드 공급자의 접근 권한을 클러스터에 구성하는 것이 가장 좋다. Kops 설명서는 IAM 정책 및 역할에 대한 정보를 제공한다.
etcd에 대한 접근
etcd(쿠버네티스의 데이터 저장소)에 대한 접근은 컨트롤 플레인으로만 제한되어야 한다. 구성에 따라 TLS를 통해 etcd를 사용해야 한다. 자세한 내용은 etcd 문서에서 확인할 수 있다.
etcd 암호화
가능한 한 모든 드라이브를 암호화하는 것이 좋은 방법이지만, etcd는 전체 클러스터(시크릿 포함)의 상태를 유지하고 있기에 특히 디스크는 암호화되어 있어야 한다.

클러스터에 대한 보안은 두가지 영역이 있다.

설정 가능한 클러스터 컴포넌트의 보안

클러스터에서 실행되는 애플리케이션의 보안

컨테이너 보안은 어려우니 다음 기회에 알아보고

코드에 대한 모안은 가장 많은 제어를 할 수 있는 주요 공격영역 중 하나이다. 코드 보안은 쿠버네티스 보안 주제를 벗어나지만 애플리케이션 코드를 보호하기 위한 권장 사항은 다음과 같다.

코드에서 고려할 영역
추천
TLS를 통한 접근
코드가 TCP를 통해 통신해야 한다면, 미리 클라이언트와 TLS 핸드 셰이크를 수행한다. 몇 가지 경우를 제외하고, 전송 중인 모든 것을 암호화한다. 한 걸음 더 나아가, 서비스 간 네트워크 트래픽을 암호화하는 것이 좋다. 이것은 인증서를 가지고 있는 두 서비스의 양방향 검증을 mTLS를 통해 수행할 수 있다.
통신 포트 범위 제한
이 권장사항은 당연할 수도 있지만, 가능하면 통신이나 메트릭 수집에 꼭 필요한 서비스의 포트만 노출시켜야 한다.
타사 종속성 보안
애플리케이션의 타사 라이브러리를 정기적으로 스캔하여 현재 알려진 취약점이 없는지 확인하는 것이 좋다. 각 언어에는 이런 검사를 자동으로 수행하는 도구를 가지고 있다.
정적 코드 분석
대부분 언어에는 잠재적으로 안전하지 않은 코딩 방법에 대해 코드 스니펫을 분석할 수 있는 방법을 제공한다. 가능한 언제든지 일반적인 보안 오류에 대해 코드베이스를 스캔할 수 있는 자동화된 도구를 사용하여 검사를 한다. 도구는 다음에서 찾을 수 있다. https://owasp.org/www-community/Source_Code_Analysis_Tools
동적 탐지 공격
잘 알려진 공격 중 일부를 서비스에 테스트할 수 있는 자동화된 몇 가지 도구가 있다. 여기에는 SQL 인젝션, CSRF 및 XSS가 포함된다. 가장 널리 사용되는 동적 분석 도구는 OWASP Zed Attack 프록시이다.

 

 
 

 

'INFRA > DevOps' 카테고리의 다른 글

Kubectl 명령어 실습  (0) 2022.05.02
[AWS]Kubernetes  (0) 2022.05.01
CI/CD 파이프라인 개념과 구축 방법  (0) 2022.04.29
kubectl 명령어 구조  (0) 2022.04.27
DevOps의 핵심 CI/CD란?  (0) 2022.04.22

댓글