ISMS-P 2.8.5๋ ์์ค ํ๋ก๊ทธ๋จ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ ํํ๊ณ ์ด์ํ๊ฒฝ๊ณผ ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๋๋ก ์๊ตฌํฉ๋๋ค. ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ VCS ๊ธฐ๋ฐ ์ ๊ทผํต์ ์ Git ๋ธ๋์น ๋ณดํธ ์ ์ฑ ์ ํตํด ์์ค์ฝ๋๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
ISMS-P 2.8.5 ์์ค ํ๋ก๊ทธ๋จ ๊ด๋ฆฌ ์๊ตฌ์ฌํญ
"์์ค ํ๋ก๊ทธ๋จ์ ์ธ๊ฐ๋ ์ฌ์ฉ์๋ง์ด ์ ๊ทผํ ์ ์๋๋ก ๊ด๋ฆฌํ๊ณ , ์ด์ํ๊ฒฝ์ ๋ณด๊ดํ์ง ์๋ ๊ฒ์ ์์น์ผ๋ก ํ์ฌ์ผ ํ๋ค."
์์ค ํ๋ก๊ทธ๋จ ๊ด๋ฆฌ ๋ฏธํก์ผ๋ก ๋ฐ์ํ ์ค์ ์ฌ๊ณ
ํธ์ํฐ์ ๋น๋ฐ ์์ค์ฝ๋ ์ผ๋ถ๊ฐ GitHub์ 3๊ฐ์๊ฐ ๊ณต๊ฐ๋๋ ์ฌ๊ณ ๋ฐ์. ๋ด๋ถ ์ง์์ด ์ค์ ๋๋ ์๋์ ์ผ๋ก ๊ณต๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ๋ก๋ํ์ฌ ๋ณด์ ์ทจ์ฝ์ ๋ ธ์ถ ๋ฐ ์ ์๊ถ ์นจํด ์ฐ๋ ค๊ฐ ๋ฐ์ํ์ต๋๋ค.
๐ก ๊ตํ: Git ๋ฆฌํฌ์งํ ๋ฆฌ ์ ๊ทผ๊ถํ ์๊ฒฉ ๊ด๋ฆฌ, ๋ฏผ๊ฐ ์ฝ๋ ๊ฐ์ง ์์คํ ํ์
Git์ ์๋ธ๋ชจ๋ ๊ธฐ๋ฅ ์ทจ์ฝ์ ์ผ๋ก ์
์์ ๋ฆฌํฌ์งํ ๋ฆฌ clone ์ ์๊ฒฉ ์ฝ๋ ์คํ(RCE) ๊ฐ๋ฅ.
git clone --recurse-submodules ๋ช
๋ น์ด๋ก
์
์ฑ ์คํฌ๋ฆฝํธ๊ฐ .git ๋๋ ํ ๋ฆฌ์ ๊ธฐ๋ก๋์ด ์คํ๋ฉ๋๋ค.
๐ก ๊ตํ: Git ํด๋ผ์ด์ธํธ ์ต์ ๋ฒ์ ์ ์ง, ์ ๋ขฐํ ์ ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ clone ์ฃผ์
Terraform์์ ์์ค ํ๋ก๊ทธ๋จ ๊ด๋ฆฌ๊ฐ ์๋ฐ๋๋ ์ํฉ
# State - ๋ก์ปฌ ํ์ผ๋ก ๊ด๋ฆฌ (์ํ!)
terraform {
# backend ๋ฏธ์ค์
}
# ๋ฏผ๊ฐ ์ ๋ณด ํ๋์ฝ๋ฉ (์ํ!)
resource "aws_db_instance" "main" {
password = "SuperSecret123!"
}
State ํ์ผ์ด ๋ก์ปฌ์ ํ๋ฌธ ์ ์ฅ โ ๋ฏผ๊ฐ ์ ๋ณด ๋ ธ์ถ ์ํ
# S3 Backend - ์ํธํ + ์ ๊ธ
terraform {
backend "s3" {
bucket = "state-bucket"
encrypt = true
use_lockfile = true
}
}
# Secrets Manager ์ฐธ์กฐ
password = data.aws_secretsmanager_secret_version.db.secret_string
State ํ์ผ ์ํธํ + ๋ฒ์ ๊ด๋ฆฌ โ ๊ท์ ์ค์ ์ถฉ์กฑ
AWS ์๊ฒฉ์ฆ๋ช
์ด Provider์ ํ๋์ฝ๋ฉ๋๊ณ ,
terraform.tfstate๊ฐ ๋ก์ปฌ์ ๋ณด๊ด๋์ด
ํ์๊ด๋ฆฌ ๋ฐ ์ ๊ทผํต์ ๋ฏธํก ์ํ์
๋๋ค.
ํ์๊ด๋ฆฌ ์์คํ ์์ด ๋ก์ปฌ์๋ง ์์ค์ฝ๋ ๋ณด๊ด
State ํ์ผ ์ํธํ ๋ฐ ์ ๊ธ ๋ฏธ์ ์ฉ
๋ฏผ๊ฐ ์ ๋ณด(Credentials)๊ฐ ์์ค์ฝ๋์ ํฌํจ
์์ค์ฝ๋ ์ ๊ทผ๊ถํ ๊ด๋ฆฌ ๋ฏธ์ํ
IaC ์ฝ๋ ๋ถ์ ๊ธฐ๋ฐ ๋ฐฐํฌ ์ ์ ๊ฒ
๋ฐํ์ ๋ชจ๋ํฐ๋ง ๋ฐ ์ด์ํ์ ํ์ง
์ฆ์ ์ ์ฉ ๊ฐ๋ฅํ ๊ถ์ฅ ์ค์
๋ก์ปฌ State ๊ด๋ฆฌ + ๋ฏผ๊ฐ์ ๋ณด ํ๋์ฝ๋ฉ
S3 Backend + Secrets Manager + VCS-driven ์ํฌํ๋ก์ฐ
๐ก ํต์ฌ: S3 Backend์ encrypt = true์
use_lockfile = true๋ฅผ ์ค์ ํ๋ฉด
State ํ์ผ์ด ์ํธํ๋๊ณ ๋์ ์ ๊ทผ์ด ๋ฐฉ์ง๋ฉ๋๋ค. ๋ฏผ๊ฐ์ ๋ณด๋ ์ ๋ ์ฝ๋์ ํ๋์ฝ๋ฉํ์ง ์๊ณ Secrets Manager๋ฅผ ์ฐธ์กฐํด์ผ ํฉ๋๋ค.
ISMS-P ์ฌ์ฌ ์ฆ์ ๋ฐ ์ ๊ธฐ ๋ณด๊ณ
์ผ๊ฐ
๋ฏผ๊ฐ์ ๋ณด ํ์ง ์๋ฆผ
์ฃผ๊ฐ
์์ค์ฝ๋ ๋ณด์ ํํฉ ์์ฝ
์๊ฐ
ISMS-P ์ฆ์ ๋ฆฌํฌํธ
๋ฐ์ก ์ฑ๋
์ ์ฅ์
๊ธฐ์กด ๋๊ตฌ๊ฐ ๋์น๋ ์ ๊ฒ ์์ญ
๋จ์ ํจํด ๋งค์นญ
password = "..." ์ ๊ท์ ํ์งํ๊ณ: Backend ์ค์ ์ ์ ์ฑ ๊ฒ์ฆ ๋ถ๊ฐ, VCS ์ฐ๋ ๋ฐ ๋ธ๋์น ๋ณดํธ ์ํ ํ์ธ ๋ถ๊ฐ
IaC ์ ์ฒด ๋ถ์ + VCS ์ฐ๋ + State ๋ณด์ ํตํฉ
์ฐจ๋ณ์ : ์์ค์ฝ๋-State-๋ฐฐํฌ ์ ๊ณผ์ ๋ณด์ ์ฒด๊ณ ํ์ง โ ์กฐ์น โ ์ฆ์ ์๋ํ