【tfsec】拡張機能で「より身近」にセキュリティスキャンやってみた

2022.02.22

こんにちは!AWS事業本部コンサルティング部のたかくにです。

今回は、Visual Studio Codeの拡張機能で、「より身近」にtfsecを体験してみようと思います。

tfsecの基本的な使い方は、以下ブログをご参照ください。

結論

  • 「ローカル」と「身近」を掛けただけです
  • 「ローカルはVS Code、CICDパイプランはCLI」のパターンがオススメ
  • 回避コードの追記がとても便利!
  • VS Code以外の拡張機能の実装も期待

やってみた

事前準備

VPC周りとセキュリティグループを作成するコードを使用します。

vpc.yaml

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "3.12.0"
  # insert the 23 required variables here
  cidr = "10.0.0.0/16"
  name = "terraform-reintroduction"
  public_subnets = ["10.0.0.0/24", "10.0.1.0/24"]
  azs = ["ap-northeast-1a", "ap-northeast-1c"]
}

resource "aws_security_group" "allow_tls" {
  name        = "allow_tls"
  description = "Allow TLS inbound traffic"
  vpc_id      = module.vpc.vpc_id

  ingress {
    description      = "TLS from VPC"
    from_port        = 443
    to_port          = 443
    protocol         = "tcp"
    cidr_blocks      = [module.vpc.vpc_cidr_block]
  }

  egress {
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks      = ["0.0.0.0/0"]
    ipv6_cidr_blocks = ["::/0"]
  }

  tags = {
    Name = "allow_tls"
  }
}

インストール

まずは、VS Codeの拡張機能をインストールします。

スキャンしたいフォルダを開きます。

tfsecのサイドバーから「Run tfsec now」をクリックすれば、スキャンが開始されます。

構成要素

大きく分けて、「Findings Explorer」と「Findings Help」の2つで構成されています。

Findings Explorerとは

Findings Explorerでは、「重要度」、「ルール」、「どの部分」が参照できます。

特に、「どの部分」が的確にわかる点、魅力的ですね。

Findings Help

Findings Helpでは、「是正方法」が書いてあります。

GUIで、一元的に可視化できるのは大変便利だと思います。

検知回避の便利さ

検知されたルールは、「#tfsec:ignore:ルール名」をコメント追加することで、検知を回避されます。

ルール回避は、右クリックで簡単に、コメント追加できます。

また、検知回避の範囲を右クリックの場所でコントロールできます。

例えば、「aws-vpc-no-public-egress-sgr」を回避するには、ルールを右クリックし、「Ignore All Instances」をクリックします。

インバウンドのみでセキュリティグループを管理するケースもあるので、非常に便利だと思いました。

まとめ

今回は、拡張機能でより身近に、tfsecを体験してみました。

コード修正毎に、CLIで実行は大変なので、積極的に使ってみようと思います。

以上、AWS事業本部コンサルティング部のたかくにでした!