author: shhon categories: kubernetes Jun 7, 20
KubeCon Europe 2019에 참석했습니다.
DAY 0


참석 동기 - 백문이 불여일견
2019년 상반기에 두다지는 **"2년 내에 쿠버네티스 하면 사람들 머리속에 떠오르는 회사가 되자"**라는 비전을 잡았습니다. 쿠버네티스를 회사 내부 프로젝트에서 (추후에 공개할 계획입니다.) 써보니, 너무 좋고 앞으로 패러다임이 이렇게 변할 것이라는 믿음이 강하게 듭니다. 아직은 작은 회사라 관점에 따라서 상당히 큰 목표일 수 있지만 그 과정에서 경험하고 성장하게 될 것을 생각해보면 좋은 목표라고 믿고 있습니다.
특히 이미 리눅스 다음으로 활성화 되어 있는 오픈소스이기 때문에 향후 개발의 패러다임이 바뀔 것이라고 판단했고, 향후 10년 뒤에도 쓰일 기술이라고 믿고 있습니다. 인터넷으로 만나고 코드로 경험해본 쿠버네티스는 이렇게 좋은데 공식행사에서는 어떤 이야기를 하고 어떤 로드맵을 그리고 있는지 궁금했습니다.
참석전 목표
참석하기 전에 아래와 같은 궁금증에 대한 답을 얻고 싶었습니다.
- 회사차원에서 비전을 잡을만한 대상인가?
- 로드맵
- 모범사례(best practice)
- on prem vs managed kube
특히 엔터프라이즈에 적용할 때 보안 등의 이슈는 없는지, 어떻게 해결하고 있는지가 궁금했습니다. RBAC은 어떻게들 적용하고 있는지, 보안은 어느정도 수준으로 적용하고 있는지도 궁금했고, on prem으로 쓰려는 시도는 얼마나 하고 있는지, 전부 GKE등의 managed kubernetes를 쓰는지도 궁금했습니다.
지금 돌이켜서 생각해보면 막상 회사 비전을 "쿠버네티스로 유명한 회사"로 잡아놓은 것이 제대로 잡은 것인지에 대한 확인을 해보고 싶었던 것 같습니다.
요약
4일동안 보고 들은 결과 아래와 같은 답을 얻었습니다.
1. 회사차원에서 비전을 잡을만한 대상인가?
- yes
2. 로드맵은 어떻게 되는가?
- 기업에 적용 사례가 늘어감에 따라 보안이 큰 이슈였고 관련한 해결을 진행중입니다. 보안 관련 많은 세션이 열렸고 보안이 아닌 세션에서도 많이 거론되었습니다. (PodSecurity 등)
- 모범사례를 많이 질문하지만 명쾌한 답은 아직 모두 못 구한 모습이 재밌었습니다.
- 한개의 큰 클러스터보다는 여러 클러스터에 역할을 나누어서 구축하려는 흐름을 느꼈습니다. 이를 위한 기술들 (cluster api등)이 많이 나오고 사람들의 관심을 끌고 있었습니다.
- Persistent volume, StatefulSet 등은 애초에는 별 관심이 없었으나 이제는 잘 수용해보려고 한다고 합니다.
3. 모범사례가 있는가?
- 나도 궁금하고 내 옆에애도 궁금하고 발표하는애도 궁금하고... 하지만 이것이 정답이다! 라고 말을 못하고 있습니다. 그 이유는 계속 더 좋은 해답들이 나오고 있어서 인 것 같습니다. (새로운 프로젝트 등장)
- 누군가가 발표에서 Perfect is the enemy of done이라는 말을 했는데 인상적이었습니다. 자꾸 더 좋지만 불안정한 (1.0이 안된) 오픈소스가 쏟아져나오니 다들 모범사례를 제시못하는 것 같기도 했습니다. 지금 있는 기술로 확정해서 해당 프로젝트를 잘해내는 것이 중요하다는 뻔한 답을 얻었습니다.
4. 어떻게 더 많이 쓰는가? on prem vs managed kube
- kube대신 linux로 대입해보면, 리눅스를 깔아서 쓰는냐(on prem) 클라우드에서 받아서 쓰는냐(managed)에 관한 질문인데... 이제 생각해보민 처한 상황에 맞게 행동할 것이라는 뻔한 답을 이미 알고 있었습니다.
- on prem, managed이 중요한게 아니라 안정하고 효율적으로 세팅하고 문제가 생겼을 때 트러블슈팅을 얼마나 잘해내느냐가 중요한 것이었습니다.
- 적어도 행사에 참가한 사람들은 on prem에 바닥부터 깔아본 경험이 있는 사람들이었습니다. (그렇게 해본 경험이 있냐고 물어봤는데 대다수가 손을 들었습니다.)
- on prem에 깔아봐야 바닥까지 이해가 될테니 당연히 중요한 경험입니다. 다만 실제로 서비스할 때에는 굳이 바닥까지 깔 필요가 없다면 managed kube를 쓰는 것이 더 효율적일 것입니다.
- 실력 향상을 위해서는 on prem에 해보고, 실제로 사용할 때에는 상황에 맞게 한다. 정도로 답을 얻었습니다.
후기 상세
짬짬이 시간을 내서 후기를 작성하도록 하겠습니다. :)
- //TODO: 5/20 월, KubeSec Enterprise Summit 2019
- //TODO: 5/21 화,
- //TODO: 5/22 수,
- //TODO: 5/23 목,
DAY 1
Kubernetes에 경험이 쌓여가면서 네트워크, 보안, persistent volume처리 등에 대한 모범사례나가 궁금해지고 있었습니다. 그래서 공식 컨퍼런스 전날에 열리는 KubeSec Enterprise Summit 2019에 참가하였습니다. 일정을 좀 빡빡하게 잡았었기 때문에 조금 늦게 도착하였습니다.
빠르게 등록을 한 뒤 컨퍼런스에 참가했습니다.
요약
참석하기 전부터 이 행사를 AquaSecurity(https://www.aquasec.com/)라는%EB%9D%BC%EB%8A%94) 곳에서 한다는 것을 알고 있었습니다. 그래서 여기서 어떤 이야기를 하나를 기대하고 갔습니다. 결론적으로는 컨퍼런스 자체에서는 별다른 소득은 없었습니다. 재밌었던것이 몇개의 섹션에서 청중은 다들 **모범사례가 없는지에 대해서 궁금해하고, 발표자들은 '그런게 없다'고 하거나 '공식 홈페이지에 있는 것이 좋은 시작점이다.'**정도의 이야기를 했습니다. 보안이 원래 한번 뚫려야 대비책이 나오고 그 과정이 반복되면서 성장해나가는 시장이라 그런것 같기도 하고 그랬습니다. 전체적으로는 '보안'에 '기업 사람들'이 관심이 엄청 많고, 해결책은 좀 미약해서 답답한 느낌이 들었습니다. 혹은 컨퍼런스는 홍보를 위한 미끼인건가? 하는 생각이 들었습니다.
오픈소스 상세
https://github.com/aquasecurity/kube-bench
kube-bench라고 CIS Kubernetes Benchmark의 취약점이 타겟 클러스터에 있는지 점검해주는 툴입니다. 취약점이 있는지 알아보는 것이 중요하고 그런 의미에서 보안을 신경쓸 때 처음에 쉽게 해볼 수 있는 툴이라고 생각합니다. 다만 이 툴을 돌리면 많은 부분에서 X가 뜰텐데 그것이 어떤 것을 의미하는지, 그것을 모두 내부 인력이 고칠 수 있는지는 다른 영역인 듯 합니다. 아쿠아컴퍼니가 전략적으로 내놓은 툴이 아닌가 싶습니다.
https://github.com/aquasecurity/kube-hunter
침투테스트를 해주는 툴입니다. 침투테스트에 관심이 많아서 좀 더 코드를 분석해보기는 했습니다. 그리고 결론적으로 S/W를 잘하는 분이 만든 툴은 아니라는 결론을 내기리는 했습니다. star를 1,000개를 넘게 받았는데 정말로 이정도의 가치가 있는가? 하는 의구심이 많이 드는 툴입니다. 이렇게 생각하는 이유는,
- 커버하는 영역이 넓지 못한 느낌입니다.
- 테스트케이스도 많지 않고 코드에 버그도 많습니다. (aquasecurity/kube-hunter#124)
- 기본적인 스타일 가이드조차 지키지 않고 있습니다. (한 함수안에서 변수명이 snake_var와 camelVar가 섞여 있는 것을 보고 깜짝 놀랬습니다.)
- Issue를 적극적으로 반영하지 않고 있습니다.
가져다가 좀 써볼라는데 적어도 우리 클러스터에서는 작동하지 않거나 취약한 부분에서 에러가 나서 그냥 스킵되면서 문제 없다고 나오거나 하는 등의 이슈때문에 결국 못써보았습니다. 아이디어는 좋아서 더더욱 아쉬움이 많이 남는 툴입니다. 빨리 좀 더 튼튼해지기를 기대하고 있습니다.
첫날 마무리
- Kube를 기업에 반영을 하려고보니 보안 이슈가 많이 나오고 있는 것 같다라는 느낌을 받았습니다. 청중이 관심이 많은 것이 강하게 느껴졌습니다.
- 발표자가 청중의 기대에 미치는 발표를 못한 느낌입니다. 원론적인 이야기나 회사 홍보 수준이었습니다.
- 분위기를 본 것은 아주 마음에 듭니다. 다만 본 컨퍼런스도 이러면 어떻게하지 하는 우려가 좀 들었습니다. (다음날 우려가 해소되었습니다.)
DAY 2
해킹을 해보면서 쿠버네티스를 배워보는 세션이었습니다. 같은줄인 5명이 한팀이 되어서 사전에 준비된 취약한 쿠베 클라우드를 해킹하였습니다.
가장 재밌었던 세션이었습니다. 중간에 막히면 힌트도 주고, 힌트를 바탕으로 또 해보고, 해킹을 해보면서 어떻게 쿠베가 구성되어 있고 어떤 취약점이 존재하는지를 확인하는 시간이었습니다. 영상을 시청하려면 아래를 눌러주세요.
큰 흐름은 다음과 같습니다.
- nmap 등을 이용해서 열려있는 포트를 확인한다. (서버 주소는 사전에 주었습니다.)
- 열려있는 포트에 shellshock으로 공격한다.
- pod에 노출된 token을 찾은 뒤, secret을 얻어오고(k get secrets) decode한다.
- ssh 접속 정보를 찾는다.
- /tmp/flag에 값을 적는다.
자료는 아래에 있습니다.
https://github.com/calinah/learn-by-hacking-kccn/
에피소드
- 같은조 팀장이 상당히 잘 리딩해줘서 재밌었습니다.
- nmap, shellshock까지는 잘했는데 그다음에 막혔습니다. /tmp/k가 curl 이었는데, 이것을 못찾았습니다. 안그래도 we need curl 이라고 계속 이야기했는데 /tmp/k가 curl이라는 좀 억지스러운 가정이 있었습니다. (앞에서 힌트를 줬던것 같기도 한데 거기서 막혔습니다.)
참고
느낀점
- 왜 그렇게 PodSecurity를 강조하는지 몸소 느낄수 있었습니다. 기존의 웹취약점 공격에 의해서 master가 통째로 빼앗기면 안되기 때문에 Pod만 빼앗기도록 해야 한다고 이야기하는 것이 바로 이것이구나 느꼈습니다.
- 꽤 괜찮은 커리큘럼이라 사내 쇼케이스때 한번 해보면 어떨까 싶었습니다. :)
한국 서버 개발자