전체 글

DevOps Security Specialist를 목표하는 Security Compliance Engineer의 블로그
Kubernetes

Kubernetes Container Runtime Sandbox 개념

1. 개념하이퍼바이저를 활용해 가상화를 구현한 VM과 달리 컨테이너는 Host OS를 공유하는 형태이므로 컨테이너의 시스템콜이 Host OS로 요청됨이러한 escaping을 통제하기 위해 샌드박싱 기법을 활용하게 되는데 seccomp, apparmor를 적용하는 것은 현실적으로 불가능(각 애플리케이션별로 허용 가능한 syscall을 판별하고 허용해줘야 해서)2. gVisor이러한 문제의 현실적 대안으로서 gVisor 활용gVisor는 컨테이너를 위한 애플리케이션 커널 역할을 수행하면서 Application(Container)의 System Call Layer 역할을 수행함으로서 Application과 Host OS의 Kernel을 분리 gVisor는 Sentry와 Gofer로 구성 SentryApplic..

Kubernetes

Kubernetes ETCD 암호화 개념 및 실습

1. 개념 Secert 리소스는 이름과 다르게 값을 base64로 인코딩해 저장한다. 따라서 secret 값을 secret, 컨테이너 런타임, etcdctl 등에서 평문으로 확인할 수 있다. 이러한 특성으로 인해 ETCD를 반드시 암호화해야 하고 혹은 Vault와 같은 3rd-Party 오픈소스를 사용해 크레덴셜을 저장해야 한다. ETCD 암호화에 관한 자세한 방법은 공식 문서에 잘 설명되어 있다. 2. 실습 암호키 생성 head -c 32 /dev/urandom | base64 EncryptionConfiguration 작성 apiVersion: apiserver.config.k8s.io/v1 kind: EncryptionConfiguration resources: - resources: - secre..

Kubernetes

Kubernetes CertificateSigningRequests 개념 및 실습

1. 개념 클러스터의 오브젝트 및 서비스에 접근하기 위해 유저에 대한 인증/인가를 위해 인증서를 사용 인증서를 생성하기 위한 작업의 일환으로 유저의 개인키에 대한 사이닝을 K8s의 CA에 요청할때 CertificateSigningRequests API를 사용 인증서를 사이닝하는 방법에는 매뉴얼힌 방법과 API를 활용하는 방식이 존재 대략적인 프로세스는 다음과 같음 2. 실습(CertificateSigningRequests API 활용) key 생성 openssl genrsa -out [name].key 2048 CSR 생성(Common Name에 유저 이름 입력) openssl req -new -key [name].key -out [name].csr CertificateSigningRequest 생성 및..

MR. ZERO
Security & DevOps