Kubernetes in Action 12장 쿠버네티스 API 서버 보안

  1. 인증: 클라이언트 인증서, HTTP 헤더로 전달된 인증 토큰, 기본 HTTP 인증, 기타
    1. 사용자와 그룹
      1. 사용자: 실제 사람, 포드
      2. 그룹: system: unauthenticated, authenticated, serviceaccounts, serviceaccounts:<namespace>
    2. 서비스어카운트 소개
      1. 서비스어카운트 리소스: kubectl get sa
      2. 서비스어카운트가 인증과 어떻게 밀접하게 연관되어 있는지 이해하기: Role based AC(RBAC) 플러그인
    3. 서비스어카운트 생성
      1. kubectl create serviceaccount foo
      2. 서비스어카운트의 마운트할 수 있는 시크릿
      3. 서비스어카운트의 이미지가 시크릿을 가져오는 방식: imagePullSecrets
    4. 포드에 서비스어카운트 할당
      1. 사용자 지정 서비스어카운트를 사용하는 포드 생성: serviceAccountName: foo
      2. API 서버와 통신하기 위해 서비스어카운트의 사용자 토큰 사용: 앰버서더 컨테이너
  2. 롤 기반 접근 제어 클러스터 보안
    1. RBAC 인증 플러그인 소개: REST 메소드 -> 동사 
    2. RBAC 리소스 소개
      1. 연습을 위한 환경 설정: kubectl delete clusterrolebinding permissive-binding
      2. 네임스페이스 생성 및 포드 실행
      3. 포드에서 서비스 목록 나열
    3. 롤과 롤바인딩 사용
      1. 롤 생성
      2. 서비스어카운트에 롤을 바인딩
      3. 롤바인딩에서 다른 네임스페이스의 서비스어카운트 포함하기
    4. 클러스터롤과 클러스터롤바인딩 사용
      1. 클러스터 레벨 리소스에 접근 허용
      2. 비리소스 URL에 접근 허용
      3. 특정 네임스페이스의 리소스에 대한 접근 권한을 위한 클러스터롤 사용
      4. 롤, 클러스터롤, 롤바인딩, 클러스토롤바인딩 조합 요약
    5. 디폴트 클러스터롤과 클러스터롤바인딩 이해
      1. view 클러스터롤을 통한 리소스 읽기 전용 접근 허용
      2. edit 클러스터롤을 통한 리소스 수정 허용
      3. admin 클러스터롤을 통한 네임스페이스 전체 통제 권한 허용
      4. cluster-admin 클러스터롤을 통한 완전한 통제 허용
      5. 그 밖의 디폴트 클러스터롤: system:
    6. 인증 권한을 현명하게 부여하기
      1. 각 포드에 특정하나 서비스어카운트 생성
      2. 애플리케이션 취약점 예상하기
  3. 요약
    1. API 서버의 클라이언트에는 사용자와 포드에서 실행 중인 애플리케이션이 모두 포함된다.
    2. 포드의 애플리케이션은 서비스어카운트와 연관돼 있다.
    3. 사용자와 서비스어카운트는 모두 그룹과 관련돼 있다.
    4. 기본적으로 포드는 각 네임스페이스에 자동으로 생성되는 기본 서비스어카운트에서 실행된다.
    5. 수동으로 추가 서비스 계정을 만들고 포드와 연결할 수 있다.
    6. 특정 포드에 제한된 시크릿 목록만 마운트할 수 있도록 서비스어카운트를 구성할 수 있다.
    7. 서비스어카운트를 사용해 이미지 끌어오기 시크릿을 포드에 첨부할 수 있으므로 모든 포드에서 시크릿을 지정할 필요가 없다.
    8. 롤 및 클러스터롤은 어떤 리소스에서 수행할 수 있는 작업을 정의한다.
    9. 롤바인딩 및 클러스터롤바인딩은 사용자의 롤과 클러스터롤, 그룹 및 서비스어카운트에 바인딩한다.
    10. 각 클러스터에는 기본 클러스터롤 및 클러스터롤바인딩이 있다.

Loading

Published
Categorized as xacdo

By xacdo

Kyungwoo Hyun

Leave a comment

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