Kubernetes in Action 13장 클러스터 노드와 네트워크의 보안

  1. 포드 내에서 호스트 노드의 네임스페이스 사용하기
    1. 포드에서 노드의 네트워크 네임스페이스 사용하기
    2. 호스트 네임스페이스를 사용하지 않고 호스트 포드에 바인딩
    3. 노드의 PID와 IPC 네임스페이스 사용
  2. 컨테이너 보안 컨텍스트 설정: 사용자 ID 지정, 루트 실행 방지…
    1. 특정 사용자로 컨테이너 실행: runAsUser
    2. 컨테이너가 루트로 실행되는 것을 방지하기: RunAsNonRoot: true
    3. 권한 모드에서 포드 실행: previleged: true
    4. 컨테이너에 개별 커널 기능 추가: capabilities:
    5. 컨테이너에서 기능 제거: drop:
    6. 프로세스가 컨테이너의 파일 시스템에 쓰는 것 방지: readOnlyRootFileSystem: true
    7. 컨테이너가 다른 사용자로 실행될 때 볼륨 공유: fsGroup, supplementalGroups:
  3. 포드의 보안 관련 기능 사용 제한하기
    1. PodSecurityPolicy 리소스의 소개: 포드가 호스트의 IPC, PID, 네트워크 네임스페이스 사용 제한…
    2. runAsUser, fsGroup, supplementalGroups 정책
      1. MustRunAs 규칙 사용
      2. 정책의 범위를 벗어나는 runAsUser 포드 배포
      3. 범위를 벗어난 사용자 ID로 설정된 컨테이너 이미지가 있는 포드를 배포
      4. runAsUser 필드에서 MustRunAsNonRoot 사용
    3. 허용, 기본 값, 허용하지 않음 설정: allowedCapabilities, defaultCapabilities, requredDropCapabilities
      1. 컨테이너에 추가할 수 있는 기능 지정
      2. 모든 컨테이너에 기능 추가
      3. 컨테이너에서 기능 사용 못하게 하기
    4. 포드가 사용할 수 있는 볼륨의 유형 제한: volumes
    5. 다른 사용자 및 그룹에 다른 PodSecurityPolicies 할당
      1. 특정 컨테이너를 배포할 수 있는 PodSecurityPolicy 생성하기
      2. 여러 사용자에게 다른 PodSecurityPolicy 할당하기 위해 RBAC 사용
      3. kubectl을 위한 추가 사용자 생성
      4. 다른 사용자로 포드 생성
  4. 포드 네트워크 분리
    1. 네임스페이스에서 네트워크 격리 사용: kind: NetworkPolicy
    2. 네임스페이스의 일부 포드만 서버 포드에 연결하도록 허용
    3. 쿠버네티스 네임스페이스 간 네트워크 격리
    4. CIDR 표기법을 사용한 격리: ingress.from.ipBlock.cidr:
    5. 포드 세트의 아웃바운드 트래픽 제한: egress.to.podSelector:
  5. 요약
    1. 포드는 자체 네임스페이스 대신 노드의 리눅스 네임스페이스를 사용할 수 있다.
    2. 컨테이너는 컨테이너 이미지에 정의된 것 대신에 사용자나 그룹으로 실행되도록 구성할 수 있다.
    3. 컨테이너는 특권 모드로 실행될 수 있기 때문에 포드에 노출되지 않은 노드의 장치에 액서스 가능하도록 허용할 수 있다.
    4. 컨테이너는 읽기 전용으로 실행돼 프로세스가 컨테이너의 파일 시스템에 쓰지 못하도록 한다(그리고 마운트된 볼륨에만 쓸 수 있음)
    5. 클러스터 수준의 PodSecurityPolicy 리소스를 생성해 사용자가 노드를 손상시킬 수 있는 포드를 만들지 못하게 할 수 있다.
    6. PodSecurityPolicy 리소스는 RBAC의 클러스터롤 및 클러스터롤바인딩을 사용해 특정 사용자와 연관 지을 수 있다.
    7. NetworkPolicy 리소스는 포드의 인바운드나 아웃바운드 트래픽을 제한하는 데 사용된다.

Loading

Published
Categorized as xacdo

By xacdo

Kyungwoo Hyun

Leave a comment

Your email address will not be published. Required fields are marked *