์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ์ค‘์ธ AWS ํด๋ผ์šฐ๋“œ IAM ์ดํ•ด์™€ ๋ณด์•ˆ

AWS ์ œ๋กœํŠธ๋Ÿฌ์ŠคํŠธ์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” IAM์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์„ธ๋ถ€์ ์ธ ๋‚ด์šฉ๊นŒ์ง€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹ค์ œ๋กœ ์–ด๋–ค ๋ถ€๋ถ„์ด ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ์–ด๋””๋ฅผ ๋”์šฑ ์‹ ๊ฒฝ์จ์•ผ ํ•˜๋Š”์ง€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(4.9) ์ˆ˜๊ฐ•ํ‰ 35๊ฐœ

์ˆ˜๊ฐ•์ƒ 443๋ช…

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

๋ณด์•ˆ
๋ณด์•ˆ
ํด๋ผ์šฐ๋“œ
ํด๋ผ์šฐ๋“œ
๋ณด์•ˆ
๋ณด์•ˆ
ํด๋ผ์šฐ๋“œ
ํด๋ผ์šฐ๋“œ

์ƒˆ์†Œ์‹

5 ๊ฐœ

  • ์•ˆ๋…•ํ•˜์„ธ์š”. ์ง€์‹๊ณต์œ ์ž ์ฒœ๊ฐ•๋ฏผ์ž…๋‹ˆ๋‹ค.

    ์ด๋ฒˆ์— "์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š” ๋„์ปค์™€ ์ปจํ…Œ์ด๋„ˆ"๋ผ๋Š” ๊ฐ•์˜๋ฅผ ์ถœ์‹œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (์˜คํ”ˆ์ผ์€ ์•„์ง ๋ฏธ์ •)

    ์ด์— ๋”ฐ๋ผ, ์•„๋ž˜ ๋ชฉ๋ก์˜ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ• ์ค‘์ด์‹  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ์˜ ๋งˆ์Œ์„ ๋‹ด์•„ ์ˆ˜๊ฐ•์ƒ ๋“ฑ๋ก ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

    1. ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์šฐ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

    2. ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ์ค‘์ธ AWS ํด๋ผ์šฐ๋“œ IAM ์ดํ•ด์™€ ๋ณด์•ˆ

    3. [DevOps] ๋น ๋ฅด๊ณ  ์•ˆ์ „ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ(CI/CD) ๋งŒ๋“ค๊ธฐ


    ๊ตฌ๊ธ€ ํผ์„ ํ†ตํ•ด ์ถœ์‹œ๋  ๊ฐ•์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•˜์‹œ๊ณ , ์–‘์‹์„ ์ฑ„์›Œ์„œ ์‹ ์ฒญ ์ฃผ์‹œ๋ฉด ์‹œ๊ฐ„ ๋˜๋Š” ๋Œ€๋กœ ์ถ”๊ฐ€ ์ง„ํ–‰ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
    ๋‹ค๋งŒ, ์‹ค์ œ ๊ฐ•์˜๊ฐ€ ์ถœ์‹œ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ˆ˜๊ฐ• ๋ชฉ๋ก์— ๋‚˜์˜ค์ง€ ์•Š์œผ๋‹ˆ ์ด ์ ์€ ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

    ํ•ญ์ƒ ์–‘์งˆ์˜ ๊ฐ•์˜๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0
  • ์ฒœ๊ฐ•๋ฏผ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ๏ฝฅ

    ์ˆ˜์ •๋จ

    ์•ˆ๋…•ํ•˜์„ธ์š”.

    ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ์ค‘์ธ AWS ํด๋ผ์šฐ๋“œ IAM ์ดํ•ด์™€ ๋ณด์•ˆ ๊ฐ•์‚ฌ ์ฒœ๊ฐ•๋ฏผ์ž…๋‹ˆ๋‹ค.

    ์ด๋ฒˆ์— ์‹ ๊ทœ ์ถœ์‹œ๋œ AWS EKS Pod Identity ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ์‹ค์Šต ์˜์ƒ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

    1. ์ถœ์‹œ ์ด์œ ์™€ ์ข‹์•„์ง„ ์ 

    2. ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹

    3. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ ์ฃผ์˜ํ•  ์ 

    ํฌ๊ฒŒ ๋ณด๋ฉด ์œ„ ๋‚ด์šฉ์ธ๋ฐ์š”.

    ์ œ๊ฐ€ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ์ง๋ฌด ๊ฐ„์˜ ์ดํ•ด๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋จธ๋ฆฌ๋ฅผ ์งœ๋‚ด์–ด ๋‹ค์–‘ํ•œ ์‚ฌ๋ก€๋„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.(๊ฑฐ์ฐฝํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค..)

    ๋ถˆํŽธํ–ˆ๋˜ IRSA๋ฅผ ๋’ค๋กœ ๋ณด๋‚ด๊ณ , AWS EKS Pod Identity์˜ ์‹œ๋Œ€๊ฐ€ ์˜ค๊ธธ ๋ฐ”๋ผ๋ฉฐ ์žฌ๋ฐŒ๊ฒŒ ์ฆ๊ฒจ์ฃผ์‹œ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0
  • ์•ˆ๋…•ํ•˜์„ธ์š”.

    ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ์ค‘์ธ AWS ํด๋ผ์šฐ๋“œ IAM ์ดํ•ด์™€ ๋ณด์•ˆ ๊ฐ•์‚ฌ ์ฒœ๊ฐ•๋ฏผ์ž…๋‹ˆ๋‹ค.

    ์˜ค๋Š˜๋ถ€๋กœ ๊ฐ•์˜๋ช…์—์„œ "1๋ถ€" ์ œ์™ธ ๋ฐ RolesAnywhere ๊ฐ•์˜๋ฅผ ์ถœ์‹œํ•˜๊ฒŒ ๋˜์–ด ์ƒˆ์†Œ์‹์„ ๋ฐœํ–‰ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

    ์‚ฌ์‹ค ํ˜„์žฌ ๊ฐ•์˜๋ฅผ 3๋ถ€๋กœ ์ƒ๊ฐ์„ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

    "1๋ถ€ ๊ธฐ์ดˆ, 2๋ถ€ ์‘์šฉ, 3๋ถ€ ๊ณต๊ฒฉ" ์ •๋„์˜€๋Š”๋ฐ์š”.

    "๊ณ ๋ฏผ์žˆ์–ด์š”"์— ๋‚จ๊ฒจ์ฃผ์‹  ๊ฒƒ์ฒ˜๋Ÿผ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ด ๋ถ€์กฑํ•˜๊ธฐ๋„ ํ•˜๊ณ (๋ฌผ๋ก  gitops๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธด ํ–ˆ์œผ๋‚˜), 2/3๋ถ€๊ฐ€ ์–ธ์ œ ๋‚˜์˜ฌ์ง€ ๊ธฐ์•ฝ๋„ ์—†๋Š” ์ƒํ™ฉ์—์„œ ๋„ˆ๋ฌด ๋ฌด์ฑ…์ž„ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

    ํ•˜์—ฌ, ๊ฐ•์˜๋ช…์—์„œ "1๋ถ€"๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์ œ์™ธํ•˜๊ณ , RolesAnywhere ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

    [RolesAnywhere]

    image
    ์œ„์™€ ๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ์ด๋ค„์ ธ ์žˆ๊ณ , RolesAnywhere ์ถœ์‹œ ์ดํ›„ ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ์‹ค๋ฌด์— ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•  ์ •๋„(๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ํ€„๋ฆฌํ‹ฐ๋กœ)๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

    ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ, ๋งˆ์น˜๋ฉฐ ๋ถ€๋ถ„์€ ์ผ๋‹จ ์˜์ƒ์„ ์ง€์›Œ ๋†“์€ ์ƒํƒœ์ธ๋ฐ, ์ œ๊ฐ€ ์ž„์˜๋กœ ์„น์…˜์„ ์ง€์šธ ์ˆ˜๊ฐ€ ์—†์–ด์„œ ๋ฌธ์˜ ํ›„ ๊น”๋”ํ•˜๊ฒŒ ๋ณด์ผ ์ˆ˜ ์žˆ๋„๋ก ์กฐ์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0
  • ์•ˆ๋…•ํ•˜์„ธ์š”.

    ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ์ค‘์ธ AWS ํด๋ผ์šฐ๋“œ IAM ์ดํ•ด์™€ ๋ณด์•ˆ - 1๋ถ€ ๊ฐ•์‚ฌ ์ฒœ๊ฐ•๋ฏผ์ž…๋‹ˆ๋‹ค.

    GitLab 16.4 ๋ฒ„์ „๋ถ€ํ„ฐ id_tokens๋ฅผ ์ „์—ญ(global)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ์ƒˆ์†Œ์‹์„ ๋ฐœํ–‰ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

    ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์ž‘ํ•  ๋‹น์‹œ์— ๋‚˜์™”์œผ๋ฉด ์ข‹์•˜๊ฒ ์ง€๋งŒ, ์ด์ œ๋ผ๋„ ๋‚˜์™”์œผ๋‹ˆ ๋‹คํ–‰์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์ „/ํ›„ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    [๋ณ€๊ฒฝ ์ „]
    job ๋ณ„๋กœ id_tokens๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Anchor ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ ํ–ˆ์Šต๋‹ˆ๋‹ค.

    .tf_base: &tf_base
      id_tokens:
        GITLAB_OIDC_TOKEN:
          aud: https://gitlab.com
      before_script:
        - source ./tf_base.sh # https://www.tutorialspoint.com/linux-source-command
        - cd ${TF_PATH}
    
    init:
      <<: *tf_base
      ...

    [๋ณ€๊ฒฝ ํ›„]
    ์ด์ œ job๋ณ„๋กœ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, default ํ‚ค์›Œ๋“œ ํ•˜์œ„์—์„œ ์ „์—ญ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

    default:
      ...
      id_tokens:
        GITLAB_OIDC_TOKEN:
          aud: https://gitlab.com
    
    .tf_base: &tf_base
      before_script:
        - source ./tf_base.sh # https://www.tutorialspoint.com/linux-source-command
        - cd ${TF_PATH}
    
    init:
      <<: *tf_base
      ...

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0
  • ์ฒœ๊ฐ•๋ฏผ๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€

    ๏ฝฅ

    ์ˆ˜์ •๋จ

    ์•ˆ๋…•ํ•˜์„ธ์š”.

    ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉ์ค‘์ธ AWS ํด๋ผ์šฐ๋“œ IAM ์ดํ•ด์™€ ๋ณด์•ˆ - 1๋ถ€ ๊ฐ•์‚ฌ ์ฒœ๊ฐ•๋ฏผ์ž…๋‹ˆ๋‹ค.

    aws-iam-gitops ํ”„๋กœ์ ํŠธ ๊ฐ•์˜๊ฐ€ ์™„๋ฃŒ๋˜์–ด ์ƒˆ์†Œ์‹์„ ๋ฐœํ–‰ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

    ๋จผ์ €, ๊ฐ„๋‹จํžˆ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

    1. GitLab CI/CD์— ๋Œ€ํ•œ ์ดํ•ด

    2. GitLab CI/CD <-> AWS keyless ์—ญํ•  ์‚ฌ์šฉ

    3. Terraform DevSecOps ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ

    ์ฒ˜์Œ์—๋Š” GitLab ๋˜๋Š” GitHub์˜ OIDC ํ† ํฐ์„ ํ†ตํ•œ AWS ์—ญํ•  ์—ฐ๋™๋งŒ์„ ๋‹ค๋ฃจ๋ ค ํ–ˆ์œผ๋‚˜, ๊ฐ€์žฅ ์ค‘์š”ํ•˜์ง€๋งŒ ์†๋Œ€๊ธฐ๋Š” ๊ป„๋„๋Ÿฌ์šด "๊ณต๊ธ‰๋ง ๋ณด์•ˆ"์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ์— ๋‹ค๋ฃจ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์— ์•„์˜ˆ ๋ณ„๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ค€๋น„ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

    '์•„, CI/CD ๋˜๋Š” gitops๋ผ๋Š”๊ฒŒ ์ด๋Ÿฐ๊ฑฐ๊ตฌ๋‚˜!' ์ •๋„๋กœ ์ ‘๊ทผํ•˜์—ฌ ์ดํ•ดํ•˜์‹ ๋‹ค๋ฉด, ์‹ค๋ฌด์—์„œ SAST, DAST๋ฅผ ์ ์šฉํ•˜์‹œ๋Š”๋ฐ ๋„์›€์ด ๋ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    0

์›” โ‚ฉ17,600

5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

โ‚ฉ88,000