Source: Dev.to
๊ฐ์
- ์๋ธ๋ท ์์ค ๋ฐฉํ๋ฒฝ โ ๊ฐ๋ณ EC2 ์ธ์คํด์ค๊ฐ ์๋๋ผ ์๋ธ๋ท์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ๋ฌด์ํ(stateless) โ ์ธ๋ฐ์ด๋์ ์์๋ฐ์ด๋ ๊ท์น์ด ๋
๋ฆฝ์ ์ผ๋ก ํ๊ฐ๋๋ฉฐ, ๋ฐํ ํธ๋ํฝ์ ๋ช
์์ ์ผ๋ก ํ์ฉํด์ผ ํฉ๋๋ค.
- ALLOW ๋ฐ DENY ๊ท์น ์ง์ โ ๊ท์น ์์๊ฐ ์ค์ํฉ๋๋ค(์ซ์๊ฐ ๋ฎ์ ๊ฒ์ด ๋จผ์ ํ๊ฐ๋จ).
- ๊ธฐ๋ณธ NACL โ ๋ชจ๋ ํธ๋ํฝ์ ํ์ฉํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ NACL โ ๋ช
์์ ์ผ๋ก ํ์ฉํ์ง ์์ผ๋ฉด ๋ชจ๋ ํธ๋ํฝ์ ์ฐจ๋จํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
| ๊ธฐ๋ฅ | ์ค๋ช
|
|---|
| ๋ณดํธ ๊ณ์ธต | ํผ๋ธ๋ฆญ ๋ฐ ํ๋ผ์ด๋น ์๋ธ๋ท(์: ์น ์๋ฒ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, EKS ๋
ธ๋)์ ๋ณดํธํฉ๋๋ค. |
| ๋ฌด์ํ ํํฐ๋ง | ์๋ฐฉํฅ ํต์ ์ ์ํด ์ธ๋ฐ์ด๋์ ์์๋ฐ์ด๋ ๊ท์น์ด ๋ชจ๋ ์ผ์นํด์ผ ํฉ๋๋ค. |
| ๊ท์น ์ ํ | ALLOW์ DENY ํญ๋ชฉ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. |
| ๊ท์น ์ฐ์ ์์ | ๊ท์น ๋ฒํธ๊ฐ ๋ฎ์ ์์๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค(์: 100 โ 101 โ 102โฆ). |
| ๊ธฐ๋ณธ ๋์ | ๊ธฐ๋ณธ NACL์ ๋ชจ๋ ํธ๋ํฝ์ ํ์ฉํ๊ณ , ์ฌ์ฉ์ ์ ์ NACL์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐจ๋จํฉ๋๋ค. |
NACL ์๋ ๋ฐฉ์
- ์ฒจ๋ถ โ NACL์ ํ๋ ์ด์์ ์๋ธ๋ท์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ๋ฌด์ํ ํน์ฑ โ ํฌํธ์ ๋ํ ์ธ๋ฐ์ด๋ ํธ๋ํฝ์ ํ์ฉํ๋ฉด, ์๋ต ํธ๋ํฝ์ ์ํ ์์๋ฐ์ด๋ ๊ท์น๋ ๋ณ๋๋ก ์์ฑํด์ผ ํฉ๋๋ค.
- ๊ท์น ํ๊ฐ โ ํธ๋ํฝ๊ณผ ์ผ์นํ๋ ์ฒซ ๋ฒ์งธ ๊ท์น(๊ท์น ๋ฒํธ ๊ธฐ์ค)์ด ๋์์ ๊ฒฐ์ ํฉ๋๋ค.
- ๊ธฐ๋ณธ vs. ์ฌ์ฉ์ ์ ์ โ ๊ธฐ๋ณธ NACL์ ๋ชจ๋ ํธ๋ํฝ์ ํ์ฉํ๊ณ , ์ฌ์ฉ์ ์ ์ NACL์ ์ํ๋ ํธ๋ํฝ์ ๋ช
์์ ์ผ๋ก ํ์ฉํด์ผ ํ๋ฉฐ ๋๋จธ์ง๋ ์๋ฌต์ ์ผ๋ก ์ฐจ๋จ๋ฉ๋๋ค.
์์ ์๋๋ฆฌ์ค
ํผ๋ธ๋ฆญ ์๋ธ๋ท
| ๋ฆฌ์์ค | ํ์ฉ ํธ๋ํฝ |
|---|
| EC2 ์น ์๋ฒ | HTTP(80), HTTPS(443), SSH(22) |
| Application Load Balancer | ์์ ๋์ผ |
ํ๋ผ์ด๋น ์๋ธ๋ท
| ๋ฆฌ์์ค | ํ์ฉ ํธ๋ํฝ |
|---|
| ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ | ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์ ๋ด๋ถ ํธ๋ํฝ(3306) |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค | ์ฑ ์๋ธ๋ท์์ 3306 ํฌํธ ํธ๋ํฝ ํ์ฉ |
| EKS ์์ปค ๋
ธ๋ | ์๋ธ๋ท ๋ด ๋
ธ๋ ๊ฐ ํต์ |
| ์ฐธ๊ณ | ์ง์ ์ธํฐ๋ท ์ ๊ทผ ๋ถ๊ฐ; ๋ชจ๋ ์ธ๋ฐ์ด๋/์์๋ฐ์ด๋ ํธ๋ํฝ์ด ํํฐ๋ง๋ฉ๋๋ค. |
๋ณด์ ๊ทธ๋ฃน๊ณผ์ ๋น๊ต
| ํญ๋ชฉ | ๋ณด์ ๊ทธ๋ฃน | NACL |
|---|
| ๋ฒ์ | ์ธ์คํด์ค ์์ค | ์๋ธ๋ท ์์ค |
| ์ํ ์ ์ง | ์ํ ์ ์ง(๋ฐํ ํธ๋ํฝ ์๋ ํ์ฉ) | ๋ฌด์ํ(๋ฐํ ํธ๋ํฝ์ ๋ช
์์ ์ผ๋ก ํ์ฉํด์ผ ํจ) |
| ๊ท์น ์ ํ | ALLOW๋ง ๊ฐ๋ฅ | ALLOW์ DENY ๋ชจ๋ ๊ฐ๋ฅ |
| ๊ด๋ฆฌ | ์ธ์คํด์ค๋ณ ๊ท์น ๊ด๋ฆฌ๊ฐ ๊ฐ๋จ | ์๋ธ๋ท ์์ค ๊ณ ๊ธ ์ ์ด์ ์ ์ฉ |
์ํ ๊ท์น ์งํฉ
| ๊ท์น ๋ฒํธ | ๋ฐฉํฅ | ํ๋กํ ์ฝ | ํฌํธ ๋ฒ์ | ์ถ๋ฐ์ง/๋ชฉ์ ์ง | ๋์ |
|---|
| 100 | ์ธ๋ฐ์ด๋ | TCP | 80 | 0.0.0.0/0 | ALLOW |
| 110 | ์ธ๋ฐ์ด๋ | TCP | 443 | 0.0.0.0/0 | ALLOW |
| 120 | ์ธ๋ฐ์ด๋ | TCP | 22 | 0.0.0.0/0 | ALLOW |
| 1000 | ์์๋ฐ์ด๋ | ALL | ALL | 0.0.0.0/0 | ALLOW |
| * | * | * | * | * | DENY (์๋ฌต์ ) |
ํ: vpc_id, CIDR ๋ธ๋ก ๋ฐ ๊ท์น ๋ฒํธ๋ฅผ ํ๊ฒฝ์ ๋ง๊ฒ ์กฐ์ ํ์ธ์.
resource "aws_network_acl" "public_nacl" {
vpc_id = aws_vpc.main.id
tags = {
Name = "public-nacl"
}
}
resource "aws_network_acl_rule" "allow_http_in" {
network_acl_id = aws_network_acl.public_nacl.id
rule_number = 100
egress = false
protocol = "6" # TCP
rule_action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 80
to_port = 80
}
resource "aws_network_acl_rule" "allow_https_in" {
network_acl_id = aws_network_acl.public_nacl.id
rule_number = 110
egress = false
protocol = "6"
rule_action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 443
to_port = 443
}
resource "aws_network_acl_rule" "allow_ssh_in" {
network_acl_id = aws_network_acl.public_nacl.id
rule_number = 120
egress = false
protocol = "6"
rule_action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 22
to_port = 22
}
resource "aws_network_acl_rule" "allow_all_out" {
network_acl_id = aws_network_acl.public_nacl.id
rule_number = 1000
egress = true
protocol = "-1" # all protocols
rule_action = "allow"
cidr_block = "0.0.0.0/0"
from_port = 0
to_port = 0
}
์ฐธ๊ณ ์๋ฃ ๋ฐ ์ถ๊ฐ ์ฝ์๊ฑฐ๋ฆฌ
- GitHub ์ ์ฅ์:
- Dev.to ๋ธ๋ก๊ทธ ํฌ์คํธ:
- LinkedIn ๊ธฐ์ฌ:
- ์ด๋ ฅ์(Google Drive): (์ ํ ์ฌํญ)