전체 글

전체 글

    [C++] X-Macro 패턴

    X-Macro란 하나의 데이터 목록을 여러 용도로 재사용하기 위한 전처리기 매크로 기법이다.enum, 문자열 매핑, switch문, 테이블 생성 같은 곳에서 중복 코드를 없애고 Single Source of Truth를 만들 때 많이 쓴다.데이터 목록은 한 곳에만 정의하고, 그걸 어떻게 사용할지는 매크로(X)에 맡긴다단순한 예제는 다음과 같다// color.defX(Red)X(Green)X(Blue)// enum 생성enum class Color {#define X(name) name,#include "color.def"#undef X};// 전처리 후enum class Color { Red, Green, Blue}; ClickHouse 오픈소스 코드를 통해 분석해본다.// ClickHo..

    소프트웨어 보안 설계

    위협 모델링위협은 어디에나 존재하지만, 관리할 수 있다면 공존할 수 있다. 소프트웨어 분야에서도 마찬가지다.시스템에 대한 잠재적인 위협을 이해한 뒤에야 비로소 견고한 방어와 완화책을 소프트웨어 설계에 내재화할 수 있다.위협 모델링은 소프트웨어 개발 과정 전반에 걸쳐 보안에 영향을 미치는 모든 결정에 지침이 되는 관점을 제공한다.위협 모델링을 위한 4가지 질문이 있다.우리가 다루는 문제가 무엇인가? -> 프로젝트의 맥락과 범위를 확립무엇이 잘못될 수 있는가? -> 잠재적인 문제에 대한 예측문제점에 어떻게 대처할 것인가? -> 문제에 대한 완화방법 탐색우리는 제대로 작업했는가? -> 전체 프로세스 리뷰자산 식별자산과 자산에 대한 잠재적인 위협을 식별한다.대부분의 자산은 데이터지만, 하드웨어, 통신 대역폭 그..

    보안은 언제 취약해질 수 있는가

    산술적 취약점오버플로는 계산 결과가 고정너비 정수의 용량을 초과할 때 발생하며, 예상치 못한 결과를 초래해서 취약점을 만들 수 있다.고정너비 정수 취약점계산 결과가 제한된 범위를 초과하면 아무런 경고 없이 잘못된 결과가 출력된다.16비트 정수는 0부터 65,535 까지의 값을 표시할 수 있다.예를들어 300*300 = 90,000 이지만, 이 숫자는 우리가 사용하는 고정너비 정수 범위를 벗어난다. 따라서 90,000 보다 65,536이 작은 24,464 이다.산술 결과를 잘못 계산하면 코드가 여러 방식으로 망가실 수 있으며, 그 영향은 종종 눈덩이처럼 불어나 연쇄적인 기능 장애로 이어지다 결국 시스템 중단이나 블루 스크린으로 끝을 맺는다.정수 오버플로로 인한 취약점의 흔한 사례로 값들의 잘못된 비교, 판..

    [LitmusChaos] Developer Guide

    https://docs.litmuschaos.io/docs/developer-guide/chaoscenter-developer-guide백엔드 컴포넌트GraphQL 서버Authentication 서버MongoDB프론트 컴포넌트React 로컬 세팅 과정은 다음과 같다.1. mongodb 설치/세팅## mongodb 설치❯ docker pull mongo:5❯ docker network create mongo-cluster❯ docker run -d --net mongo-cluster -p 27015:27015 --name m1 mongo:5 mongod --replSet rs0 --port 27015❯ docker run -d --net mongo-cluster -p 27016:27016 --name m2..

    [보안][보안플랫폼] SOAR, SIEM, XDR 개념과 특징

    SOAR (Security Orchestration, Automation and Response)SOAR 란?보안 오케스트레이션, 자동화 및 대응을 통해 보안 팀은 사이버 공격 및 사고에 대한 조직의 대응을 표준화하고 간소화할 수 있다.보안운영센터(soc) 내부 및 외부의 워크플로우를 최적화하여 분석가들이 조직의 에코시스템 보안에 집중할 수 있도록 지원한다.오케스트레이션, 자동화, 콘솔 기능 등 대부분의 표준 SIEM에 부족한 보안 중심 기능을 추가하기 위해 탄생했다.Orchestration (오케스트레이션)다양한 보안 도구와 시스템 (예: SIEM, 방화벽, 이메일 보안 솔루션 등)을 통합하여, 이들이 서로 적보를 주고받고 협업할 수 있도록 한다.작업을 중앙 집중화하고 전파할 수 있도록 서로 다른 보안..

    [Kubernetes] Cilium

    Cilium 이란?cilium의 기반에는 ebpf라는 리눅스 커널 기술이 사용된다. ebpf는 보안/가시성/네트워킹 제어 로직을 커널에 동적으로 삽입할 수 있는 Linux 커널 기술이다.또한 cilium은 kube-proxy를 완전히 대체할 수 있다.  cilium은 iptables을 이용한 쿠버네티스 트래픽 라우팅의 단점을 보완하여 네트워크 성능을 높히고자 하는 목적을 갖고있다.iptables를 기반으로 IP/PORT 기반의 전통적인 포워딩 기술은 오랫동안 널리 사용되었고 퍼블릿/프라이빗 클라우드 제품군들 모두 iptables 기반의 Security Group등을 기본으로 제공하고 있고 쿠버네티스마저도 CNI 핵심으로 iptables를 활용하고 있다.하지만 동적으로 변화하고 복잡한 마이크로서비스를 사용..

    [kubernetes] Service (Headless Service, ExternalName), Endpoint

    Headless ServiceHeadless 서비스는 서비스를 이용한 로드밸런싱 기능이 지원되지 않는다. 서비스를 거치지 않고 파드에 직접 접근한다.서비스 생성 시 .spec.clusterIP 필드 값을 None으로 설정하면 클러스터 IP가 없는 서비스를 만들 수 있다.❯ cat headless-svc.yamlapiVersion: v1kind: Servicemetadata: name: my-headless-service namespace: service-testspec: clusterIP: None selector: app: my-app ports: - port: 80 targetPort: 80❯ kubectl get svcNAME TYPE ..

    [Kubernetes] ArgoCD

    개념Argo CD 란?Manifest(yaml) 파일의 변경 사항을 감시하며, 현재 배포된 환경의 상태와 Manifest(yaml) 파일에 정의된 상태를 동일하게 유지하는 역할을 수행한다.한마디로 Argo CD는 쿠버네티스를 위한 CD 툴이라고 할 수 있다.GitOps는 DevOps의 실천 방법 중 하나로 애플리케이션의 배포와 운영에 관련된 모든 요소들을 Git에서 관리한다는 뜻이다.컴포넌트❯ kubectl get deployNAME READY UP-TO-DATE AVAILABLE AGEargocd-applicationset-controller 1/1 1 1 65sargocd-dex-serve..