KR_K8s_Security - somaz94/DevOps-Engineer GitHub Wiki

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ณด์•ˆ & ์ปดํ”Œ๋ผ์ด์–ธ์Šค (Q36-Q40)

๋ณด์•ˆ & ์ปดํ”Œ๋ผ์ด์–ธ์Šค (36~40๋ฒˆ)


Q36. Pod Security Standards(PSS)์™€ PSA์˜ enforce/audit/warn ๋ชจ๋“œ ์ฐจ์ด๋Š”?

Pod Security Standards๋Š” 3๊ฐ€์ง€ ์ •์ฑ… ๋ ˆ๋ฒจ์„ ์ œ๊ณตํ•œ๋‹ค:

  • Privileged(์ œํ•œ ์—†์Œ), Baseline(์•Œ๋ ค์ง„ ๊ถŒํ•œ ์ƒ์Šน ๋ฐฉ์ง€), Restricted(๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ).

Pod Security Admission(PSA)์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ ˆ๋ฒจ์—์„œ ์ ์šฉ๋˜๋ฉฐ 3๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ์žˆ๋‹ค:

  • enforce(์œ„๋ฐ˜ ์‹œ Pod ์ƒ์„ฑ ๊ฑฐ๋ถ€), audit(์œ„๋ฐ˜ ๋กœ๊ทธ ๊ธฐ๋ก, ์ƒ์„ฑ ํ—ˆ์šฉ), warn(์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ , ์ƒ์„ฑ ํ—ˆ์šฉ).

์‹ค๋ฌด์—์„œ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ warn, ์Šคํ…Œ์ด์ง•์€ audit, ํ”„๋กœ๋•์…˜์€ enforce๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Baseline์œผ๋กœ ์‹œ์ž‘ํ•ด ์ ์ง„์ ์œผ๋กœ Restricted๋กœ ์ „ํ™˜ํ•˜๋ฉฐ, pod-security.kubernetes.io/enforce: restricted ๋ ˆ์ด๋ธ”์„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์„ค์ •ํ•œ๋‹ค.


Q37. Network Policy์˜ Egress ๊ทœ์น™๊ณผ DNS ํ—ˆ์šฉ ํŒจํ„ด์€?

NetworkPolicy์˜ Egress๋Š” Pod์—์„œ ๋‚˜๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ œ์–ดํ•œ๋‹ค.

๊ธฐ๋ณธ deny-all ์ •์ฑ… ํ›„ ํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ๋งŒ ํ—ˆ์šฉํ•˜๋Š” ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•œ๋‹ค.

DNS ํ—ˆ์šฉ ํ•„์ˆ˜ ํŒจํ„ด:

egress:
  - to:
    - namespaceSelector:
        matchLabels:
          name: kube-system
    ports:
    - protocol: UDP
      port: 53

ํŠน์ • ์™ธ๋ถ€ API๋งŒ ํ—ˆ์šฉ:

  • CIDR ๊ธฐ๋ฐ˜ ์ œํ•œ, Pod/Namespace Selector ์กฐํ•ฉ ์‚ฌ์šฉ.
  • Calico GlobalNetworkPolicy๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ์ •์ฑ…์„ ์ง€์›ํ•˜๋ฉฐ, Cilium์€ L7(HTTP) ๋ ˆ๋ฒจ ํ•„ํ„ฐ๋ง๊ณผ FQDN ๊ธฐ๋ฐ˜ Egress๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

Q38. IRSA(IAM Roles for Service Accounts)์˜ ๋™์ž‘ ์›๋ฆฌ์™€ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์€?

IRSA๋Š” Pod๊ฐ€ AWS ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๋•Œ IAM Role์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

๋™์ž‘ ์›๋ฆฌ:

  • โ‘  EKS ํด๋Ÿฌ์Šคํ„ฐ์— OIDC Provider ์ƒ์„ฑ โ†’
  • โ‘ก IAM Role์— Trust Relationship ์„ค์ •(OIDC Provider + ServiceAccount ์กฐ๊ฑด) โ†’
  • โ‘ข ServiceAccount์— eks.amazonaws.com/role-arn annotation ์ถ”๊ฐ€ โ†’
  • โ‘ฃ Pod ์ƒ์„ฑ ์‹œ Webhook์ด AWS_ROLE_ARN, AWS_WEB_IDENTITY_TOKEN_FILE ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฃผ์ž… โ†’
  • โ‘ค AWS SDK๊ฐ€ ์ž๋™์œผ๋กœ STS AssumeRoleWithWebIdentity ํ˜ธ์ถœ.

์žฅ์ : Node IAM Role๋ณด๋‹ค ์„ธ๋ฐ€ํ•œ ๊ถŒํ•œ ์ œ์–ด, Pod๋ณ„ ๊ถŒํ•œ ๋ถ„๋ฆฌ, ๋ณด์•ˆ ๊ฐ•ํ™”.

eksctl, Terraform์œผ๋กœ ์ž๋™ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๋ฉฐ, S3, DynamoDB, RDS ์ ‘๊ทผ์— ํ•„์ˆ˜์ ์ด๋‹ค.


Q39. Container ๋ณด์•ˆ ์Šค์บ”๊ณผ Admission Controller ํ†ตํ•ฉ ์ „๋žต์€?

์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ณด์•ˆ ์Šค์บ”์€ CI/CD ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๋Ÿฐํƒ€์ž„ ์–‘์ชฝ์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

CI/CD ๋‹จ๊ณ„:

  • Trivy, Clair, Anchore๋กœ ๋นŒ๋“œ ์‹œ ์ทจ์•ฝ์  ์Šค์บ”, ์‹ฌ๊ฐ๋„ ๊ธฐ์ค€(Critical/High)์œผ๋กœ ๋นŒ๋“œ ์‹คํŒจ ์ฒ˜๋ฆฌ.

๋Ÿฐํƒ€์ž„ ๋‹จ๊ณ„:

  • Admission Webhook(Kyverno, OPA Gatekeeper)์œผ๋กœ ๋ฐฐํฌ ์ „ ๊ฒ€์ฆ, ์„œ๋ช…๋˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€ ์ฐจ๋‹จ(Sigstore/Cosign).

์ •์ฑ… ์˜ˆ์‹œ:

  • ํŠน์ • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋งŒ ํ—ˆ์šฉ, latest ํƒœ๊ทธ ๊ธˆ์ง€, ๋ฃจํŠธ ์‚ฌ์šฉ์ž ์‹คํ–‰ ๊ธˆ์ง€, privileged ์ปจํ…Œ์ด๋„ˆ ์ฐจ๋‹จ.

Falco๋กœ ๋Ÿฐํƒ€์ž„ ์ด์ƒ ํ–‰์œ„ ํƒ์ง€, Aqua Security/Sysdig๋กœ ํ†ตํ•ฉ ๋ณด์•ˆ ๊ด€๋ฆฌ.


Q40. Secrets ์•”ํ˜ธํ™”์™€ Sealed Secrets vs External Secrets Operator ๋น„๊ต๋Š”?

Kubernetes Secret์€ ๊ธฐ๋ณธ์ ์œผ๋กœ etcd์— ํ‰๋ฌธ ์ €์žฅ๋˜๋ฏ€๋กœ ์•”ํ˜ธํ™”๊ฐ€ ํ•„์ˆ˜๋‹ค.

์˜ต์…˜ ๋น„๊ต:

etcd ์•”ํ˜ธํ™” (EncryptionConfiguration):

  • kube-apiserver ์„ค์ •์œผ๋กœ etcd ์ €์žฅ ์‹œ ์•”ํ˜ธํ™”, KMS(AWS/GCP) ํ†ตํ•ฉ ๊ฐ€๋Šฅ, ํ‚ค ๋กœํ…Œ์ด์…˜ ๋ณต์žก.

Sealed Secrets (Bitnami):

  • ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ SealedSecret์„ Git ์ €์žฅ ๊ฐ€๋Šฅ, ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ณตํ˜ธํ™” ํ›„ Secret ์ƒ์„ฑ, GitOps ์นœํ™”์ , ๋‹จ์ผ ํด๋Ÿฌ์Šคํ„ฐ ์ข…์†.

External Secrets Operator:

  • AWS Secrets Manager, Vault, GCP Secret Manager์™€ ๋™๊ธฐํ™”, ์ค‘์•™ ์ง‘์ค‘์‹ ๊ด€๋ฆฌ, ์ž๋™ ๋กœํ…Œ์ด์…˜, ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ์ง€์›, ์™ธ๋ถ€ ์˜์กด์„ฑ.

์„ ํƒ ๊ธฐ์ค€: GitOps ํ™˜๊ฒฝ์€ Sealed Secrets, ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ/์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๋Š” External Secrets Operator, ๊ฐ„๋‹จํ•œ ํ™˜๊ฒฝ์€ etcd ์•”ํ˜ธํ™”.

๐Ÿ’ก ์šฉ์–ด ์„ค๋ช…:


โš ๏ธ **GitHub.com Fallback** โš ๏ธ