KR_K8s_Security - somaz94/DevOps-Engineer GitHub Wiki
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 ๋ ์ด๋ธ์ ๋ค์์คํ์ด์ค์ ์ค์ ํ๋ค.
NetworkPolicy์ Egress๋ Pod์์ ๋๊ฐ๋ ํธ๋ํฝ์ ์ ์ดํ๋ค.
๊ธฐ๋ณธ deny-all ์ ์ฑ ํ ํ์ํ ํธ๋ํฝ๋ง ํ์ฉํ๋ ํ์ดํธ๋ฆฌ์คํธ ๋ฐฉ์์ ๊ถ์ฅํ๋ค.
egress:
- to:
- namespaceSelector:
matchLabels:
name: kube-system
ports:
- protocol: UDP
port: 53- CIDR ๊ธฐ๋ฐ ์ ํ, Pod/Namespace Selector ์กฐํฉ ์ฌ์ฉ.
- Calico GlobalNetworkPolicy๋ ํด๋ฌ์คํฐ ์ ์ฒด ์ ์ฑ ์ ์ง์ํ๋ฉฐ, Cilium์ L7(HTTP) ๋ ๋ฒจ ํํฐ๋ง๊ณผ FQDN ๊ธฐ๋ฐ Egress๋ฅผ ์ ๊ณตํ๋ค.
IRSA๋ Pod๊ฐ AWS ๋ฆฌ์์ค์ ์ ๊ทผํ ๋ IAM Role์ ์ฌ์ฉํ๋๋ก ํ๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
- โ EKS ํด๋ฌ์คํฐ์ OIDC Provider ์์ฑ โ
- โก IAM Role์ Trust Relationship ์ค์ (OIDC Provider + ServiceAccount ์กฐ๊ฑด) โ
- โข ServiceAccount์
eks.amazonaws.com/role-arnannotation ์ถ๊ฐ โ - โฃ Pod ์์ฑ ์ Webhook์ด AWS_ROLE_ARN, AWS_WEB_IDENTITY_TOKEN_FILE ํ๊ฒฝ๋ณ์ ์ฃผ์ โ
- โค AWS SDK๊ฐ ์๋์ผ๋ก STS AssumeRoleWithWebIdentity ํธ์ถ.
์ฅ์ : Node IAM Role๋ณด๋ค ์ธ๋ฐํ ๊ถํ ์ ์ด, Pod๋ณ ๊ถํ ๋ถ๋ฆฌ, ๋ณด์ ๊ฐํ.
eksctl, Terraform์ผ๋ก ์๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ๋ฉฐ, S3, DynamoDB, RDS ์ ๊ทผ์ ํ์์ ์ด๋ค.
์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋ณด์ ์ค์บ์ CI/CD ํ์ดํ๋ผ์ธ๊ณผ ๋ฐํ์ ์์ชฝ์์ ์ํํด์ผ ํ๋ค.
- Trivy, Clair, Anchore๋ก ๋น๋ ์ ์ทจ์ฝ์ ์ค์บ, ์ฌ๊ฐ๋ ๊ธฐ์ค(Critical/High)์ผ๋ก ๋น๋ ์คํจ ์ฒ๋ฆฌ.
- Admission Webhook(Kyverno, OPA Gatekeeper)์ผ๋ก ๋ฐฐํฌ ์ ๊ฒ์ฆ, ์๋ช ๋์ง ์์ ์ด๋ฏธ์ง ์ฐจ๋จ(Sigstore/Cosign).
- ํน์ ๋ ์ง์คํธ๋ฆฌ๋ง ํ์ฉ, latest ํ๊ทธ ๊ธ์ง, ๋ฃจํธ ์ฌ์ฉ์ ์คํ ๊ธ์ง, privileged ์ปจํ ์ด๋ ์ฐจ๋จ.
Falco๋ก ๋ฐํ์ ์ด์ ํ์ ํ์ง, Aqua Security/Sysdig๋ก ํตํฉ ๋ณด์ ๊ด๋ฆฌ.
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 ์ํธํ.
๐ก ์ฉ์ด ์ค๋ช :
- ๋ณด์ ๊ด๋ จ ์ฉ์ด๋ค(PSS, PSA, RBAC, NetworkPolicy, IRSA, Sealed Secrets, External Secrets Operator, etcd ์ํธํ ๋ฑ)์ ๋ํ
- ์์ธํ ์ค๋ช ์ ๋ฌธ์ ์๋จ์ ์ฃผ์ ์ฉ์ด ํตํฉ ์ ๋ฆฌ > ๋ณด์ ๋ฐ ์ธ์ฆ ์น์ ์ ์ฐธ๊ณ ํ์ธ์.