我在 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 更改为服务主体的值。

スクリーンショット 2023-06-30 142515.png

在保存配置之后,将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的新免费计划提供的安全功能。然而,需要注意的是,免费计划只能集成一个功能,如果还想使用其他功能,就必须升级到付费计划。

就是这样。

广告
将在 10 秒后关闭
bannerAds