You need to enable JavaScript to run this app.
导航
Terraform
最近更新时间:2025.03.10 19:23:39首次发布时间:2025.03.10 19:09:01
我的收藏
有用
有用
无用
无用

本文介绍 Terraform 的安装配置。

注意

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

Terraform 介绍

Terraform 是一个开源的 IT 基础设施编排工具,支持使用配置文件定义基础设施或应用。通过 Terraform,可以轻松的编排云防火墙的资源,例如创建和修改访问控制策略等。

前提条件

您已熟悉Terraform的基础知识,包括Terraform介绍安装Terraform以及Terraform工具指南

使用说明

使用示例

本文互联网边界防火墙为例,使用Terraform依次添加地址簿、添加互联网边界防火墙策略、修改优先级、到清理资源。

创建地址簿

地址簿名称

地址簿内容

地址簿类型

地址簿描述

tf-test-ecs-ip

10.0.0.1
10.0.0.2

IP地址簿

volc-terraform-test

resource "volcengine_cfw_address_book" "ip_address_book_1" {
  group_name   = "tf-test-ecs-ip"
  description  = "volc-terraform-test"
  group_type   = "ip"
  address_list = ["10.0.0.1","10.0.0.2"]
}

配置互联网访问控制策略

注意

  • 创建规则时,如果指定的优先级比已有的规则数量大,将会自动调整优先级到当前最大。如当前访问控制策略一共5条规则,其中一条规则优先级配置成10,云防火墙会自动调整将优先级调整为5。
  • 批量创建大量规则时,必须从高到低优先级(优先级数值从小到大)依次创建,并配置好depends_on关系,否则可能出现部分规则的优先级与配置文件不一致。

方向

规则优先级

访问源类型

访问源

访问目的类型

访问目的

协议类型

目的端口

生效时间

策略描述

动作

入站

1

IP

1.1.1.1

地址簿

tf-test-ecs-ip

TCP

80

始终生效

放行1.1.1.1

观察

入站

2

IP

0.0.0.0/0

IP

0.0.0.0/0

ANY

0/65535

始终生效

全阻断兜底策略

阻断

resource "volcengine_cfw_control_policy" "create_1" {
  action            = "accept"
  description       = "放行1.1.1.1"
  destination       = volcengine_cfw_address_book.ip_address_book_1.id
  destination_type  = "group"
  direction         = "in"
  priority          = 1
  proto             = "TCP"
  dest_port         = "80"
  dest_port_type    = "port"
  repeat_type       = "Permanent"
  source            = "1.1.1.1"
  source_type       = "net"
  status            = true
}
resource "volcengine_cfw_control_policy" "create_2" {
  action            = "deny"
  description       = "全阻断兜底策略"
  destination       = "0.0.0.0/0"
  destination_type  = "net"
  direction         = "in"
  priority          = 2
  proto             = "ANY"
  repeat_type       = "Permanent"
  source            = "0.0.0.0/0"
  source_type       = "net"
  status            = true
  depends_on = [volcengine_cfw_control_policy.create_1]
}

调整互联网访问控制策略优先级

注意

  1. 修改已有策略优先级,需要使用防火墙优先级资源进行调整。若直接修改防火墙优先级策略,Terraform不会进行校验,配置无法生效。
  2. 修改规则优先级时,建议单次单条修改优先级,若批量修改优先级容易导致优先级配置错误。

方向

规则优先级

访问源类型

访问源

访问目的类型

访问目的

协议类型

目的端口

生效时间

策略描述

动作

入站

1

IP

0.0.0.0/0

IP

0.0.0.0/0

ANY

0/65535

始终生效

全阻断兜底策略

阻断

入站

2

IP

1.1.1.1

地址簿

tf-test-ecs-ip

TCP

80

始终生效

放行1.1.1.1

观察

resource "volcengine_cfw_control_policy_priority" "prio_1" {
  direction = "in"
  rule_id   = volcengine_cfw_control_policy.create_2.rule_id
  new_prio  = 1
}

批量修改优先级错误示例

若需要将策略5(in5)和策略2(in2)的优先级批量修改分别改成优先级3和优先级4。

方向

规则优先级

访问源类型

访问源

访问目的类型

访问目的

协议类型

目的端口

生效时间

描述

动作

入站

1

IP

0.0.0.0/0

IP

1.1.1.1

ANY

0/65535

始终生效

in1

观察

入站

2

IP

0.0.0.0/0

IP

1.1.1.2

ANY

0/65535

始终生效

in2

观察

入站

3

IP

0.0.0.0/0

IP

1.1.1.3

ANY

0/65535

始终生效

in3

观察

入站

4

IP

0.0.0.0/0

IP

1.1.1.4

ANY

0/65535

始终生效

in4

观察

入站

5

IP

0.0.0.0/0

IP

1.1.1.5

ANY

0/65535

始终生效

in5

观察

入站

6

IP

0.0.0.0/0

IP

1.1.1.6

ANY

0/65535

始终生效

in6

观察

错误示例:

resource "volcengine_cfw_control_policy_priority" "prio_in_2" {
  direction = "in"
  rule_id   = volcengine_cfw_control_policy.in2.rule_id
  new_prio  = 4
}
resource "volcengine_cfw_control_policy_priority" "prio_in_5" {
  direction = "in"
  rule_id   = volcengine_cfw_control_policy.in5.rule_id
  new_prio  = 3
  depends_on = [volcengine_cfw_control_policy_priority.prio_in_2]
}

云防火墙系统将批量修改优先级分成两步修改。先修改策略5再修改策略2,则会出现以下状况:

  • 修改策略5优先级为3

方向

规则优先级

访问源类型

访问源

访问目的类型

访问目的

协议类型

目的端口

生效时间

描述

动作

入站

1

IP

0.0.0.0/0

IP

1.1.1.1

ANY

0/65535

始终生效

in1

观察

入站

2

IP

0.0.0.0/0

IP

1.1.1.2

ANY

0/65535

始终生效

in2

观察

入站

3

IP

0.0.0.0/0

IP

1.1.1.5

ANY

0/65535

始终生效

in5

观察

入站

4

IP

0.0.0.0/0

IP

1.1.1.3

ANY

0/65535

始终生效

in3

观察

入站

5

IP

0.0.0.0/0

IP

1.1.1.4

ANY

0/65535

始终生效

in4

观察

入站

6

IP

0.0.0.0/0

IP

1.1.1.6

ANY

0/65535

始终生效

in6

观察

  • 修改策略2优先级为4

方向

规则优先级

访问源类型

访问源

访问目的类型

访问目的

协议类型

目的端口

生效时间

描述

动作

入站

1

IP

0.0.0.0/0

IP

1.1.1.1

ANY

0/65535

始终生效

in1

观察

入站

2

IP

0.0.0.0/0

IP

1.1.1.5

ANY

0/65535

始终生效

in5

观察

入站

3

IP

0.0.0.0/0

IP

1.1.1.2

ANY

0/65535

始终生效

in2

观察

入站

4

IP

0.0.0.0/0

IP

1.1.1.3

ANY

0/65535

始终生效

in3

观察

入站

5

IP

0.0.0.0/0

IP

1.1.1.4

ANY

0/65535

始终生效

in4

观察

入站

6

IP

0.0.0.0/0

IP

1.1.1.6

ANY

0/65535

始终生效

in6

观察

实际结果:策略5变成优先级2,策略2变成优先级4。实际结果与预期不符。

清理资源

terraform destroy