์ค๋ฌด์์ ์ฌ์ฉ์ค์ธ AWS ํด๋ผ์ฐ๋ IAM ์ดํด์ ๋ณด์
AWS ์ ๋กํธ๋ฌ์คํธ์ ๊ทผ๊ฐ์ ์ด๋ฃจ๊ณ ์๋ IAM์ ๋ํด ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ๋ถ๋ถ๋ถํฐ ์ธ๋ถ์ ์ธ ๋ด์ฉ๊น์ง ๋ฐฐ์ธ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ค์ ๋ก ์ด๋ค ๋ถ๋ถ์ด ์ทจ์ฝํ ์ ์๋์ง, ์ด๋๋ฅผ ๋์ฑ ์ ๊ฒฝ์จ์ผ ํ๋์ง ๋ฐฐ์ธ ์ ์์ต๋๋ค.
์๊ฐ์ 443๋ช
๋์ด๋ ์ด๊ธ
์๊ฐ๊ธฐํ ๋ฌด์ ํ

์๋ ํ์ธ์. ์ง์๊ณต์ ์ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
์ด๋ฒ์ "์ฒ์ ์์ํ๋ ๋์ปค์ ์ปจํ ์ด๋"๋ผ๋ ๊ฐ์๋ฅผ ์ถ์ํ๋ ค๊ณ ํฉ๋๋ค. (์คํ์ผ์ ์์ง ๋ฏธ์ )
์ด์ ๋ฐ๋ผ, ์๋ ๋ชฉ๋ก์ ๊ฐ์๋ฅผ ์๊ฐ ์ค์ด์ ๋ถ๋ค๊ป ๊ฐ์ฌ์ ๋ง์์ ๋ด์ ์๊ฐ์ ๋ฑ๋ก ์ด๋ฒคํธ๋ฅผ ์งํํ๋ ค๊ณ ํฉ๋๋ค.
์ค๋ฌด์์ ์ฌ์ฉ์ค์ธ AWS ํด๋ผ์ฐ๋ IAM ์ดํด์ ๋ณด์
[DevOps] ๋น ๋ฅด๊ณ ์์ ํ ์ดํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ(CI/CD) ๋ง๋ค๊ธฐ
๊ตฌ๊ธ ํผ์ ํตํด ์ถ์๋ ๊ฐ์ ๋ด์ฉ์ ํ์ธํ์๊ณ , ์์์ ์ฑ์์ ์ ์ฒญ ์ฃผ์๋ฉด ์๊ฐ ๋๋ ๋๋ก ์ถ๊ฐ ์งํ ์์ ์ ๋๋ค.
๋ค๋ง, ์ค์ ๊ฐ์๊ฐ ์ถ์๋๊ธฐ ์ ๊น์ง๋ ์๊ฐ ๋ชฉ๋ก์ ๋์ค์ง ์์ผ๋ ์ด ์ ์ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.ํญ์ ์์ง์ ๊ฐ์๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉ์ค์ธ AWS ํด๋ผ์ฐ๋ IAM ์ดํด์ ๋ณด์ ๊ฐ์ฌ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
์ด๋ฒ์ ์ ๊ท ์ถ์๋ AWS EKS Pod Identity ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช ๊ณผ ์ค์ต ์์์ ์ถ๊ฐํ์ต๋๋ค.
์ถ์ ์ด์ ์ ์ข์์ง ์
๋ด๋ถ ๋์ ๋ฐฉ์
๋ง์ด๊ทธ๋ ์ด์ ์ ์ฃผ์ํ ์
ํฌ๊ฒ ๋ณด๋ฉด ์ ๋ด์ฉ์ธ๋ฐ์.
์ ๊ฐ ์ค์ํ๊ฒ ์๊ฐํ๋ ์ง๋ฌด ๊ฐ์ ์ดํด๋ฅผ ๋์ด๊ธฐ ์ํด ๋จธ๋ฆฌ๋ฅผ ์ง๋ด์ด ๋ค์ํ ์ฌ๋ก๋ ์ค๋นํ์ต๋๋ค.(๊ฑฐ์ฐฝํ์ง ์์ต๋๋ค..)
๋ถํธํ๋ IRSA๋ฅผ ๋ค๋ก ๋ณด๋ด๊ณ , AWS EKS Pod Identity์ ์๋๊ฐ ์ค๊ธธ ๋ฐ๋ผ๋ฉฐ ์ฌ๋ฐ๊ฒ ์ฆ๊ฒจ์ฃผ์๋ฉด ์ข๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉ์ค์ธ AWS ํด๋ผ์ฐ๋ IAM ์ดํด์ ๋ณด์ ๊ฐ์ฌ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
์ค๋๋ถ๋ก ๊ฐ์๋ช ์์ "1๋ถ" ์ ์ธ ๋ฐ RolesAnywhere ๊ฐ์๋ฅผ ์ถ์ํ๊ฒ ๋์ด ์์์์ ๋ฐํํ๊ฒ ๋์ต๋๋ค.
์ฌ์ค ํ์ฌ ๊ฐ์๋ฅผ 3๋ถ๋ก ์๊ฐ์ ํ๊ณ ์์์ต๋๋ค.
"1๋ถ ๊ธฐ์ด, 2๋ถ ์์ฉ, 3๋ถ ๊ณต๊ฒฉ" ์ ๋์๋๋ฐ์.
"๊ณ ๋ฏผ์์ด์"์ ๋จ๊ฒจ์ฃผ์ ๊ฒ์ฒ๋ผ ์ค์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ๋ถ๋ถ์ด ๋ถ์กฑํ๊ธฐ๋ ํ๊ณ (๋ฌผ๋ก gitops๋ฅผ ์ถ๊ฐํ๊ธด ํ์ผ๋), 2/3๋ถ๊ฐ ์ธ์ ๋์ฌ์ง ๊ธฐ์ฝ๋ ์๋ ์ํฉ์์ ๋๋ฌด ๋ฌด์ฑ ์ํ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
ํ์ฌ, ๊ฐ์๋ช ์์ "1๋ถ"๋ผ๋ ๋จ์ด๋ฅผ ์ ์ธํ๊ณ , RolesAnywhere ๋ด์ฉ์ ์ถ๊ฐํ๊ฒ ๋์ต๋๋ค.
[RolesAnywhere]

์์ ๊ฐ์ ๋ด์ฉ์ผ๋ก ์ด๋ค์ ธ ์๊ณ , RolesAnywhere ์ถ์ ์ดํ ์ง๊ธ๊น์ง ์ฌ์ฉํ ๊ฒฝํ์ ํ ๋๋ก ์ค๋ฌด์ ๋ฐ๋ก ์ ์ฉ ๊ฐ๋ฅํ ์ ๋(๋ผ๊ณ ์๊ฐํ๋ ํ๋ฆฌํฐ๋ก)๋ก ๋ง๋ค์์ต๋๋ค.์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค. ์ถ๊ฐ๋ก, ๋ง์น๋ฉฐ ๋ถ๋ถ์ ์ผ๋จ ์์์ ์ง์ ๋์ ์ํ์ธ๋ฐ, ์ ๊ฐ ์์๋ก ์น์ ์ ์ง์ธ ์๊ฐ ์์ด์ ๋ฌธ์ ํ ๊น๋ํ๊ฒ ๋ณด์ผ ์ ์๋๋ก ์กฐ์นํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉ์ค์ธ 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 ...๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์.
์ค๋ฌด์์ ์ฌ์ฉ์ค์ธ AWS ํด๋ผ์ฐ๋ IAM ์ดํด์ ๋ณด์ - 1๋ถ ๊ฐ์ฌ ์ฒ๊ฐ๋ฏผ์ ๋๋ค.
aws-iam-gitops ํ๋ก์ ํธ ๊ฐ์๊ฐ ์๋ฃ๋์ด ์์์์ ๋ฐํํ๊ฒ ๋์ต๋๋ค.
๋จผ์ , ๊ฐ๋จํ ์ค๋ช ๋๋ฆฌ๋ฉด, ์๋์ ๊ฐ์ ๋ด์ฉ์ ๋ฐฐ์ฐ๊ฒ ๋ฉ๋๋ค.
GitLab CI/CD์ ๋ํ ์ดํด
GitLab CI/CD <-> AWS keyless ์ญํ ์ฌ์ฉ
Terraform DevSecOps ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ
์ฒ์์๋ GitLab ๋๋ GitHub์ OIDC ํ ํฐ์ ํตํ AWS ์ญํ ์ฐ๋๋ง์ ๋ค๋ฃจ๋ ค ํ์ผ๋, ๊ฐ์ฅ ์ค์ํ์ง๋ง ์๋๊ธฐ๋ ๊ป๋๋ฌ์ด "๊ณต๊ธ๋ง ๋ณด์"์ ๋ํด ํ ๋ฒ์ ๋ค๋ฃจ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ ์์ ๋ณ๋ ํ๋ก์ ํธ๋ฅผ ์ค๋นํด๋ดค์ต๋๋ค.
'์, CI/CD ๋๋ gitops๋ผ๋๊ฒ ์ด๋ฐ๊ฑฐ๊ตฌ๋!' ์ ๋๋ก ์ ๊ทผํ์ฌ ์ดํดํ์ ๋ค๋ฉด, ์ค๋ฌด์์ SAST, DAST๋ฅผ ์ ์ฉํ์๋๋ฐ ๋์์ด ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.






