11 ways not to get hacked
https://kubernetes.io/blog/2018/07/18/11-ways-not-to-get-hacked/ μμ½
pspκ΄λ ¨ λ΄μ©μ μμ
Kubernetes 보μμ νλ‘μ νΈκ° μμλ μ΄νλ‘ λ¨Ό κΈΈμ κ±Έμ΄μμ§λ§ μ¬μ ν λͺ κ°μ§ λ¬Έμ κ° μμ΅λλ€. 컨νΈλ‘€ νλ μΈμμ μμνμ¬ μν¬λ‘λ λ° λ€νΈμν¬ λ³΄μμ ν΅ν΄ ꡬμΆνκ³ λ³΄μμ λ―Έλμ λν μμΈ‘μΌλ‘ λ§λ¬΄λ¦¬νλ λ€μμ ν΄λ¬μ€ν°λ₯Ό κ°ννκ³ μμλ κ²½μ° λ³΅μλ ₯μ λμ΄λ λ° λμμ΄ λλ μ μ©ν ν λͺ©λ‘μ λλ€.
Part One: The Control Plane
control planeμ Kubernetesμ λλμ λλ€. ν΄λ¬μ€ν°μμ μ€ν μ€μΈ λͺ¨λ 컨ν μ΄λμ ν¬λμ λν μ 체 λ³΄κΈ°κ° μκ³ μ ν¬λ(λΆλͺ¨ λ Έλμ λν λ£¨νΈ μ‘μΈμ€ κΆνμ΄ μλ 컨ν μ΄λλ₯Ό ν¬ν¨ν μ μμ)λ₯Ό μμ½ν μ μμΌλ©° ν΄λ¬μ€ν°μ μ μ₯λ λͺ¨λ λΉλ°μ μ½μ μ μμ΅λλ€. μ΄ κ·μ€ν κ²μ μ κ·Όν λλ, μ μ₯λμ΄ μμ λλ, λ€νΈμν¬λ₯Ό ν΅ν΄ μ΄μ‘λ λλ μ°λ°μ μΈ λμΆ λ° μ μμ μΈ μλλ‘λΆν° 보νΈν΄μΌ ν©λλ€.
1. TLS Everywhere
νΈλν½ μ€λνμ λ°©μ§νκ³ , μλ²μ IDλ₯Ό νμΈνκ³ , (μνΈ TLSμ κ²½μ°) ν΄λΌμ΄μΈνΈμ IDλ₯Ό νμΈνλ €λ©΄ TLSλ₯Ό μ§μνλ λͺ¨λ κ΅¬μ± μμμ λν΄ TLSλ₯Ό νμ±νν΄μΌ ν©λλ€.
Source
Lucas KΓ€ldstrΓΆmμ΄ μμ±ν μ΄ λ€νΈμν¬ λ€μ΄μ΄κ·Έλ¨μ TLSκ° μ΄μμ μΌλ‘ μ μ©λμ΄μΌ νλ μΌλΆ μμΉ, μ¦ λ§μ€ν°μ λͺ¨λ ꡬμ±μμ μ¬μ΄, Kubeletκ³Ό API μλ² μ¬μ΄λ₯Ό 보μ¬μ€λλ€.

2. RBACνμ±ν(Least Privilege μ΅μ κΆν λ²μΉμΌλ‘) , ABACλ μ¬μ©νμ§ μκΈ° , κ·Έλ¦¬κ³ λ‘κ·Έ λͺ¨λν°λ§ νκΈ°

Role-based access controlμ λ€μμ€νμ΄μ€ μ‘μΈμ€μ κ°μ 리μμ€μ λν μ¬μ©μ μ‘μΈμ€μ λν μΈλΆνλ μ μ± κ΄λ¦¬λ₯Ό μ 곡ν©λλ€.
Kubernetesμ ABAC(μμ± κΈ°λ° μ‘μΈμ€ μ μ΄)λ λ¦΄λ¦¬μ€ 1.6λΆν° RBACλ‘ λ체λμμΌλ©° API μλ²μμ νμ±ννλ©΄ μ λ©λλ€. λμ RBACλ₯Ό μ¬μ©νμμμ€.
μμ§ λ§μΈμ: μ΄λ¬ν λ‘κ·Έλ₯Ό ν΄λ¬μ€ν° λ΄λΆμ 보κ΄νλ κ²μ μΉ¨ν΄ μ 보μ μνμ΄ λ©λλ€. μ΄λ λ€λ₯Έ λͺ¨λ 보μμ λ―Όκ°ν λ‘κ·Έμ λ§μ°¬κ°μ§λ‘ μλ° μ λ³μ‘°λ₯Ό λ°©μ§νκΈ° μν΄ ν΄λ¬μ€ν° μΈλΆλ‘ μ μ‘λμ΄μΌ ν©λλ€.
3. API μλ²μ νμ¬ μΈμ¦ μ¬μ©
μ‘°μ§ μ 체μμ μΈμ¦ λ° κΆν λΆμ¬(Single Sign Onμ΄λΌκ³ λ ν¨)λ₯Ό μ€μ μ§μ€ννλ©΄ μ¬μ©μμ λν μ¨λ³΄λ©, μ€νλ³΄λ© λ° μΌκ΄λ κΆνμ΄ λμμ΄ λ©λλ€.
Kubernetesλ₯Ό νμ¬ μΈμ¦ μ 곡μ(μ: Google λλ GitHub)μ ν΅ν©νλ©΄ μ격 νλ«νΌμ ID 보μ¦(2FAμ κ°μ κ²μΌλ‘ λ°±μ λ¨)μ μ¬μ©νκ³ κ΄λ¦¬μκ° μ¬μ©μλ₯Ό μΆκ°νκ±°λ μ κ±°νκΈ° μν΄ Kubernetes API μλ²λ₯Ό μ¬κ΅¬μ±ν΄μΌ νλ κ²μ λ°©μ§ν©λλ€.
4. etcd ν΄λ¬μ€ν° λΆλ¦¬ λ° λ°©νλ²½
etcdλ μν λ° λΉλ°μ λν μ 보λ₯Ό μ μ₯νλ©° μ€μν Kubernetes κ΅¬μ± μμμ λλ€. ν΄λ¬μ€ν°μ λλ¨Έμ§ λΆλΆκ³Ό λ€λ₯΄κ² 보νΈν΄μΌ ν©λλ€.
API μλ²μ etcdμ λν μ°κΈ° μ‘μΈμ€λ μ 체 ν΄λ¬μ€ν°μμ 루νΈλ₯Ό μ»λ κ²κ³Ό λμΌνλ©° μ½κΈ° μ‘μΈμ€λ₯Ό μ¬μ©νμ¬ κΆνμ μλΉν μ½κ² μμ€μ»¬λ μ΄μ ν μ μμ΅λλ€.
Kubernetes μ€μΌμ€λ¬λ λ Έλκ° μλ ν¬λ μ μμ λν΄ etcdλ₯Ό κ²μν©λλ€. κ·Έλ° λ€μ μ°Ύμ ν¬λλ₯Ό μμ½μ μν΄ μ¬μ© κ°λ₯ν kubeletμΌλ‘ 보λ λλ€. μ μΆλ ν¬λμ λν μ ν¨μ± κ²μ¬λ API μλ²κ° etcdμ μ°κΈ° μ μ μννλ―λ‘ etcdμ μ§μ μ°λ μ μμ μΈ μ¬μ©μλ λ§μ 보μ λ©μ»€λμ¦μ μ°νν μ μμ΅λλ€. μ)PodSecurityμ μ± .
etcdλ νΌμ΄ λ° ν΄λΌμ΄μΈνΈ TLS μΈμ¦μλ‘ κ΅¬μ±νκ³ μ μ© λ Έλμ λ°°ν¬ν΄μΌ ν©λλ€. κ°μΈ ν€κ° λλλΉνκ³ μμ μ λ Έλμμ μ¬μ©λλ κ²μ λ°©μ§νκΈ° μν΄ ν΄λ¬μ€ν°λ₯Ό API μλ²λ‘ λ°©νλ²½μΌλ‘ μ€μ ν μλ μμ΅λλ€.
5. μνΈν ν€ κ΅μ²΄
보μ λͺ¨λ² μ¬λ‘λ ν€ μμμ "νλ° λ°κ²½"μ μ ννκΈ° μν΄ μνΈν ν€μ μΈμ¦μλ₯Ό μ κΈ°μ μΌλ‘ κ΅μ²΄νλ κ²μ λλ€.
Kubernetesλ κΈ°μ‘΄ μ격 μ¦λͺ μ΄ λ§λ£λλ©΄ μ CSRμ μμ±νμ¬ μΌλΆ μΈμ¦μ(νΉν kubelet ν΄λΌμ΄μΈνΈ λ° μλ² μΈμ¦μ)λ₯Ό μλμΌλ‘ κ΅μ²΄ν©λλ€.
κ·Έλ¬λ API μλ²κ° etcd κ°μ μνΈννλ λ° μ¬μ©νλ λμΉ μνΈν ν€λ μλμΌλ‘ μνλμ§ μμΌλ©° μλμΌλ‘ μνν΄μΌ ν©λλ€. μ΄λ₯Ό μν΄μλ λ§μ€ν° μ‘μΈμ€κ° νμνλ―λ‘ κ΄λ¦¬ μλΉμ€(μ: GKE λλ AKS)λ μ΄μμλ‘λΆν° μ΄ λ¬Έμ λ₯Ό μΆμνν©λλ€.
Part Two: Workloads
컨νΈλ‘€ νλ μΈμμ μ΅μνμ μ€ν κ°λ₯ν 보μμΌλ‘ ν΄λ¬μ€ν°λ μμ νκ² μλν μ μμ΅λλ€. λ°°ν¬ μ μ λ’°ν μ μμ§λ§ μΈν°λ·μ μ°κ²°λμ΄ μμΌλ©΄ λμ€μ μ μ©λ μνμ΄ νμ μμ΅λλ€. μ΅μνμ κΆνμΌλ‘ μν¬λ‘λλ₯Ό μ€ννκ³ λ°νμ ꡬμ±μ κ°ννλ©΄ μ΄λ¬ν μνμ μννλ λ° λμμ΄ λ μ μμ΅λλ€.
6. Use Linux Security Features and PodSecurityPolicies
Linux 컀λμλ μμ© νλ‘κ·Έλ¨μ μ΅μ κΆνμ μ 곡νλλ‘ κ΅¬μ±ν μ μλ μ¬λ¬ μ€μ²© 보μ νμ₯(κΈ°λ₯, SELinux, AppArmor, seccomp-bpf)μ΄ μμ΅λλ€.
baneκ³Ό κ°μ λꡬλ AppArmor νλ‘νμ μμ±νκ³ seccomp νλ‘νμ μν docker-slimμ μμ±νλ λ° λμμ΄ λ μ μμ§λ§ μ΄λ¬ν μ μ± μ μ©μ λΆμμ©μ΄ μμ΅λλ€. μ ν리μΌμ΄μ μ ν¬κ΄μ μΈ ν μ€νΈλ₯Ό μ£Όμνμ¬ νμμμ€.
7. Statically Analyse YAML
Sensitive information should not be stored in pod-type YAML resource (deployments, pods, sets, etc.), and sensitive configmaps and secrets should be encrypted with tools such as vault (with CoreOS's operator), git-crypt, sealed secrets, or cloud provider KMS.
Static analysis of YAML configuration can be used to establish a baseline for runtime security. kubesec generates risk scores for resources:
And kubetest is a unit test framework for Kubernetes configurations:
8. 루νΈκ° μλ μ¬μ©μλ‘ μ»¨ν
μ΄λ μ€ν
루νΈλ‘ μ€νλλ 컨ν μ΄λλ μμ λΆνκ° μꡬνλ κ²λ³΄λ€ ν¨μ¬ λ λ§μ κΆνμ κ°κ³ μμΌλ©°, μ΄λ μμλ κ²½μ° κ³΅κ²©μκ° κ³΅κ²©μ κ³μνλ λ° λμμ΄ λ μ μμ΅λλ€.
Kubernetesμμ μ¬μ©μ λ€μμ€νμ΄μ€κ° νμ±νλμ΄ μμ§ μμ΅λλ€. μ¦, 컨ν μ΄λμ μ¬μ©μ ID ν μ΄λΈμ΄ νΈμ€νΈμ μ¬μ©μ ν μ΄λΈμ λ§€νλκ³ μ»¨ν μ΄λ λ΄μμ λ£¨νΈ μ¬μ©μλ‘ νλ‘μΈμ€λ₯Ό μ€ννλ©΄ νΈμ€νΈμμ 루νΈλ‘ μ€νλ©λλ€. 컨ν μ΄λ λΈλ μ΄ν¬μμμ λ°©μ§νκΈ° μν΄ κ³μΈ΅νλ 보μ λ©μ»€λμ¦μ΄ μμ§λ§ 컨ν μ΄λ λ΄λΆμμ 루νΈλ‘ μ€ννλ κ²μ μ¬μ ν κΆμ₯λμ§ μμ΅λλ€.
λ§μ 컨ν μ΄λ μ΄λ―Έμ§λ λ£¨νΈ μ¬μ©μλ₯Ό μ¬μ©νμ¬ PID 1μ μ€νν©λλ€. ν΄λΉ νλ‘μΈμ€κ° μμλλ©΄ 곡격μκ° μ»¨ν μ΄λμ 루νΈλ₯Ό κ°κ² λλ©° μλͺ»λ ꡬμ±μ μ μ©νκΈ°κ° ν¨μ¬ μ¬μμ§λλ€.
루νΈκ° μλ 컨ν μ΄λλ 1024 λ―Έλ§μ κΆν μλ ν¬νΈμ λ°μΈλ©ν μ μμ§λ§(μ΄κ²μ CAP_NET_BIND_SERVICE 컀λ κΈ°λ₯μ μν΄ μ μ΄λ¨) μλΉμ€λ₯Ό μ¬μ©νμ¬ μ΄ μ¬μ€μ μμ₯ν μ μμ΅λλ€. μ΄ μμμ κ°μμ MyApp μ ν리μΌμ΄μ μ 컨ν μ΄λμ ν¬νΈ 8443μ λ°μΈλ©λμ§λ§ μλΉμ€λ targetPortμ λν μμ²μ νλ‘μνμ¬ 443μμ μ΄λ₯Ό λ ΈμΆν©λλ€.
루νΈκ° μλ μ¬μ©μλ‘ μν¬λ‘λλ₯Ό μ€νν΄μΌ νλ κ²μ μ¬μ©μ λ€μμ€νμ΄μ€λ₯Ό μ¬μ©ν μ μκ±°λ 루νΈκ° μλ 컨ν μ΄λλ₯Ό μ€ννκΈ° μν μ§μμ μΈ μμ μ΄ μ»¨ν μ΄λ λ°νμμ μμ λκΉμ§ λ³κ²½λμ§ μμ΅λλ€.
9. Use Network Policies
κΈ°λ³Έμ μΌλ‘ Kubernetes λ€νΈμνΉμ λͺ¨λ ν¬λ κ° νΈλν½μ νμ©ν©λλ€. μ΄κ²μ `Network Policy`μ μ¬μ©νμ¬ μ νν μ μμ΅λλ€.
Kubernetesλ λͺ¨λ μμ€ν μνλ₯Ό etcdμ μ μ₯νλ―λ‘ CNI λ€νΈμνΉ νλ¬κ·ΈμΈμμ μ§μνλ κ²½μ° λμ λ°©νλ²½μ ꡬμ±ν μ μμ΅λλ€.
Calico, Cilium, kube-router, Romana λ° Weave Netμ λͺ¨λ Network Policyμ μ§μν©λλ€.
Kubernetes λ€νΈμν¬ μ μ± μ DNS μ΄λ¦μ μ μ©ν μ μμ΅λλ€. κ³ μ IP λλ podSelector(λμ Kubernetes IPμ κ²½μ°)μλ§ λ€νΈμν¬ μ μ± μ μ μ©ν μ μκΈ° λλ¬Έμ λλ€.
λͺ¨λ² μ¬λ‘λ λ€μμ€νμ΄μ€μ λν λͺ¨λ νΈλν½μ κ±°λΆνλ κ²μΌλ‘ μμνκ³ μ ν리μΌμ΄μ μ΄ μλ½ ν μ€νΈ μ νκ΅°μ ν΅κ³Όν μ μλλ‘ κ²½λ‘λ₯Ό μ μ§μ μΌλ‘ μΆκ°νλ κ²μ λλ€.
10. Scan Images and Run IDS(μΉ¨μ
νμ§ μμ€ν
)

μΉ μλ²λ μΈλΆμμ http/httpsλ₯Ό ν΅ν΄μ podλ΄λΆμ½λλ₯Ό μ€νν μ μμ
μ΄λ―Έμ§ μ€μΊνλ©΄ 곡격μκ° μ»¨ν μ΄λμ μ격 μ‘μΈμ€νκΈ° μν΄ μ μ©ν μ μλ μλ €μ§ μ·¨μ½μ μ΄ μλμ§ νμΈν©λλ€.
IDS(μΉ¨μ νμ§ μμ€ν )μ μ¬μ©ν©λλ€.
μ΄λ¬ν μΉν μ 컨ν μ΄λ μ΄λ―Έμ§ μ€μΊ λꡬμμ μ΄λ―Έμ§λ₯Ό ν΄λ¬μ€ν°μ λ°°ν¬νκΈ° μ μ μ ν¨μ±μ κ²μ¬νλ λ° μ¬μ©ν μ μμ΅λλ€. κ²μ¬μ μ€ν¨ν μ΄λ―Έμ§λ μ μ₯μ΄ κ±°λΆλ μ μμ΅λλ€.
μλ €μ§ μ·¨μ½μ μ λν΄ μ»¨ν μ΄λ μ΄λ―Έμ§λ₯Ό μ€μΊνλ©΄ 곡격μκ° κ³΅κ°λ CVEλ₯Ό μ μ©ν μ μλ μκ°μ μ€μΌ μ μμ΅λλ€. CoreOSμ Clair λ° Aquaμ Micro Scannerμ κ°μ λ¬΄λ£ λꡬλ λ°°ν¬ νμ΄νλΌμΈμμ μ¬μ©λμ΄ μ€μνκ³ μ μ© κ°λ₯ν μ·¨μ½μ μ΄ μλ μ΄λ―Έμ§μ λ°°ν¬λ₯Ό λ°©μ§ν΄μΌ ν©λλ€.
Grafeasμ κ°μ λꡬλ 컨ν
μ΄λμ κ³ μ μλͺ
(μ½ν
μΈ μ£Όμ μ§μ κ°λ₯ ν΄μ)μ λν μ§μμ μΈ κ·μ μ€μ λ° μ·¨μ½μ± κ²μ¬λ₯Ό μν΄ μ΄λ―Έμ§ λ©νλ°μ΄ν°λ₯Ό μ μ₯ν μ μμ΅λλ€. μ¦, ν΄λΉ ν΄μλ₯Ό μ¬μ©νμ¬ μ»¨ν
μ΄λ μ΄λ―Έμ§λ₯Ό μ€μΊνλ κ²μ νλ‘λμ
μ λ°°ν¬λ μ΄λ―Έμ§λ₯Ό μ€μΊνλ κ²κ³Ό λμΌνλ©° νλ‘λμ
νκ²½μ μ‘μΈμ€ν νμ μμ΄ κ³μ μνν μ μμ΅λλ€.
μλ €μ§μ§ μμ Zero Day μ·¨μ½μ μ νμ μ‘΄μ¬νλ―λ‘ Twistlock, Aqua λ° Sysdig Secureμ κ°μ μΉ¨μ νμ§ λꡬλ₯Ό Kubernetesμ λ°°ν¬ν΄μΌ ν©λλ€.
IDSλ 컨ν μ΄λμμ λΉμ μμ μΈ λμμ κ°μ§νκ³ μ΄λ₯Ό μΌμ μ€μ§νκ±°λ μ’ λ£ν©λλ€. Sysdigμ Falcoλ μ€ν μμ€ κ·μΉ μμ§μ΄λ©° μ΄ μνκ³μ μΆλ°μ μ λλ€.
Part Three: The Future

보μμ "ν΄λΌμ°λ λ€μ΄ν°λΈ μ§ν"μ λ€μ λ¨κ³λ μλΉμ€ λ©μλ‘ λ³΄μ΄μ§λ§ μ±νμλ μκ°μ΄ 걸릴 μ μμ΅λλ€. λ§μ΄κ·Έλ μ΄μ μλ μ ν리μΌμ΄μ μμ λ©μ μΈνλΌλ‘μ 볡μ‘μ± μ΄λμ΄ ν¬ν¨λλ©° μ‘°μ§μ λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄νκΈ°λ₯Ό μ΄λ§ν κ²μ λλ€.
11. Run a Service Mesh
μλΉμ€ λ©μλ Envoy λ° Linkerdμ κ°μ κ³ μ±λ₯ "μ¬μ΄λμΉ΄" νλ‘μ μλ² κ°μ λ§λ€μ΄μ§ μνΈνλ μꡬ μ°κ²°μ μΉμ λλ€. λ§μ΄ν¬λ‘μλΉμ€ λ³κ²½ μμ΄ νΈλν½ κ΄λ¦¬, λͺ¨λν°λ§ λ° μ μ± μ μΆκ°ν©λλ€.
λ§μ΄ν¬λ‘μλΉμ€ 보μ λ° λ€νΈμνΉ μ½λλ₯Ό 곡μ νκ³ μ ν¬ ν μ€νΈλ₯Ό κ±°μΉ λΌμ΄λΈλ¬λ¦¬ μΈνΈλ‘ μ€νλ‘λνλ κ²μ Linkerdλ₯Ό ν΅ν΄ μ΄λ―Έ κ°λ₯νμΌλ©° Google, IBM λ° Lyftμ Istio λμ μΌλ‘ μ΄ λΆμΌμ λμμ΄ μΆκ°λμμ΅λλ€. ν¬λλΉ μνΈν IDλ₯Ό μν SPIFFE λ° κΈ°ν λ€μν κΈ°λ₯μ μΆκ°ν¨μΌλ‘μ¨ Istioλ μ°¨μΈλ λ€νΈμν¬ λ³΄μμ λ°°ν¬λ₯Ό λ¨μνν μ μμ΅λλ€.
"μ λ‘ νΈλ¬μ€νΈ" λ€νΈμν¬μμλ λͺ¨λ μνΈ μμ©μ΄ mTLS(μνΈ TLS)λ₯Ό ν΅ν΄ λ°μνλ―λ‘ κΈ°μ‘΄ λ°©νλ²½μ΄λ Kubernetes λ€νΈμν¬ μ μ± μ΄ νμνμ§ μμ μ μμ΅λλ€.
μ ν΅μ μΈ λ€νΈμνΉμμ ν΄λΌμ°λ λ€μ΄ν°λΈ 보μ μμΉμΌλ‘μ μ΄λ¬ν μ νμ μ ν΅μ μΈ λ³΄μ μ¬κ³ λ°©μμ κ°μ§ μ¬λλ€μκ² μ½μ§ μμ κ²μΌλ‘ μμλλ©° SPIFFEμ Evan Gilmanμ΄ μ΄ Zero Trust Networking μ± μ μ΄ λ©μ§ μ μΈκ³λ₯Ό μκ°νλ λ° μ κ·Ή κΆμ₯λ©λλ€.
Istio LTSκ° μΆμλμμΌλ©° νλ‘μ νΈλ 1.0 릴리μ€μ λΉ λ₯΄κ² μ κ·Όνκ³ μμ΅λλ€. μμ μ± λ²μ κ΄λ¦¬λ Kubernetes λͺ¨λΈκ³Ό λμΌν©λλ€. κ°λ³ APIκ° μ체 μν/λ² ν μμ μ± λ€μμ€νμ΄μ€μμ μμ μ μλ³νλ μμ μ μΈ μ½μ΄μ λλ€. μμΌλ‘ λͺ λ¬ λμ Istio μ±νμ΄ μ¦κ°ν κ²μΌλ‘ μμλ©λλ€.
Last updated
Was this helpful?