我在 Terraform Cloud for Business(免费版)上尝试了安全功能
做想做的事情
TFCB(Terraform Cloud For Business)的计划已经更新,即使在免费计划中也可以使用与安全相关的功能。此外,在以前的免费计划中,每个组织只能有5个用户,但现在限制已经变为500资源,并且没有人数限制,在试用时不再需要担心用户数量。
虽然我使用过OSS版本的Terraform,但还没用过TFCB,所以趁此机会尝试了一下。现在我将整理一些相关信息。
按照以下的步骤,总结具体的步骤(部分内容已经省略)。
必要工具
-
- Terminal
今回は Windows11 + WSL2 (Ubuntu) で行っています
Terraform CLI
version 1.1.0+
创建帐户
请从以下页面创建一个账号。
获取登录令牌
在终端上执行 “terraform login” 命令。是否要继续?屏幕上会显示这个提示,要求确认,请输入”yes”以继续。
在终端上会显示一个 URL(https://app.terraform.io/app/settings/tokens?source=terraform-login),请使用浏览器访问。
(您也可以从 TFCB 的首页点击用户图标,然后选择用户设置 → 令牌进行访问)
当「生成用户令牌」窗口出现时,请设置描述和有效期并点击「生成令牌」,令牌将显示并记下(请注意无法在以后进行确认)。
回到终端,输入你要求的内容“Token for app.terraform.io:”,接下来应该可以成功登录。
工作空间,项目创建
用HCL创建。
在终端中创建一个名为tfcb-test的目录,并使用以下内容创建一个名为provider.tf的文件。默认情况下,组织名称会变成用户名,所以请指定它。
terraform {
cloud {
organization = "{YOUR_ORGANIZATION_NAME}"
workspaces {
name = "{YOUR_WORKSPACE_NAME}"
}
}
}
执行”terraform init”命令会在指定的工作区名称下创建一个工作区。
目前,TFCB的初始设置已经完成!
先试着为一段时间内配置适当的资源。
请在创建 provider.tf 文件的同一目录中,创建一个名为 main.tf 的文件,其内容如下:
(这次我们将使用 Terraform 创建 Azure 资源)
# リソースグループの作成
resource "azurerm_resource_group" "example" {
name = "example"
location = "West Europe"
}
参考: https://registry.terraform.io/providers/hashicorp/azurerm/3.50.0/docs/resources/resource_group
参考链接:https://registry.terraform.io/providers/hashicorp/azurerm/3.50.0/docs/resources/resource_group
为了创建Azure资源,需要按照以下方式修改provider.tf。
terraform {
cloud {
organization = "{YOUR_ORGANIZATION_NAME}"
workspaces {
name = "{YOUR_WORKSPACE_NAME}"
}
}
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.50.0"
}
}
}
provider "azurerm" {
features {}
}
完成更改后,在终端上尝试运行 “terraform apply” 命令。资源应该会被顺利创建,没有出现特别问题。
然后,在TFCB的”项目和工作区”→{你的工作区名称}→”状态”中,你可以查看到创建的 tfstate 文件。
如果创建资源失败,请确认在Azure AD中检查自己的账户是否有创建资源组的权限!
TFCB 创建服务主体
暫時已經創建了資源,但由於使用了個人的 AAD 帳戶,考慮到 CI/CD 等情況,這並不理想。因此,我們需要創建一個 TFCB 專用的服務主體並將其設定為 TFCB 所使用。
服务主体可在Azure门户中创建。
在Azure Active Directory的“应用注册”中单击“新注册”,按照指示创建。
由于本次是使用Terraform创建资源组,请授予相应订阅的Contributor权限。创建后,会生成凭据,请留存(因为以后无法查看,请注意)。
在 TFCB 的 Project & Workspace → {YOUR_WORKSPACE_NAME} → Variables 中将认证信息注册为环境变量。由于已经通过个人用户账户进行了身份验证,因此需要将每个 Key 的 Value 更改为服务主体的值。
在保存配置之后,将main.tf的内容更改如下,并再次从终端输入terraform apply进行尝试。
# リソースグループの作成
resource "azurerm_resource_group" "example" {
name = "tfcbtest"
location = "West Europe"
}
如果资源组的名称更改为example -> tfcbtest,那就好了!
尝试使用安全功能
以下是TFCB的基本使用方法。现在我们可以尝试使用免费计划中新增的安全功能。
我們這次試試看使用 TFCB 提供的 Snyk 平台來尋找漏洞。
创建 Snyk 账号
从以下的页面创建。
与 TFCB 的整合
参考以下页面,设置相关到Workspace的关联。
完成设定后,创建故意被Synk指出的资源。将main.tf文件改为以下内容。
# リソースグループの作成
resource "azurerm_resource_group" "example" {
name = "tfcbtest"
location = "West Europe"
}
# ストレージアカウントの作成
resource "azurerm_storage_account" "example" {
name = "example"
resource_group_name = resource.azurerm_resource_group.example.name
location = resource.azurerm_resource_group.example.location
account_tier = "Standard"
account_replication_type = "LRS"
}
请尝试在更改后从终端执行terraform apply命令。 在终端上应该会显示类似以下内容的Snyk警告信息(****处为省略内容)。访问详细信息的URL可以确认存在的漏洞。
│ Snyk ⸺ Failed (Advisory)
│ Found:
1 medium severity issue(s).
1 low severity issue(s).
Severity threshold is set to low.
│ Details: https://app.snyk.io/org/****/project/3ce66379-0f2e-48ba-adef-3ddd054efad8/history/e9a7f517-0524-44dc-9c36-d14c0066082b
在 main.tf 中添加的存储账户资源,应该指出其复制配置为 LRS,并禁用了来自可信赖的 Azure 服务的访问!
由于还可以检测到其他的弱点,所以在基础架构建设时,能够在实际应用之前发现这些错误是很好的!
所以
我实际尝试了TFCB的新免费计划提供的安全功能。然而,需要注意的是,免费计划只能集成一个功能,如果还想使用其他功能,就必须升级到付费计划。
就是这样。