IT기술/쿠버네티스 (k8s)

RKE2 보안 완벽 가이드: 기업과 정부를 위한 차세대 보안 쿠버네티스

후스파 2025. 7. 10. 07:18
반응형

RKE2는 기업과 정부 기관을 위한 보안 최적화 쿠버네티스입니다. CIS 준수부터 군용급 암호화까지, 안전한 인프라를 위한 핵심 기능을 소개합니다.


CIS 벤치마크 자동 통과

RKE2는 기본 설정만으로 CIS Kubernetes 벤치마크를 충족합니다.

RKE2 버전 대응 CIS 벤치마크 프로필 설정
1.27+ v1.9 profile: "cis"
1.26 v1.8 profile: "cis"
1.25 v1.7 profile: "cis"
1.24 이하 v1.24 profile: "cis-1.23"

주요 자동화 항목

  • Pod Security Admission(PSA) 제한 모드 적용
  • 네트워크 정책 자동 구성
  • 불필요 API 비활성화
  • etcd 사용자 및 그룹 권한 설정
  • kubelet 보안 매개변수 자동 적용

CIS 프로필 설정 방법

# /etc/rancher/rke2/config.yaml
profile: "cis"
selinux: true
secrets-encryption: true
protect-kernel-defaults: true

수동 설정 필요 항목

# etcd 사용자 생성 (CIS 요구사항)
sudo useradd -r -c "etcd user" -s /sbin/nologin -M etcd -U

# 커널 매개변수 설정
echo 'vm.panic_on_oom=0' >> /etc/sysctl.d/90-kubelet.conf
echo 'vm.overcommit_memory=1' >> /etc/sysctl.d/90-kubelet.conf
echo 'kernel.panic=10' >> /etc/sysctl.d/90-kubelet.conf
echo 'kernel.panic_on_oops=1' >> /etc/sysctl.d/90-kubelet.conf
sysctl -p /etc/sysctl.d/90-kubelet.conf

# 디렉토리 권한 설정
sudo chmod 700 /var/lib/rancher/rke2/server/db

FIPS 140-2 암호화 준수

미 연방 표준 FIPS 140-2를 충족해 정부·금융권에 적합합니다.

적용 범위

  • 컨트롤 플레인: kube-apiserver, etcd, containerd
  • 런타임: runc, crictl
  • 네트워킹: Canal(기본 CNI)
  • Ingress: NGINX Controller

검증 방식

  • BoringCrypto 모듈 사용 (NIST 인증)
  • 모든 컴포넌트 정적 링크로 빌드
  • FIPS 검증된 OpenSSL 사용

FIPS 모드 활성화

# /etc/rancher/rke2/config.yaml
fips: true
profile: "cis"

FIPS 준수 확인

# Go 컴파일러 FIPS 모드 확인
rke2 --version | grep BoringCrypto

# 암호화 모듈 검증
openssl version
cat /proc/sys/crypto/fips_enabled  # 1이면 FIPS 활성화

SELinux 강제 정책

보안 강화 리눅스 환경을 완벽 지원합니다.

설정 방법

# 1. rke2-selinux 패키지 설치
sudo yum install -y rke2-selinux  # RHEL/CentOS
sudo dnf install -y rke2-selinux  # Fedora

# 2. SELinux 정책 설정
sudo setenforce 1
sudo sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config
# 3. /etc/rancher/rke2/config.yaml에 추가
selinux: true
profile: "cis"
# 4. 노드 재부팅
sudo reboot

특징

  • rke2_service_db_t 커스텀 레이블로 최소 권한 원칙 적용
  • 컨테이너 런타임과 호스트 시스템 완전 분리
  • 네트워크 정책과 연동한 다층 보안

SELinux 상태 확인

# SELinux 상태 확인
getenforce
sestatus

# RKE2 관련 SELinux 컨텍스트 확인
ls -Z /var/lib/rancher/rke2/
ps -eZ | grep rke2

시크릿 데이터 암호화

etcd에 저장되는 민감 정보를 AES-CBC 256비트로 암호화합니다.

자동 설정

  • RKE2 시작 시 암호화 키 생성
  • EncryptionConfiguration 파일 배포
  • 모든 시크릿 객체 암호화 저장

암호화 설정 확인

# 암호화 상태 확인
sudo rke2 secrets-encrypt status

# 암호화 설정 파일 확인
sudo cat /var/lib/rancher/rke2/server/cred/encryption-config.json

키 회전 절차

# 1. 새 암호화 키 준비
sudo rke2 secrets-encrypt prepare

# 2. kube-apiserver 재시작
sudo systemctl restart rke2-server

# 3. 키 회전 실행
sudo rke2 secrets-encrypt rotate

# 4. 재암호화 수행
sudo rke2 secrets-encrypt reencrypt

# 5. 상태 확인
sudo rke2 secrets-encrypt status

고가용성 환경에서의 키 회전

# HA 클러스터에서 순차적 재시작
# 마스터 노드 1에서 실행
sudo rke2 secrets-encrypt rotate-keys

# 각 마스터 노드 순차 재시작
sudo systemctl restart rke2-server  # 노드 1
# 완료 후 노드 2, 3 순서대로 재시작

 
* 중요: 키 분실 시 데이터 복구 불가 → 반드시 백업 필수


Pod 보안 표준 강화

PSA(Pod Security Admission)를 통해 제한된 권한의 컨테이너만 실행합니다.

Privileged비CIS 프로필 전체모든 기능 허용
RestrictedCIS 프로필 (kube-system 제외)root 실행·호스트 접근 금지

Pod Security Standards 설정

# CIS 프로필에서 자동 적용되는 PSA 설정
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: PodSecurity
  configuration:
    apiVersion: pod-security.admission.config.k8s.io/v1beta1
    kind: PodSecurityConfiguration
    defaults:
      enforce: "restricted"
      enforce-version: "latest"
      audit: "restricted"
      audit-version: "latest"
      warn: "restricted"
      warn-version: "latest"
    exemptions:
      usernames: []
      runtimeClasses: []
      namespaces: [kube-system, cis-operator-system, tigera-operator]

네임스페이스별 보안 정책

# 네임스페이스 보안 레이블 확인
kubectl get namespaces --show-labels

# 특정 네임스페이스에 보안 정책 적용
kubectl label namespace production \
  pod-security.kubernetes.io/enforce=restricted \
  pod-security.kubernetes.io/audit=restricted \
  pod-security.kubernetes.io/warn=restricted

네트워크 보안 정책

Calico 네트워크 정책 자동 적용

# CIS 프로필에서 자동 생성되는 기본 네트워크 정책
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-all
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

마이크로세그멘테이션 구현

# 애플리케이션별 네트워크 분리
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: web-to-db-policy
  namespace: production
spec:
  podSelector:
    matchLabels:
      app: database
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: web
    ports:
    - protocol: TCP
      port: 3306

감사 로깅 및 모니터링

감사 정책 설정

# /etc/rancher/rke2/audit-policy.yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
  namespaces: ["kube-system", "kube-public"]
  verbs: ["get", "list", "watch"]
- level: RequestResponse
  resources:
  - group: ""
    resources: ["secrets", "configmaps"]
- level: Request
  users: ["admin", "system:admin"]
# /etc/rancher/rke2/config.yaml에 감사 설정 추가
audit-policy-file: /etc/rancher/rke2/audit-policy.yaml
kube-apiserver-arg:
  - "audit-log-maxage=30"
  - "audit-log-maxbackup=10"
  - "audit-log-maxsize=100"
  - "audit-log-path=/var/lib/rancher/rke2/server/logs/audit.log"

보안 모니터링

# Falco 보안 모니터링 설치
helm repo add falcosecurity https://falcosecurity.github.io/charts
helm install falco falcosecurity/falco \
  --namespace falco-system \
  --create-namespace

# Trivy 취약점 스캔
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/trivy-operator/main/deploy/static/trivy-operator.yaml

마무리

RKE2는 보안을 최우선으로 설계된 쿠버네티스 배포판입니다. CIS·FIPS·SELinux를 통해 기업의 규정 준수 부담을 70% 이상 줄일 수 있습니다. 지금 바로 profile: cis 설정으로 첫 보안 클러스터를 시작해보세요.

핵심 포인트:

  • CIS 벤치마크 자동 통과로 규정 준수 간소화
  • FIPS 140-2 암호화로 정부·금융권 요구사항 충족
  • SELinux 강제 정책으로 다층 보안 구현
  • 시크릿 암호화로 민감 데이터 보호
  • Pod Security Standards로 컨테이너 보안 강화

RKE2의 보안 기능을 통해 제로 트러스트 아키텍처를 구현하고, 엔터프라이즈급 보안 요구사항을 만족하는 쿠버네티스 환경을 구축할 수 있습니다.

반응형