IRSA

AWS EKS ์Šคํ„ฐ๋”” 6์ฃผ์ฐจ - Security

  • kkumtree

2023-06-04T06:56:52+09:00

์ด๋ฒˆ์—๋Š” ๋ณด์•ˆ์„ ์œ„ํ•œ ์ธ์ฆ ๋ฐ ์ธ๊ฐ€, ๊ทธ๋ฆฌ๊ณ  IRSA๋ฅผ ์ค‘์‹ฌ์œผ๋กœ EKS์˜ ๋ณด์•ˆ์— ๋Œ€ํ•ด ํ•™์Šตํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

kops ์Šคํ„ฐ๋”” ๋•Œ์—๋Š” ์ž˜ ๋ชฐ๋ž๋Š”๋ฐ, RBAC ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณต๊ธฐํ•˜๋‹ค๋ณด๋‹ˆ…

  • [4-1] projected Volume
  • [4-2] AWS Load Balancer Controller IRSA ๋ฐ LB Pod mutating

์œ„์˜ ๋‘ ๊ฐ€์ง€๊ฐ€ ์ค‘์š”ํ•œ ํŒŒํŠธ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
Network(2์ฃผ์ฐจ)๊ฐ€ ๋งค๋ฒˆ ๋ญ”๊ฐ€ ์ผ๋ถ€๊ฐ€ ์•„๋ฆฌ์†กํ•˜์˜€๋‹ค๋ฉด
Security๋Š” ๋ณต๊ธฐํ•˜๋‹ค๊ฐ€ ์ด๋ก ์ ์œผ๋กœ๋Š” ๊ฐ„๋‹จ(๊ณผ์—ฐ?)ํ•ด๋ณด์—ฌ๋„
์‹ค์ œ ๊ตฌ๋™๋ฐฉ์‹ ์ดํ•ด ์ž์ฒด๊ฐ€ ์ดˆ๋ฐ˜์— ์•ˆ๋˜์„œ, ์‚ฌํ˜ ๋‚จ์ง“ ๊ฑธ๋ฆฐ ๋•์— ๋” ์–ด๋ ค์› ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ ์™ธ

  1. myeks-bastion-2์— ์ ‘์† ์‹œ, ํ•จ๊ป˜ ์ง„ํ–‰ํ•  ๋•Œ๋Š” ssh {Public IP}๋กœ ์ž˜ ์ ‘์†๋˜๋Š” ๊ฑธ ๋ดค๋Š”๋ฐ ์ •์ž‘ ํ˜ผ์ž ํ•  ๋• ์ ‘์†์ด ๋˜์ง€์•Š์•˜์Šต๋‹ˆ๋‹ค.
    • Amazon Linux์—์„œ๋Š” ssh ec2-user@{Public IP}๋กœ ์ ‘์†ํ•ด์•ผํ•จ
      (ํ•„์š”ํ•œ ๊ฒฝ์šฐ sshํ‚ค๋„ ํฌํ•จ)
    • AWS Public AMI์—์„œ ์ œ๊ณต๋˜๋Š” Ubuntu AMI์˜ ๊ฒฝ์šฐ,
      ubuntu@{Public IP}๋กœ ์ ‘์†๊ฐ€๋Šฅ
    • ์ถ”์ •: ๊ณต์œ ๋œ ๋จธ์‹ ์— ๋‹ค๋ฅธ ์„ค์ •์ด ์ด์Šˆ๊ฐ€ ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ •๋ฉ๋‹ˆ๋‹ค. ssh failure 1 ssh failure 2
  2. IAM User(testuser)๋Š” ์›น์ฝ˜์†”์—์„œ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ์•„๋‹ˆ๋ฉด, ์•„๋ž˜์ฒ˜๋Ÿผ detach ํ•œ๋‹ค๋Š” ๋А๋‚Œ์œผ๋กœ ์ˆœ์ฐจ์  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
      • list-attached-role-policies && detach-role-policy
      • list-access-keys && delete-access-key
      • delete-user delete user with cli
  3. CLI๋กœ IAM Trust Relationship ์กฐํšŒ
    • ์›น ์ฝ˜์†”์— ๊ตณ์ด ๋“ค์–ด๊ฐ€์•ผํ•˜๋‚˜ ํ•˜๊ณ , ๋ฌธ๋“ ํ˜ธ๊ธฐ์‹ฌ์— ์‹œ๋„ํ•˜๋‹ค๊ฐ€ ์‹œ๊ฐ„์ด ๋‚ ์•„๊ฐ”์Šต๋‹ˆ๋‹ค.
    • ๊ฒฐ๋ก : ํ•˜๋“œ์ฝ”์–ดํ•œ ํŒŒ์‹ฑ..
      • jq -r '.[].status.roleARN' | rev | cut -d '/' -f1 | rev
      • chatGPT์—๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ต์ • ๋ฐ›์•˜์ง€๋งŒ, ํƒํƒ์น˜ ์•Š์Œ..
        jq -r '.[].status.roleARN' | grep -oE '[^/]+$'
        iam trust relationship with cli

1. ์‹ค์Šต ํ™˜๊ฒฝ ๋ฐฐํฌ

  • ๋ชจ์˜๊ณต๊ฒฉ(?) ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด 2๊ฐœ์˜ bastion ์„œ๋ฒ„๊ฐ€ ๊ตฌ์„ฑ๋œ ํ™˜๊ฒฝ ๋ฐฐํฌ
  • p8s ๋ฐ grafana์˜ ๊ฒฝ์šฐ, ์„ ํƒ์ ์œผ๋กœ ๋ฐฐํฌํ•ด๋„ ๋˜์„œ ๊ธฐ์ˆ  ์ƒ๋žต
curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/K8S/eks-oneclick5.yaml

# ์ดํ•˜ ์ค‘๋žต

# CERT_ARN(ACM)์˜ ๊ฒฝ์šฐ์—๋Š” /etc/profile์— ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ €์žฅ์„ ์•ˆํ•ด๋‘ฌ์„œ  
# ์„ธ์…˜์ด ๋งŒ๋ฃŒ๋˜๋ฉด, ๋‹ค์‹œ ์žฌ์„ค์ • ํ•„์š”

CERT_ARN=`aws acm list-certificates --query 'CertificateSummaryList[].CertificateArn[]' --output text`
echo $CERT_ARN

2. k8s ์ธ์ฆ/์ธ๊ฐ€

  • .kube/config ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜
    • cluster: k8s API ์„œ๋ฒ„ ์ ‘์†์ •๋ณด
    • users: API ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ์œ ์ € ์ธ์ฆ์ •๋ณด ๋ชฉ๋ก
    • contexts: cluster๋ฐ user๋ฅผ ๋งคํ•‘(์กฐํ•ฉ)ํ•œ ์ •๋ณด

kubeconfig

kkumtree

Source code on GitHub

ยฉ 2025 kkumtree and contributors All rights reserved.
Licensed under
CC BY-NC-ND 4.0