DevOps는 이전의 서비스 개발과 인프라가 독립적으로 나누어서 운영 되던 것에서 나아가 개발과 운영이 한개처럼 운영 되는것을 이야기 한다. DevOps를 이야기 하면서 빠질수 없는 것이 Continuous Integration, Continuous Delivery (Deployment) 일 것이다. 즉 DevOps의 CI/CD라는 목적을 달성하기 위한 하나의 도구로서 클라우드를 사용할 수 있다.
Continuous Integration (지속적인 통합)
새로운 기능을 소프트웨어에 신속하게 통합하는 프로세스, 기능을 구현하고 테스트하고 통합해 소프트웨어 제품으로 통합하는 워크플로를 정의
Continuous Delivery (지속적인 전달)
소프트웨어를 고객이 사용할 수 있는 서비스로 배포하는 자동화, 데브옵스는 인프라 구성 요소를 수동으로 관리하는 대신 엔지니어가 변경을 신속하게 처리할 수 있도록 인프라를 프로그램으로 만들 것을 권장
https://dzone.com/articles/secure-and-scalable-cicd-pipeline-with-aws
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
Elastic Beanstalk
: AWS상에서 인프라에 대한 관련없이 Go, Java, .Net, Node.js, PHP, Python, Ruby에서 개발된 애플리케이션을 배포할때 선택된 지원 가능 플랫폼 버전을 구축하고 EC2 인스턴스등의 리소스를 하나 이상 프로비저닝 하여 애플리케이션을 실행할수 있습니다.
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/Welcome.html
쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있다.
쿠버네티스란 명칭은 키잡이(helmsman)이나 파일럿을 뜻하는 그리스어에서 유래했다. 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스화했다. 쿠버네티스는 구글의 15여년에 걸친 대규모 상용 워크로드 운영 경험을 기반으로 만들어졌으며 커뮤니티의 최고의 아이디어와 적용 사례가 결합되었다.
https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/
OpenStack은 풀링된 가상 리소스를 사용하여 프라이빗 및 퍼블릭 클라우드를 구축하고 관리하는 오픈소스 플랫폼입니다. OpenStack 플랫폼을 포함하는 툴, 일명 “프로젝트”는 컴퓨팅, 네트워킹, 스토리지, Identity 및 이미지 서비스의 핵심 클라우드 컴퓨팅 서비스를 처리합니다. 또한 십여 개 이상의 옵션 프로젝트를 번들로 묶어 배포 가능한 고유의 클라우드를 생성할 수도 있습니다.
https://www.redhat.com/ko/topics/openstack
클라우드와 가상화의 차이
https://www.redhat.com/ko/topics/cloud-computing/cloud-vs-virtualization
Kubernetes OpenStack 모니터링 방안
https://github.com/sysflow-telemetry
https://github.com/jvehent/cipherscan
https://observatory.mozilla.org
DCT 도커 컨텐트 트러스트 : 최근 도커에 추가된것으로 시간 경과에 따른 컨테이너 업데이트를 보호,
KMS : Vault, Sops
jq : JSON형식에서 정보를 추출하는데 사용하는 명령행 도구 https://stedolan.github.io/jq 에서 다운받을수 있다.
SameSite 쿠키 : CSRF공격에 대응하기 위한 쿠키 사용 정책을 서버 단에서 정의해서 사용할 수 있습니다. strict, Lax, None 3가지로 구성되며 Strict로 설정하였을 경우 쿠키가 발행되었을때 해당 쿠기가 처음 설정된 사이트에서만 사용가능합니다. 자세한 내용은 하단의 첨부 사이트를 참고해 주세요.
일반적으로 1차로 UserName/Password 인증을 거친 이후에 두번째 단계로 OTP와 유사한 보안을 제공할수 있는 기술로 사용자가 로그인 하면 사용자의 전화로 푸시 알림을 보내어 두번째 인증 단계를 완료 하도록 하는 방식이다.
책의 예제에서 사용하는 Duo의 경우 SSH 접근시 PAM인증 프레임워크를 이용해서 멀티 팩터 인증을 걸수 있다.
https://www.cisco.com/c/ko_kr/products/security/adaptive-multi-factor-authentication.html
어플리케이션에 대한 복잡한 로깅 및 이벤트 분석 기법을 사용해 공격을 탐지하고 대응 할 수 있는 정교한 방법을 설명
https://www.owasp.org/index.php/File:Owasp-appensor-guide-v2.doc
책상에서 사용된 예제 코드
https://github.com/Securing-Devops/
Securing-DevOps has 10 repositories available. Follow their code on GitHub.
github.com
HTTPS 최신화
http://wiki.mozilla.org/Security/Server_Side_TLS
TLS 추가 자료
Bulletproof SSL and TLS : Feisty Duck 2017
https://www.feistyduck.com/books/bulletproof-ssl-and-tls/bulletproof-ssl-and-tls-introduction.pdf (Sample)
기타 참고 자료
https://techblog.yahoo.co.jp/infrastructure/os_n_k8s/
용어 정리
ECDSA
ECDSA는 RSA에 대한 대체 알고리즘으로 타원 곡선을 사용해 디지털 서명을 제공, 이의 이점은 RSA에 비해서 크기가 작다. 256비트 ECDSA키는 3072비트 RSA 키와 동등한 보안을 제공한다.
% 본 글은 "클라우드 한경에서의 데브옵스 보안" (줄리엔 비앙트 지음 / 홍성민, 주성식 옮김)을 참고하여 작성 되었으며 개인의 의견을 첨부되지 않았습니다.