후니의 IT인프라 사전

CKS 문제 공유 본문

카테고리 없음

CKS 문제 공유

james_janghun 2023. 12. 1. 02:44

주의

아이폰이 연동성이 좋아서,,,, 맥이랑 아이폰 같이쓰시는분은

첨에 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://jonathan18186.medium.com/certified-kubernetes-security-specialist-cks-preparation-part-5-microservice-vulnerabilities-b5284a46d6bc

 

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