OpenStack ํ๋ผ์ด๋น ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ๊ฐ์ ๋จธ์ ๋ค์ ๋คํธ์ํฌ ๋ณด์ ์ ์ฑ ์ ํ์คํํ๊ณ ์๋ํํ๊ธฐ ์ํ Terraform ๊ธฐ๋ฐ์ IaC repository
๋ณด์ ๊ทธ๋ฃน ํ ํ๋ฆฟ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ๊ณ ์ฝ๋ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์ผ๋ก ํ์ ๊ด๋ฆฌํฉ๋๋ค.
openstack-security-group/
โโโ .gitignore
โโโ provider.tf # OpenStack API ์ฐ๋ ๋ฐ ๋ก๊ทธ์ธ ์ค์ (ํ๊ฒฝ๋ณ์ ๋ฐฉ์)
โโโ security_groups.tf
โโโ README.md
๊ธฐ์กด ๋ฐฉ์์ ๋ฌธ์ ์ : ์๋ก์ด ํ๋ก์ ํธ ์์ฑ ์๋ง๋ค Bash ์คํฌ๋ฆฝํธ๋ก default ๋ณด์ ๊ทธ๋ฃน์ ๊ฐ์ ์์ ํ์ฌ ๊ด๋ฆฌ์ฉ ํฌํธ(SSH, Ping)๋ฅผ ์ผ๊ด ์คํํ์ต๋๋ค. ์ด๋ ์ธํ๋ผ์ ํ์ ๊ด๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ณ , ์ฌ์ฉ์๋ณ๋ก ์ ๋ฐํ ๋ณด์ ์ ์ฑ ์ ์ ๊ณตํ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
๊ฐ์ ๋ฐฉํฅ (IaC ๋์ ): Terraform์ ๋์ ํ์ฌ ๋ ๋ฆฝ๋ ์ธํ๋ผ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค. ์์ํ default ์ํ๋ ๋ณด์กดํ๋, ํ๋ซํผ ์ฌ์ฉ์๊ฐ ์ง๊ด์ ์ผ๋ก ์ดํดํ ์ ์๋ Description์ด ํฌํจ๋ 3์ข ์ ์ ์ญ ๊ณต์ (Shared) ๋ณด์ ๊ทธ๋ฃน ํ ํ๋ฆฟ์ ์ฝ๋๋ก ์ ์ธํ์ฌ ํ๋ซํผ ์์ฑ๋์ ๋ณด์์ฑ์ ๊ณ ๋ํํ์ต๋๋ค.
์ฌ์ฉ์๊ฐ ์ค์นด์ด๋ผ์ธ(Skyline) ์น ํฌํธ์์ VM์ ์์ฑํ ๋, ๋ชฉ์ ์ ๋ง๊ฒ ์ ์ฉํ ์ ์๋๋ก 3๊ฐ์ง ๊ณต์ ๋ณด์ ๊ทธ๋ฃน์ ์ ๊ณตํฉ๋๋ค.
- common-mgmt-sg (๊ธฐ๋ณธ ๊ด๋ฆฌ์ฉ ํ์ ๊ทธ๋ฃน)
-
๋ชฉ์ : ์ธํ๋ผ ๊ด๋ฆฌ์ ๋ฐ ์ ์ ๊ฐ VM์ ์๊ฒฉ ์ ์ํ๊ณ ๋คํธ์ํฌ ์ํ๋ฅผ ์ ๊ฒํ๊ธฐ ์ํ ์์ผ์ ๊ทธ๋ฃน์ ๋๋ค.
-
ํ์ฉ ๊ท์น (Inbound):
-
TCP 22: SSH ์๊ฒฉ ๋ณด์ ์ ์ ํ์ฉ (0.0.0.0/0)
-
ICMP: Ping ๋คํธ์ํฌ ํ์ธ ํธ๋ํฝ ํ์ฉ (0.0.0.0/0)
-
- web-traffic-sg (์น ์๋น์ค ์ ์ฉ ๊ทธ๋ฃน)
-
๋ชฉ์ : ์ ์ ๊ฐ ์น ์๋ฒ ๋๋ ์ธ๋ถ API ๋ฐฑ์๋ ์๋น์ค๋ฅผ ๊ตฌ๋ํ๋ VM์ ์ฅ์ฐฉํ๋ ๊ทธ๋ฃน์ ๋๋ค.
-
ํ์ฉ ๊ท์น (Inbound):
-
TCP 80: ์ผ๋ฐ HTTP ์น ํธ๋ํฝ ํ์ฉ (0.0.0.0/0)
-
TCP 443: ๋ณด์ HTTPS ์น ํธ๋ํฝ ํ์ฉ (0.0.0.0/0)
-
- db-access-sg (๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฉ ๋ณด์ ๊ทธ๋ฃน)
-
๋ชฉ์ : MariaDB, MySQL ๋ฑ ํต์ฌ ๋ฐ์ดํฐ db๋ฅผ ํด์ปค์ ์ธ๋ถ ๋ฌด์ฐจ๋ณ ๋์ ๊ณต๊ฒฉ(Brute Force)์ผ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค.
-
๋ณด์ ๊ทธ๋ฃน ์ฒด์ด๋ (Chaining) ์ ์ฉ:
- ์ธ๋ถ ์ธํฐ๋ท ์ ์ฒด(0.0.0.0/0)์ 3306 ํฌํธ๋ฅผ ๊ฐ๋ฐฉํ์ง ์๊ณ , ์ค์ง web-traffic-sg๋ฅผ ์ฅ์ฐฉํ ๋ฐฑ์๋ VM์ผ๋ก๋ถํฐ ์ค๋ ํธ๋ํฝ๋ง DB ์ ์์ ํ์ฉํ๋๋ก ๋์ ์ธํ๋ผ ์ฐ๋ ์ ์ฑ ์ ์๋ฆฝํ์ต๋๋ค.
-
ํ์ฉ ๊ท์น (Inbound):
- TCP 3306: ์ค์ง web-traffic-sg ๋ฆฌ์์ค ID ๊ธฐ๋ฐ ํํฐ๋ง ํ์ฉ
์คํ์คํ ์ ์ด ๊ถํ์ ๊ฐ์ง ํฐ๋ฏธ๋ ํ๊ฒฝ์์ ์๋ ์์๋๋ก ์ํํฉ๋๋ค.
# 0. ์คํ์คํ ์๋ฒ ํฐ๋ฏธ๋์์ git clone or pull
# (์ต์ด ์คํ ์)
git clone https://github.com/๊นํ๋ธ_ID/openstack-security-group.git
cd openstack-security-group
# (์ฝ๋๊ฐ ์์ ๋์์ ์)
git pull origin main
# 1. Kolla ๊ฐ์ํ๊ฒฝ ์ง์
๋ฐ ์คํ์คํ ์ด๋๋ฏผ ํ๊ฒฝ๋ณ์ ๋ก๋ (๋ก๊ทธ์ธ ์ ๋ณด ํ์ฌ)
source ~/kolla-venv/bin/activate
source ~/highcloud-admin-openrc.sh
# 2. ํ
๋ผํผ ์ด๊ธฐํ (์คํ์คํ ๊ณต์ ํ๋ก๋ฐ์ด๋ ํ๋ฌ๊ทธ์ธ ์๋ ๋ค์ด๋ก๋)
terraform init
# 3. ์ธํ๋ผ ์ค๊ณ๋ ๊ฒ์ฆ ๋ฐ ์์ฑ๋ ๋ฆฌ์์ค ๋ฏธ๋ฆฌ๋ณด๊ธฐ
terraform plan
# 4. ์ค๊ณ๋๋๋ก ์คํ์คํ API๋ฅผ ํธ์ถํ์ฌ 3๋ ์ ์ญ ๊ณต์ ๋ณด์ ๊ทธ๋ฃน ์ค๋ฌผ ๋ฐฐํฌ
terraform apply -auto-approve