본문 바로가기
728x90

전체 글57

Coraza WAF 소개와 Istio에서 Coraza WAF 적용하기 Coraza WAFCoraza는 엔터프라이즈급 고성능 웹 애플리케이션 방화벽 (WAF) 이다. Go 언어로 작성되었으며 Modsecurity SecLang Rule set을 지원하고 OWASP Core Rule Set v4와 100% 호환한다. ✏️ Coraza를 알아보기 전에..Coraza를 알아보기 전에 WAF와 OWASP에 대해 간단히 알아보면 좋을 것 같다.  WAF(웹 방화벽) 소개WAF (Web Application Firewall)WAF는 웹 애플리케이션으로 들어오는 트래픽을 모니터링 및 필터링하여 악성 요청으로 의심되는 요청들을 차단하고 웹 앱을 보호하고 승인되지 않은 데이터가 앱에서 나beer1.tistory.com  OWASP란?OWASP (Open Web Application Secu.. 2024. 11. 10.
OWASP란? OWASP (Open Web Application Security Project)OWASP는 전 세계 기업, 교육기관 및 개인이 만들어가는 오픈소스 애플리케이션 보안 프로젝트로, 중립적, 실무적이면서 비용 효과적인 애플리케이션 보안 가이드라인을 무료로 제공하고 있으며 이러한 가이드라인은 웹 및 애플리케이션 보안분야에서 거의 표준이 되고 있다. OWASP Top TenOWASP Top Ten은 웹 애플리케이션 취약점 중에서 빈도가 많고 가장 중요하고 보호해야 할 보안 위험에 대한 취약점 리스트이다. 공식 문서에서는 2021년 기준 TOP 10을 소개하고 있고, 2025년 업데이트할 예정이라고 한다. Broken Access Control: 허가된 사용자에 대해서만 리소스에 접근할 수 있도록 적절하게 인증/.. 2024. 11. 6.
WAF(웹 방화벽) 소개 WAF (Web Application Firewall)WAF는 웹 애플리케이션으로 들어오는 트래픽을 모니터링 및 필터링하여 악성 요청으로 의심되는 요청들을 차단하고 웹 앱을 보호하고 승인되지 않은 데이터가 앱에서 나가는 것을 방지한다. 방화벽 (Firewall)과의 차이점일반적인 방화벽과의 차이점은, 방화벽은 OSI 7 Layer 중 L4 수준에서의 트래픽을 관리 및 차단한다. 구체적으로 이야기 하자면, IP와 Port를 기준으로 트래픽을 허용할지 차단할지 설정한다. 방화벽에 의해 차단되는 경우, 실제 애플리케이션까지 트래픽이 도달하지 않기 때문에 클라이언트에서는 타임아웃이 발생한다. 반면에 WAF는 OSI 7 Layer 중 L7 수준에서의 트래픽을 관리 및 차단한다. 그 중에서 HTTP 정보를 기반으로.. 2024. 11. 5.
Kubernetes Scheduling - Node Affinity Affinity를 사용하여 파드를 스케줄링할 노드를 찾을 때의 제약조건을 정의할 수 있다. Affinity를 사용하면 이전 시간에 언급한 nodeSelector보다 더 풍부한 방식으로 파드를 실행시키는 노드의 조건을 설정할 수 있다. Affinity에는 크게 NodeAffinity와 Pod간 Affinity가 있다. 이번 글에서는 Node Affinity에 대해 알아보자.NodeAffinityNode Affinity는 node label를 기반으로 파드를 스케줄링할 수 있는 노드를 제한할 수 있다. Affinity는 파드의 Spec이기 때문에 Affinity를 사용하면 파드가 노드를 선택하는 개념으로 볼 수 있다. Scheduler에서는 NodeAffinity 플러그인에서 NodeAffinity에 대한 .. 2024. 5. 2.
Kubernetes Scheduling 소개 및 NodeSelector Kubernetes Scheduling쿠버네티스에서 스케줄링은 파드를 실행할 쿠버네티스 클러스터에 있는 적절한 노드를 찾는 과정을 말한다. 기본적으로 쿠버네티스에서 스케줄링은 컨트롤 플레인에 있는 kube-scheduler라는 컴포넌트가 그 기능을 담당한다. 물론 쿠버네티스의 스케줄링 메커니즘을 잘 이해한다면 자신만의 커스텀 스케줄러를 구현하는 것도 가능하다. kube-schedulerkube-scheduler는 쿠버네티스의 컨트롤 플레인의 구성요소로, 쿠버네티스의 기본 스케줄러이다 kube-scheduler는 새로 생성되었지만 아직 노드에 스케줄링되지 않은 파드를 실행하기 위해 최적의 노드를 선택한다. kube-scheduler에서 파드를 스케줄링을 할 때는 기본적으로 총 12단계를 거치게 된다. 그 .. 2024. 5. 1.
Jenkins pipeline 소개 및 Java 애플리케이션 CI/CD pipeline 작성 Jenkins pipeline은 CI / CD 파이프라인을 구현하고 Jenkins에 통합하는 것을 지원하는 플러그인 모음이다. Jenkins Pipeline은 Pipeline 도메인별 언어 (DSL)을 통해 간단한 파이프라인부터 복잡한 파이프라인을 코드로 모델링할 수 있는 확장 가능한 도구들을 제공한다. 즉, Jenkins pipeline에서 제공하는 DSL을 활용하여 애플리케이션 CI/CD 파이프라인을 포함한 여러가지 자동화 파이프라인 기능을 구현할 수 있다. Jenkins Pipeline의 정의 부분은 jenkinsfile 이라고 불리는 텍스트 파일에 작성된다. 이 파일은 Git과 같은 소스코드 레포지토리에서 관리할 수도 있다. Jenkinsfile은 pipeline as code의 기초로써, 파이프.. 2024. 2. 4.
Jenkins 소개 및 Kubernetes에 설치 Jenkins Jenkins는 소프트웨어 빌드, 테스트 및 배포와 관련된 모든 종류의 작업을 자동화 하는 데 사용하는 독립형 오픈소스 자동화 서버이다. 보통은 Jenkins를 CI / CD 도구로 잘 알려져 있으며, 회사와 같이 여러 조직에서 사용하기 좋다. 2023.11.04 - [DevOps/CI.CD] - CI / CD란 무엇일까? CI / CD란 무엇일까? CI / CD 개발자가 애플리케이션을 개발하고나면 애플리케이션을 실제 서버로 배포해야 한다. 보통 배포를 할 때는 애플리케이션을 빌드하고, 작성한 테스트코드를 돌려서 테스트를 진행한 후 모 beer1.tistory.com Jenkins 기능 Jenkins의 기능은 여러가지가 있다. Jenkins Job을 사용하여 스크립트 실행 Jenkins J.. 2023. 11. 7.
CI / CD란 무엇일까? CI / CD 개발자가 애플리케이션을 개발하고나면 애플리케이션을 실제 서버로 배포해야 한다. 보통 배포를 할 때는 애플리케이션을 빌드하고, 작성한 테스트코드를 돌려서 테스트를 진행한 후 모든 테스트가 통과되면 빌드 결과물을 패키징한 후 실제 서버로 배포를 하게 된다. Java 애플리케이션의 경우, 먼저 빌드를 해서 외부 의존성 라이브러리를 설치하고, 코드를 자바 클래스파일로 컴파일한다. 그리고 테스트 과정에는 애플리케이션 유닛 테스트를 마친 후 패키지 단계에서는 .jar 파일이나 .war 파일으로 패키징하거나 컨테이너로 배포하는 경우 컨테이너 이미지를 빌드한다. 그 다음 실제 서버로 배포를 하게 된다. 그런데 이러한 일련의 과정들을 새로운 기능을 추가할 때마다 해야하므로 애플리케이션 배포를 하는 것이 여.. 2023. 11. 4.
[1] 쿠버네티스 확장 - kubectl plugin kubectl 도구는 내부적으로 쿠버네티스 API를 사용하여 쿠버네티스 클러스터와 통신하여 쿠버네티스 클러스터와 리소스를 조회하고 변경하기 위해 사용하는 CLI 툴이다. kubectl에서는 쿠버네티스 리소스를 조회하거나 변경하기 위한 여러가지 명령어들을 제공하고 있다. 그런데 kubectl에서 제공하는 명령어 외에도 사용자가 직접 쿠버네티스 클러스터에 관련된 기능들을 개발하여 명령어를 추가할 수 있다. kubectl 커맨드라인 도구 자체에서 플러그인을 사용할 수 있도록 확장성 있게 개발되었기 때문에 추가 명령어 개발이 가능하다. kubectl plugin kubectl에서 사용하는 plugin을 개발하려면 kubectl-로 시작되는 독립적인 실행 파일을 개발하기만 하면 된다.kubectl-xxx 이라는 .. 2023. 10. 29.
728x90