정보보호 (Security)

OWASP Kubernetes 보안 위험요소 Top 10 소개 및 대응 가이드

날으는물고기 2024. 10. 7. 00:52

OWASP(오픈 웹 애플리케이션 보안 프로젝트)는 소프트웨어 보안 개선을 위해 활동하는 비영리 단체로, 웹 애플리케이션 보안에 중점을 두고 있지만, 현대 시스템 설계의 특성상 범위를 확장해 왔습니다. Kubernetes 환경에서 가장 일반적인 공격 벡터를 식별하기 위해 OWASP는 OWASP Kubernetes Top 10을 작성했습니다. 이는 Kubernetes 환경에서의 보안 태세를 확인하고 모든 가능한 위협을 고려하는 데 도움이 됩니다.

 

OWASP Kubernetes Top 10 프로젝트는 보안 실무자와 엔지니어에게 유용한 인식 및 지침 리소스를 제공하며, 사건 대응 엔지니어가 Kubernetes 위협을 이해하는 데 도움이 됩니다. 또한, MITRE ATT&CK 기술을 통해 공격자의 기술을 등록하고 Blue Team이 환경을 보호하는 가장 좋은 방법을 이해하는 데 도움이 됩니다. Kubernetes 위협 모델을 확인하여 모든 공격 표면과 주요 공격 벡터를 이해할 수도 있습니다.

 

OWASP Kubernetes Top 10은 가능한 모든 위험을 일반적인 발생 가능성 또는 확률에 따라 순서를 매깁니다. 이 연구에서는 일부 항목을 약간 수정하여 같은 범주 내에서 그룹화하고, 구성을 감사하고 적절한 보안 태세를 유지하기 위한 도구나 기술을 추천합니다.

OWASP Kubernetes Top 10 목록

OWASP Kubernetes Top 10 목록은 세 가지 주요 범주로 나눌 수 있습니다.

  1. 오류 구성 (Misconfigurations)
  2. 가시성 부족 (Lack of Visibility)
  3. 취약점 관리 (Vulnerability Management)

각 범주 및 해당 항목을 살펴보겠습니다.

오류 구성 (Misconfigurations)

  1. K01:2022 불안전한 작업 구성 (Insecure Workload Configurations)
    • 안전한 이미지를 사용하고 최신 운영 체제를 실행하며, 인프라 구성을 지속적으로 감사하고 수정해야 합니다.
    • 경량 이미지(예: Alpine Linux)를 사용하여 구성 요소 수를 줄이고, 불필요한 패키지나 라이브러리를 최소화하는 것이 좋습니다.
  2. K09:2022 잘못된 클러스터 구성 요소 (Misconfigured Cluster Components)
    • Kubelet의 익명 인증을 비활성화하는 등 클러스터 구성 요소의 잘못된 구성을 방지해야 합니다.
    • Kube-bench와 같은 도구를 사용하여 클러스터 구성 요소를 자동으로 감사하고 수정할 수 있습니다.
  3. K03:2022 과도한 권한의 RBAC 구성 (Overly Permissive RBAC Configurations)
    • 역할 기반 접근 제어(RBAC)를 사용하여 각 사용자에게 필요한 최소한의 권한만 부여해야 합니다.
    • RBAC 감사 도구를 사용하여 권한 구성을 정기적으로 점검합니다.
  4. K07:2022 네트워크 분할 제어 누락 (Missing Network Segmentation Controls)
    • Kubernetes는 기본적으로 "평면 네트워크" 설계를 사용하여 모든 워크로드 간에 자유로운 통신을 허용합니다.
    • 네트워크 분할을 구현하기 위해 서비스 메시(Istio) 또는 CNI(Project Calico)와 같은 솔루션을 사용할 수 있습니다.

가시성 부족 (Lack of Visibility)

  1. K05:2022 불충분한 로깅 및 모니터링 (Inadequate Logging and Monitoring)
    • Kubernetes는 기본적으로 감사 로깅 기능을 제공합니다. Prometheus, Grafana 및 Falco와 같은 도구를 사용하여 로그를 중앙 집중화하고 모니터링해야 합니다.
  2. K04:2022 중앙 집중화된 정책 시행 부족 (Lack of Centralized Policy Enforcement)
    • 중앙 집중식 정책 시행 도구(Open Policy Agent)를 사용하여 정책을 일관되게 관리해야 합니다.
  3. K08:2022 시크릿 관리 실패 (Secrets Management Failures)
    • Kubernetes 시크릿을 안전하게 관리하기 위해 데이터 암호화, 접근 제어 및 로깅을 구현해야 합니다.

취약점 관리 (Vulnerability Management)

  1. K02:2022 공급망 취약점 (Supply Chain Vulnerabilities)
    • 이미지 무결성 및 구성 요소 취약점을 관리하기 위해 CI/CD 파이프라인에서 이미지 스캔을 수행해야 합니다.
  2. K06:2022 인증 메커니즘 실패 (Broken Authentication Mechanisms)
    • 모든 Kubernetes 구성 요소에 대해 강력한 인증 메커니즘을 구현하고 다중 인증(MFA)을 사용해야 합니다.
  3. K10:2022 오래되고 취약한 Kubernetes 구성 요소 (Outdated and Vulnerable Kubernetes Components)
    • 최신 CVE 데이터베이스를 모니터링하고 적시에 패치를 적용해야 합니다.

OWASP Kubernetes Top 10은 보안 실무자, 시스템 관리자 및 소프트웨어 개발자가 Kubernetes 생태계의 위험을 우선적으로 다룰 수 있도록 돕는 것을 목표로 합니다. 이 목록은 다양한 조직에서 수집된 데이터를 기반으로 한 일반적인 위험의 우선 순위 목록입니다. 여러 오픈 소스 프로젝트를 활용하여 OWASP Kubernetes Top 10에서 언급한 보안 격차를 해결할 수 있습니다.

 

최적의 보안 태세를 유지하기 위해서는 지속적인 감사와 모니터링이 필요하며, 권장 도구와 기술을 활용하여 보안을 강화해야 합니다. Kubernetes 환경에서 OWASP Kubernetes Top 10에서 언급된 취약점과 위험성을 관리하기 위해 각 유형별로 대응할 수 있는 방법을 설명하겠습니다.

1. 불안전한 작업 구성 (Insecure Workload Configurations)

  1. 안전한 이미지 사용
    • 검증된 이미지 소스를 사용하고, 신뢰할 수 있는 레지스트리에서 이미지를 가져옵니다.
    • 가능한 경량 이미지를 사용하여 불필요한 구성 요소를 최소화합니다. 예: Alpine Linux.
    • 이미지 스캐닝 도구(예: Trivy, Clair)를 사용하여 이미지를 주기적으로 스캔합니다.
  2. 패치 및 업데이트
    • 운영 체제와 애플리케이션을 최신 패치 상태로 유지합니다.
    • 자동 업데이트 설정을 사용하여 최신 보안 패치를 적용합니다.
  3. 구성 감사
    • Kubernetes CIS 벤치마크를 사용하여 클러스터 구성을 주기적으로 감사합니다.
    • kube-bench와 같은 도구를 사용하여 구성 파일을 스캔하고 CIS 벤치마크와 비교합니다.
  4. 루트 컨테이너 제한
    • 컨테이너가 루트 사용자로 실행되지 않도록 구성합니다.
    • Kubernetes 정책을 통해 루트 사용자로 실행되는 컨테이너를 차단합니다.
    • Open Policy Agent (OPA)를 사용하여 정책을 정의하고 시행합니다.

2. 잘못된 클러스터 구성 요소 (Misconfigured Cluster Components)

  1. Kubelet 익명 인증 비활성화
    • --anonymous-auth=false 플래그를 사용하여 Kubelet의 익명 인증을 비활성화합니다.
  2. 클러스터 구성 요소 감사
    • kube-bench와 같은 도구를 사용하여 Kubelet, API 서버, etcd 등의 클러스터 구성 요소를 감사합니다.
    • 구성 파일에서 잘못된 설정을 탐지하고 수정합니다.
  3. TLS 암호화
    • Kubernetes API 서버와 클러스터 구성 요소 간의 통신을 TLS로 암호화합니다.
    • TLS 인증서와 개인 키를 설정하여 보안을 강화합니다.
  4. 정기적인 백업
    • etcd 데이터를 정기적으로 백업하여 데이터 손실을 방지합니다.
    • etcdctl snapshot save 명령어를 사용하여 스냅샷을 생성합니다.

3. 과도한 권한의 RBAC 구성 (Overly Permissive RBAC Configurations)

  1. 최소 권한 원칙 적용
    • 사용자와 서비스 계정에 필요한 최소한의 권한만 부여합니다.
    • 과도한 권한을 부여하지 않도록 RBAC 정책을 주기적으로 점검합니다.
  2. RBAC 감사 도구 사용
    • CyberArk의 RBAC Audit 도구를 사용하여 RBAC 정책을 점검하고 과도한 권한을 탐지합니다.
    • Kubiscan, Krane와 같은 도구를 사용하여 RBAC 구성의 보안 위험을 식별합니다.
  3. 권한 롤 및 바인딩 관리
    • 역할(Role)과 클러스터 역할(ClusterRole)을 정의하고, RoleBinding과 ClusterRoleBinding을 통해 권한을 부여합니다.
    • RBAC 정책을 주기적으로 리뷰하고, 필요 없는 권한을 제거합니다.

4. 네트워크 분할 제어 누락 (Missing Network Segmentation Controls)

  1. 네트워크 정책 적용
    • Kubernetes 네트워크 정책(NetworkPolicy)을 사용하여 포드 간의 통신을 제어합니다.
    • NetworkPolicy 리소스를 정의하여 허용된 트래픽을 제한합니다.
  2. 서비스 메시 도입
    • Istio와 같은 서비스 메시를 사용하여 마이크로서비스 간의 트래픽을 제어합니다.
    • mTLS를 사용하여 서비스 간의 통신을 암호화하고, 정책을 통해 트래픽을 제어합니다.
  3. CNI 플러그인 사용
    • Project Calico, Cilium과 같은 CNI 플러그인을 사용하여 네트워크 레벨에서의 정책을 적용합니다.
    • L3/L4 계층에서의 트래픽 제어를 통해 네트워크 분할을 구현합니다.

5. 불충분한 로깅 및 모니터링 (Inadequate Logging and Monitoring)

  1. 로깅 및 모니터링 도구 사용
    • Prometheus, Grafana와 같은 도구를 사용하여 클러스터와 애플리케이션의 상태를 모니터링합니다.
    • Falco를 사용하여 런타임 위협 탐지를 수행합니다.
  2. 감사 로그 활성화
    • Kubernetes 감사 로깅(Audit Logging)을 활성화하여 모든 API 요청을 기록합니다.
    • 로그를 중앙 집중화된 시스템에 저장하고, 정기적으로 리뷰합니다.
  3. 중앙 집중화된 로깅 시스템 구축
    • Fluentd, Logstash와 같은 도구를 사용하여 모든 로그를 중앙 집중화된 위치로 전송합니다.
    • 로그를 Elasticsearch와 같은 SIEM 솔루션에 저장하여 분석합니다.

6. 중앙 집중화된 정책 시행 부족 (Lack of Centralized Policy Enforcement)

  1. OPA 사용
    • Open Policy Agent를 사용하여 중앙 집중화된 정책을 정의하고 시행합니다.
    • Kube-mgmt 도구를 사용하여 OPA 정책과 데이터를 Kubernetes ConfigMaps에서 자동으로 로드합니다.
  2. 어드미션 컨트롤러 사용
    • Kubernetes 어드미션 컨트롤러를 사용하여 API 요청을 가로채고 정책을 적용합니다.
    • ImagePolicyWebhook과 같은 어드미션 컨트롤러를 구성하여 이미지 정책을 적용합니다.

7. 시크릿 관리 실패 (Secrets Management Failures)

  1. 시크릿 암호화
    • Kubernetes 시크릿을 etcd에 저장할 때 암호화합니다.
    • EncryptionConfiguration 리소스를 사용하여 시크릿을 암호화합니다.
  2. 접근 제어
    • 시크릿에 대한 접근 권한을 최소한으로 제한합니다.
    • RBAC를 사용하여 시크릿 접근 권한을 관리하고, 불필요한 접근 권한을 제거합니다.
  3. 로깅 및 감사
    • 시크릿 접근 로그를 기록하고, 주기적으로 리뷰합니다.
    • Falco를 사용하여 시크릿 접근 이벤트를 모니터링하고 경고를 생성합니다.

8. 공급망 취약점 (Supply Chain Vulnerabilities)

  1. 이미지 스캐닝
    • 이미지 레지스트리에 이미지를 푸시하기 전에 이미지 스캔을 수행합니다.
    • CI/CD 파이프라인에서 이미지 스캔을 자동화합니다.
  2. 서명 및 검증
    • 컨테이너 이미지를 서명하고 검증하여 무결성을 보장합니다.
    • Notary와 같은 도구를 사용하여 이미지를 서명하고, 레지스트리에서 검증합니다.
  3. 의존성 관리
    • 클러스터 내의 모든 리소스와 의존성을 추적하고 관리합니다.
    • KubeView와 같은 도구를 사용하여 의존성을 시각화하고 감사합니다.

9. 인증 메커니즘 실패 (Broken Authentication Mechanisms)

  1. 다중 인증(MFA) 사용
    • 클러스터와 클라우드 환경에 대한 접근에 다중 인증을 적용합니다.
    • AWS, GCP, Azure와 같은 클라우드 제공업체의 IAM을 사용하여 MFA를 구성합니다.
  2. 강력한 인증 메커니즘 구현
    • 클러스터와 API 서버에 강력한 인증 메커니즘을 사용합니다.
    • Service Account 토큰 및 사용자 인증서의 보안을 강화합니다.
  3. 비밀번호 및 시크릿 관리
    • 비밀번호와 시크릿을 안전하게 관리하고, 유출되지 않도록 주의합니다.
    • 비밀번호 관리 도구를 사용하여 비밀번호를 안전하게 저장하고, 주기적으로 변경합니다.

10. 오래되고 취약한 Kubernetes 구성 요소 (Outdated and Vulnerable Kubernetes Components)

  1. 패치 관리
    • Kubernetes와 모든 구성 요소를 최신 버전으로 유지합니다.
    • CVE 데이터베이스를 모니터링하고, 취약점이 발견되면 즉시 패치를 적용합니다.
  2. 자동화된 취약점 스캔
    • kubescape, kubeclarity와 같은 도구를 사용하여 클러스터를 주기적으로 스캔합니다.
    • 취약점이 발견되면 자동으로 알림을 받고, 필요한 조치를 취합니다.
  3. 정기적인 업데이트
    • Kubernetes 구성 요소와 종속 라이브러리를 정기적으로 업데이트합니다.
    • 클러스터를 유지 보수 모드로 전환하고, 업데이트를 적용한 후 정상 운영을 재개합니다.

위의 대응 방법을 통해 Kubernetes 환경에서의 보안 취약점을 효과적으로 관리할 수 있습니다. 이러한 보안 대책을 지속적으로 적용하고 모니터링하여 안전한 Kubernetes 클러스터를 유지하세요. Kubernetes 환경에서 보안 취약점을 관리하기 위한 예시 명령어와 옵션들을 함께 제시합니다.

1. 불안전한 작업 구성 (Insecure Workload Configurations)

  1. 경량 이미지 사용
    • 경량 이미지 Alpine을 사용한 예시입니다.
      apiVersion: v1
      kind: Pod
      metadata:
        name: alpine
      spec:
        containers:
        - name: alpine
          image: alpine:3.12
          command: ["sh", "-c", "echo Hello Kubernetes! && sleep 3600"]
  2. 루트 컨테이너 제한
    • 컨테이너를 비루트 사용자로 실행하도록 설정한 예시입니다.
      apiVersion: v1
      kind: Pod
      metadata:
        name: non-root
      spec:
        containers:
        - name: non-root
          image: nginx
          securityContext:
            runAsUser: 1000
  3. kube-bench 실행
    • CIS Kubernetes 벤치마크를 기준으로 노드 설정을 검사하는 명령어입니다.
      kube-bench run --targets node --check 5.2.6

2. 잘못된 클러스터 구성 요소 (Misconfigured Cluster Components)

  1. Kubelet 익명 인증 비활성화
    • Kubelet에서 익명 인증을 비활성화하는 명령어입니다.
      kubelet --anonymous-auth=false
  2. API 서버 TLS 설정
    • Kubernetes API 서버에서 TLS 인증서를 설정하는 예시입니다.
      kube-apiserver --tls-cert-file=/path/to/tls.crt --tls-private-key-file=/path/to/tls.key
  3. etcd 백업
    • etcd 데이터베이스의 스냅샷을 생성하는 명령어입니다.
      ETCDCTL_API=3 etcdctl --endpoints $ENDPOINT snapshot save snapshotdb

3. 과도한 권한의 RBAC 구성 (Overly Permissive RBAC Configurations)

  1. RBAC 역할 정의
    • 특정 네임스페이스에서 포드에 대한 읽기 권한만 부여하는 역할을 정의한 예시입니다.
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        namespace: default
        name: pod-reader
      rules:
      - apiGroups: [""]
        resources: ["pods"]
        verbs: ["get", "watch", "list"]
  2. RoleBinding 생성
    • 사용자인 'john'에게 'pod-reader' 역할을 바인딩하는 예시입니다.
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: read-pods
        namespace: default
      subjects:
      - kind: User
        name: john
        apiGroup: rbac.authorization.k8s.io
      roleRef:
        kind: Role
        name: pod-reader
        apiGroup: rbac.authorization.k8s.io
  3. Kubiscan 사용
    • Kubiscan을 사용하여 Kubernetes 클러스터의 RBAC 구성을 스캔하는 명령어입니다.
      python3 KubiScan.py -c <kubeconfig-path>

4. 네트워크 분할 제어 누락 (Missing Network Segmentation Controls)

  1. 네트워크 정책 정의
    • 모든 인그레스 및 이그레스 트래픽을 차단하는 네트워크 정책 예시입니다.
      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: deny-all
        namespace: default
      spec:
        podSelector: {}
        policyTypes:
        - Ingress
        - Egress
        ingress: []
        egress: []
  2. Istio 인증 정책 정의
    • 특정 네임스페이스에서 POST 요청만 허용하는 Istio 인증 정책 예시입니다.
      apiVersion: security.istio.io/v1beta1
      kind: AuthorizationPolicy
      metadata:
        name: allow-post
        namespace: default
      spec:
        action: ALLOW
        rules:
        - from:
          - source:
              namespaces: ["trusted"]
          to:
          - operation:
              methods: ["POST"]

5. 불충분한 로깅 및 모니터링 (Inadequate Logging and Monitoring)

  1. Prometheus 설치
    • Prometheus를 Kubernetes 클러스터에 설치하는 명령어입니다.
      kubectl apply -f https://github.com/prometheus-operator/prometheus-operator/blob/master/bundle.yaml
  2. Falco 설치
    • Falco를 DaemonSet으로 설치하는 명령어입니다.
      kubectl create -f https://raw.githubusercontent.com/falcosecurity/falco/master/examples/k8s/falco-daemonset.yaml

6. 중앙 집중화된 정책 시행 부족 (Lack of Centralized Policy Enforcement)

  1. OPA Gatekeeper 설치
    • OPA Gatekeeper를 Kubernetes 클러스터에 설치하는 명령어입니다.
      kubectl apply -f https://raw.githubusercontent.com/open-policy-agent/gatekeeper/master/deploy/gatekeeper.yaml
  2. 정책 정의
    • 네임스페이스에 'gatekeeper' 레이블이 있어야 하는 정책을 정의하는 예시입니다.
      apiVersion: constraints.gatekeeper.sh/v1beta1
      kind: K8sRequiredLabels
      metadata:
        name: ns-must-have-gk
      spec:
        match:
          kinds:
          - apiGroups: [""]
            kinds: ["Namespace"]
        parameters:
          labels: ["gatekeeper"]

7. 시크릿 관리 실패 (Secrets Management Failures)

  1. 시크릿 암호화 설정
    • 시크릿을 암호화하기 위한 EncryptionConfiguration 예시입니다.
      apiVersion: apiserver.config.k8s.io/v1
      kind: EncryptionConfiguration
      resources:
      - resources:
        - secrets
        providers:
        - aescbc:
            keys:
            - name: key1
              secret: <base64-encoded-secret>
        - identity: {}
  2. RBAC로 시크릿 접근 제한
    • 특정 네임스페이스에서 시크릿 읽기 권한만 부여하는 역할을 정의한 예시입니다.
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        namespace: default
        name: secret-reader
      rules:
      - apiGroups: [""]
        resources: ["secrets"]
        verbs: ["get"]

8. 공급망 취약점 (Supply Chain Vulnerabilities)

  1. 이미지 스캔
    • Trivy를 사용하여 Docker 이미지를 스캔하는 명령어입니다.
      trivy image nginx:latest
  2. 이미지 서명 및 검증
    • Cosign을 사용하여 Docker 이미지를 서명하고 검증하는 예시입니다.
      cosign sign --key <private-key> nginx:latest
      cosign verify --key <public-key> nginx:latest

9. 인증 메커니즘 실패 (Broken Authentication Mechanisms)

  1. MFA 적용
    • AWS CLI를 사용하여 IAM 사용자에 MFA를 적용하는 예시입니다.
      aws iam create-virtual-mfa-device --virtual-mfa-device-name my-mfa-device --outfile QRCode.png --bootstrap-method QRCodePNG
      aws iam enable-mfa-device --user-name MyUser --serial-number arn:aws:iam::123456789012:mfa/my-mfa-device --authentication-code1 123456 --authentication-code2 456789
  2. 강력한 인증 구성
    • 시크릿을 사용하여 애플리케이션 인증 정보를 안전하게 저장하는 예시입니다.
      apiVersion: v1
      kind: Secret
      metadata:
        name: my-secret
      type: Opaque
      data:
        username: <base64-encoded-username>
        password: <base64-encoded-password>

10. 오래되고 취약한 Kubernetes 구성 요소 (Outdated and Vulnerable Kubernetes Components)

  1. Kubernetes 업그레이드
    • Kubernetes 클러스터를 최신 버전으로 업그레이드하는 명령어입니다.
      kubectl version --short
      kubeadm upgrade plan
      kubeadm upgrade apply v1.21.0
  2. 취약점 스캔
    • Kubescape를 사용하여 Kubernetes 클러스터의 취약점을 스캔하는 명령어입니다.
      kubescape scan framework nsa --submit

이와 같은 예시 명령어와 옵션들을 사용하여 Kubernetes 환경에서의 보안 취약점을 효과적으로 관리할 수 있습니다. 최신 Kubernetes 보안 관리에 필요한 추가 사항들을 몇 가지 최신 정보를 기준으로 설명드리겠습니다. Kubernetes 환경은 빠르게 변화하고 있으며, 보안 또한 이에 발맞춰 지속적으로 개선되고 있습니다. 다음은 최신 보안 관리 사항과 관련된 내용입니다.

1. Pod Security Standards (PSS)

Pod Security Standards 설정

  • PodSecurityPolicy가 Kubernetes 1.21 버전 이후로 deprecated 되어 Pod Security Standards로 대체되었습니다.
  • Pod Security Standards는 Kubernetes 1.23 버전부터 사용 가능합니다.
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restricted
spec:
  privileged: false
  allowPrivilegeEscalation: false
  requiredDropCapabilities:
    - ALL
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  hostNetwork: false
  hostIPC: false
  hostPID: false
  runAsUser:
    rule: 'MustRunAsNonRoot'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535

2. Runtime Security with eBPF

eBPF를 사용한 런타임 보안

  • eBPF(extended Berkeley Packet Filter)는 런타임 시커닝을 위한 강력한 도구로, 시스템 콜을 모니터링하고 보안 이벤트를 실시간으로 탐지할 수 있습니다.
# Cilium 설치
kubectl create -f https://raw.githubusercontent.com/cilium/cilium/v1.10/install/kubernetes/quick-install.yaml
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: rule
spec:
  endpointSelector:
    matchLabels:
      app: my-app
  egress:
  - toPorts:
    - ports:
      - port: "80"
        protocol: TCP

3. Zero Trust Network with Istio

Istio를 사용한 Zero Trust Network 설정

  • Zero Trust Network를 구현하여 마이크로서비스 간의 통신을 강화하고 보안성을 높입니다.
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT

4. Secret Management with External Secrets Operator

외부 시크릿 관리

  • 외부 시크릿 관리자를 사용하여 시크릿을 안전하게 관리합니다.
# External Secrets Operator 설치
kubectl apply -f https://raw.githubusercontent.com/external-secrets/kubernetes-external-secrets/master/deploy/crds.yaml
kubectl apply -f https://raw.githubusercontent.com/external-secrets/kubernetes-external-secrets/master/deploy/deploy.yaml
apiVersion: kubernetes-client.io/v1
kind: ExternalSecret
metadata:
  name: my-secret
spec:
  backendType: secretsManager
  data:
    - key: my-key
      name: my-secret-key

5. Continuous Compliance Scanning

지속적인 컴플라이언스 스캐닝

  • 클러스터의 지속적인 컴플라이언스를 위해 자동화된 스캐닝 도구를 사용합니다.
# Kubescape 설치 및 스캔
kubescape scan framework nsa --submit --enable-host-scan

6. Supply Chain Security with Sigstore

Sigstore를 사용한 서명 및 검증

  • Sigstore를 사용하여 서명된 컨테이너 이미지를 배포하고, 서명된 이미지를 검증합니다.
# Cosign 설치
curl -LO https://github.com/sigstore/cosign/releases/download/v1.4.1/cosign-linux-amd64
chmod +x cosign-linux-amd64
mv cosign-linux-amd64 /usr/local/bin/cosign
# 이미지 서명 및 검증
cosign sign --key <private-key> nginx:latest
cosign verify --key <public-key> nginx:latest

위의 최신 보안 관리 사항들을 통해 Kubernetes 클러스터의 보안을 강화할 수 있습니다. 최신 정보를 반영한 도구와 방법을 사용하여 안전한 Kubernetes 환경을 유지하시기 바랍니다.

728x90