후니의 IT인프라 사전
CKS 문제 공유 본문
주의
아이폰이 연동성이 좋아서,,,, 맥이랑 아이폰 같이쓰시는분은
첨에 PSI 시험장 접속할때 아이폰 카메라랑 스피커가 우선적용되니 그냥 폰끄고 접속할것.
>> 최근 카메라와 음성을 맥 or 아이폰 중 선택할 수 있는 옵션 페이지가 생겨서 해당 이슈는 소멸됨.
참고로 node 접속해야하는 경우가 굉장히 많음.
대부분 거기 안에 config가 있고 apiserver yaml 등은 거기서 수정해야 하므로 !
1. network policy (쉬움)
- deny all 하는 문제가 있으며, development 네임스페이스의 모든 파드에 대해서 진행, egress
- 패캠에서는 label 기반으로 통제하는 것을 배웟는데 문제는 시험에는 label이 없음
- 그래서 메타데이터 상 name 밑에 namespace를 두고 생성 > 실제로 테스트 해보니 egress 잘먹혀서 이렇게 일단 고
2. securityContainer (쉬움)
- Dockerfile (2개 수정)
- 베이스 이미지 ubunta latest > ubuntu 22.04 문제에 나옴
- 문제는 USER ROOT를 사용하는데 문제 내에서 add user 하는 것을 잘 보고 해당 user로 변경
- Deployment yaml (2개 수정)
- annotation 등에 security policy가 적용되어있는데 rootReadonly나 priviliged 등 옵션을 바꿀것)
3. gVisor container runtime (쉬움)
- 해당 런타임클래스 생성하고 파드에 적용시키면 끝
- runsc 사용하기 때문에 런타임 클래스 생성 및 파드에 적용할 것
4. Audit 로그 (쉬움)
- audit 로그 설정에 맞게 maxage 등을 설정해주고, 반드시 volume mount 해줄 것
- audit policy랑 로그를 실제로 작성하는 volume 디렉토리에 대해서 제대로 선언할 것
5. CIS-benchmark (쉬움)
- 이미 벤치마크 된거에 대해서 수정하라고 함 (문제에 다 주어짐)
- kubelet > 반드시 수정한 내용을 적용하기 위해서 systemctl restart kubelet 할것
- api-server 수정
- 이번 시험은 kubelet과 etcd를 수정했음. 문제를 잘 읽어보면 alwayallow 말고 webhook을 사용하라고 했기 때문에 해당 부분 변경함. 인증/ 인가 둘다 변경할 것
6. secret 생성
- 기존에 생성된 시크릿에 대한 base64 -d 디코딩 해서 텍스트 파일로 저장
- 새로운 secret 생성
7. service account
- role 생성
- rolebinding 생성 (참고로 kubernetes 공식문서에 rolebinding cli 예시가 clusterrole로 나와있어서 주의요함, role로 바꿔적어야함)
- pod에 있는 sa를 알아서 찾은 다음 그 sa에 rolebinding 진행할 것
- 불필요한 sa 제거
8. network policy
- 생성하는거 나옴, default deny ingress 정책을 사용함.
9. trivy 취약점
- trivy 스캔후 high, critical 파드 제거 (순간 잘못지워서........... 그냥 똑같은 파드 하나 내가 임의로 만들어버림..)
10. sysdig / falco (또 풀지 못함)
- 난 sysdig 이용해서 사용했는데 container id를 crictl로 확인해서 분명 명령어 쳤으나 안되서 container name으로 변경
- proc.name / uid 혹은 username / timestamp를 주어지는데 값이 이상하긴 했음..
11. app armor
- parser로 일단 policy 등록하고, yaml 만들어서 등록함.
- aa-status로 잘되는지 확인
- apparmor_parser라는 거 명령어 항상 기억
- 프로파일 등록하고 반드시 확인한 다음, 파드에서 적용할 것. annotation 잘 찾아서 할 것.
12. Container Immutability
- 일단 readOnlyRootFilesystem랑 특정 uid 사용, allowPrivilegeEscalation 적용에 대해서 하라고 함.
- uid의 경우 pod에 적용하면되는데 나머지는 container에 직접적용해야 했음.
13. audit log
- 기존에 있는 audit로그를 적용하면서 etcd랑 apiserver 변경하는것같았음
14. etcd / api-server tls 적용
- 적용될 tls 내용을 주니까 그걸 사용하면될 것 같고
etcd의 경우는 -- cipher-suite 이런걸로 쓰는것 같길래 이걸로 옵션적용. etcd가 잘뜨는지 확인햇음.
- 찾아보니 etcd의 --cipher-suite 및 TLS minversion 같은 버전을 지정하는게 있어서 1.3이상을 사용하도록 변경하면된다.
15. ImageWebhookPolicy (못품)
- 말그대로 webhook policy 정책이랑 잘 적용해서 진행해야함. 그리고 결과값을 저장해야함.
16. role/ rolebinding
- 기존 role을 수정하고, 새로운 role을 생성하고 rolebinding 시키는 문제
추후 참고
https://velog.io/@comeonyo/CKS-%EC%8B%9C%ED%97%98-%EB%B2%94%EC%9C%84-%EC%A0%95%EB%A6%AC
https://github.com/ramanagali/Interview_Guide/blob/main/CKS_Preparation_Guide.md#container-runtime