VPC
보안
- 네트워크 ACL
- 보안 그룹
DNS 방화벽
- 규칙 그룹
- 도메인 목록
네트워크 방화벽
- 방화벽
- 방화벽 정책
- Network Firewall 규칙 그룹
- TLS 검사 구성
- 네트워크 방화벽 리소스 그룹
1. VPC 네트워크 ACL (Network ACL)
필수 항목:
- vpc_id: 네트워크 ACL이 속할 VPC ID (필수)
선택 항목:
- subnet_ids: 연결된 서브넷 IDs (선택적)
- egress: 아웃바운드 규칙 (선택적)
- ingress: 인바운드 규칙 (선택적)
리소스 이름: aws_network_acl
resource "aws_network_acl" "main_nacl" {
vpc_id = aws_vpc.main_vpc.id # 필수: VPC ID
# 옵션: 인바운드 규칙
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
rule_no = 100
action = "allow"
cidr_block = "0.0.0.0/0"
}
# 옵션: 아웃바운드 규칙
egress {
from_port = 0
to_port = 0
protocol = "-1"
rule_no = 200
action = "allow"
cidr_block = "0.0.0.0/0"
}
tags = {
Name = "MainNetworkACL"
}
}
2. 보안 그룹 (Security Group)
필수 항목:
- vpc_id: 보안 그룹이 속할 VPC ID (필수)
선택 항목:
- ingress: 인바운드 규칙 (선택적)
- egress: 아웃바운드 규칙 (선택적)
- tags: 태그 추가 (선택적)
리소스 이름: aws_security_group
resource "aws_security_group" "main_sg" {
vpc_id = aws_vpc.main_vpc.id # 필수: VPC ID
# 옵션: 인바운드 규칙
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
# 옵션: 아웃바운드 규칙
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "MainSecurityGroup"
}
}
3. 규칙 그룹 (Rule Group)
필수 항목:
- rule_group: 규칙 그룹의 정의 (필수)
- capacity: 규칙 그룹의 최대 처리량 (필수)
리소스 이름: aws_networkfirewall_rule_group
resource "aws_networkfirewall_rule_group" "main_rule_group" {
capacity = 1000 # 필수: 처리량
rule_group {
rules_source {
stateless_rules_and_custom_actions {
stateless_rules {
priority = 1
rule_definition {
match_attributes {
protocols = [6]
}
actions = ["aws:pass"]
}
}
}
}
}
tags = {
Name = "MainRuleGroup"
}
}
4. 도메인 목록 (Domain List)
필수 항목:
- domains: 도메인 목록 (필수)
리소스 이름: aws_networkfirewall_rule_group
resource "aws_networkfirewall_rule_group" "domain_list" {
capacity = 1000 # 필수: 처리량
rule_group {
rules_source {
rules_string = <<RULES
alert http any any -> any any (msg:"Example rule"; content:"example.com"; sid:1;)
RULES
}
}
tags = {
Name = "DomainRuleGroup"
}
}
5. 방화벽 (Network Firewall)
필수 항목:
- vpc_id: 방화벽이 연결될 VPC (필수)
- subnet_mappings: 방화벽이 배포될 서브넷 목록 (필수)
리소스 이름: aws_networkfirewall_firewall
resource "aws_networkfirewall_firewall" "main_firewall" {
name = "MainFirewall"
vpc_id = aws_vpc.main_vpc.id # 필수: 연결된 VPC
firewall_policy_arn = aws_networkfirewall_firewall_policy.main_firewall_policy.arn
subnet_mappings {
subnet_id = aws_subnet.public_subnet.id # 필수: 방화벽이 배포될 서브넷
}
tags = {
Name = "MainFirewall"
}
}
6. 방화벽 정책 (Firewall Policy)
필수 항목:
- firewall_policy: 방화벽 정책 정의 (필수)
리소스 이름: aws_networkfirewall_firewall_policy
resource "aws_networkfirewall_firewall_policy" "main_firewall_policy" {
name = "MainFirewallPolicy"
firewall_policy {
stateless_default_actions = ["aws:forward_to_sfe"]
stateless_fragment_default_actions = ["aws:forward_to_sfe"]
stateless_rule_group_references {
priority = 10
resource_arn = aws_networkfirewall_rule_group.main_rule_group.arn
}
}
tags = {
Name = "MainFirewallPolicy"
}
}
7. TLS 검사 구성 (TLS Inspection Configuration)
필수 항목:
- tls_inspection_configuration: TLS 검사 구성 (필수)
리소스 이름: aws_networkfirewall_tls_inspection_configuration
resource "aws_networkfirewall_tls_inspection_configuration" "main_tls_inspection" {
tls_inspection_configuration {
server_certificates {
certificate_arn = "arn:aws:acm:us-west-2:123456789012:certificate/abcd1234-56ef-78gh-90ij-klmnopqrstuv"
}
}
tags = {
Name = "MainTLSInspection"
}
}
8. 네트워크 방화벽 리소스 그룹 (Network Firewall Resource Group)
필수 항목:
- resource_group_name: 리소스 그룹 이름 (필수)
리소스 이름: aws_networkfirewall_resource_group
resource "aws_networkfirewall_resource_group" "main_resource_group" {
resource_group_name = "MainResourceGroup" # 필수: 리소스 그룹 이름
tags = {
Name = "MainResourceGroup"
}
}
'AWS' 카테고리의 다른 글
AWS VPC Transit G/W, 트래픽 미러링, VPC 래티스 리소스 (0) | 2024.10.22 |
---|---|
AWS VPN 가상 사설 네트워크, AWS가 확인한 액세스 리소스 (0) | 2024.10.22 |
AWS VPC 리소스 (0) | 2024.10.22 |
AWS S3 리소스 (0) | 2024.10.22 |
AWS DirectConnect 리소스 (0) | 2024.10.22 |