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