terrascan - クラウドネイティブインフラストラクチャをプロビジョニングする前に、インフラストラクチャ全体のコンプライアンスとセキュリティ違反をコードとして検出してリスクを軽減します。

(Detect compliance and security violations across Infrastructure as Code to mitigate risk before provisioning cloud native infrastructure.)

Created at: 2017-09-11 11:11:10
Language: Go
License: Apache-2.0

テラスカン

GitHub リリース ライセンス: Apache 2.0 PRへようこそ ティッカー 品質ゲートステータス AUR パッケージ コーデコフ ドキュメントのステータス 寄稿者誓約 GitHub のすべてのリリース

紹介

Terrascan は、コードとしてのインフラストラクチャ用の静的コードアナライザーです。テラスカンでは、次のことができます。

  • インフラストラクチャを、構成ミスのコードとしてシームレスにスキャンします。
  • プロビジョニングされたクラウド インフラストラクチャを監視して、ポスチャ ドリフトを引き起こす構成変更がないか監視し、セキュリティで保護されたポスチャに戻すことができます。
  • セキュリティの脆弱性とコンプライアンス違反を検出します。
  • クラウドネイティブインフラストラクチャをプロビジョニングする前にリスクを軽減します。
  • ローカルで実行したり、CI\CDと統合したりするための柔軟性を提供します。

リソース

テナブルコミュニティ👇に参加する

主な機能

クイックスタート

  1. 取り付ける
  2. スキャン
  3. 統合

ステップ1:インストール

Terrascan は複数のインストール方法をサポートしており、Docker イメージとしても利用できます。サポートされているすべてのプラットフォームのビルドの最新バージョンについては、Terrascanのリリースページを参照してください。ご使用のプラットフォームに適したバイナリを選択します。

ネイティブ実行可能ファイルとしてインストールする

$ curl -L "$(curl -s https://api.github.com/repos/tenable/terrascan/releases/latest | grep -o -E "https://.+?_Darwin_x86_64.tar.gz")" > terrascan.tar.gz
$ tar -xf terrascan.tar.gz terrascan && rm terrascan.tar.gz
$ install terrascan /usr/local/bin && rm terrascan
$ terrascan

ArchLinux / Manjaro にインストールするには、
AUR

ArchLinux と Manjaro のユーザーは、次の方法でインストールできます。

yay -S terrascan

インストール方法
brew

自作ユーザーは、次の方法でインストールできます。

$ brew install terrascan

ドッカーの画像

Terrascan は Docker イメージとしても利用でき、次のように使用できます。

$ docker run tenable/terrascan

詳細については、ドキュメントを参照してください。

ステップ2:スキャン

セキュリティの問題がないかコードをスキャンするには、次のコマンドを実行します (既定では Terraform をスキャンします)。

$ terrascan scan

: Terrascan は、スキャン中にエラーまたは違反が見つかった場合、エラーコードで終了します。

可能な終了コードのリスト

シナリオ 終了コード
スキャンの概要にエラーと違反がある 5
スキャンの概要にエラーはあるが、違反はない 4
スキャンの概要には違反がありますが、エラーはありません 3
スキャンの概要に違反やエラーがない 0
無効な入力によるコマンド エラーのスキャン アウト 1

ステップ 3: CI\CD との統合

Terrascan を CI/CD パイプラインに統合して、セキュリティのベスト プラクティスを適用できます。パイプラインとの統合については、ドキュメントを参照してください。

テラスキャンコマンド

このコマンドは、以下のオプションとともに使用できます。

terrascan

$ terrascan
Terrascan

Usage:
  terrascan [command]

Available Commands:
  help        Help about any command
  init        Initialize Terrascan
  scan        Detect compliance and security violations across Infrastructure as Code.
  server      Run Terrascan as an API server
  version     Terrascan version

Flags:
  -c, --config-path string   config file path
  -h, --help                 help for terrascan
  -l, --log-level string     log level (debug, info, warn, error, panic, fatal) (default "info")
  -x, --log-type string      log output type (console, json) (default "console")
  -o, --output string        output type (human, json, yaml, xml) (default "human")

Use "terrascan [command] --help" for more information about a command.

Terrascan ポリシーは、Rego ポリシー言語を使用して記述されます。すべてのregoには、ポリシーのメタデータを定義するJSONの「ルール」ファイルが含まれています。デフォルトでは、Terrascan は初めてのスキャン中に Terrascan リポジトリからポリシーをダウンロードします。ただし、最新のポリシーをダウンロードする場合は、初期化プロセスを実行する必要があります。初期化プロセスの詳細については、「使用方法」を参照してください。

注: scan コマンドは、ポリシーが見つからない場合、初期化プロセスを暗黙的に実行します。

ドッカーイメージの脆弱性

このフラグを使用して、Terrascanの出力の一部としてレジストリに報告された脆弱性を収集できます。現在、Terrascan は Elastic Container Registry (ECR)、Azure Container Registry、Google Container Registry、Google Artifact Registry をサポートしています。

--find-vuln

このフラグは、次のように IaC ファイルをスキャンするときに使用できます。

--find-vuln

$ terrascan scan -i <IaC provider> --find-vuln

レジストリの API で認証するように環境をセットアップする方法の詳細と説明については、使用方法のドキュメントを参照してください。

スキャンのカスタマイズ

デフォルトでは、Terrascan はすべてのポリシーに対して設定全体をスキャンします。ただし、Terrascan はポリシーとリソースの詳細な構成をサポートしています。

ファイル内インストルメンテーション設定ファイルの詳細については、ドキュメントサイトを参照してください。

今のところ、いくつかの簡単なヒント:

リソースのスキャン中にポリシーを除外する方法

リソースのスキャン中に特定のポリシー (ルール) をスキップするように Terrascan を構成できます。プラットフォームに応じて、次の手順を実行します。

テラフォーム

Terraform スクリプトを使用して、 という語句を含むコメントを挿入することでルールをスキップするように Terrascan を構成します。コメントは、以下の例に示すように、リソース内に含める必要があります。

"ts:skip=<RULENAME><SKIP_REASON>"

ティッカー

Kubernetes

Kubernetes yamls では、以下のスニペットに示すように注釈を追加することで、ポリシーをスキップするように Terrascan を構成できます。

K8s

特定のポリシーまたはリソースをスキャンに含める、またはスキャン対象から除外する方法

Terrascan 構成ファイルを使用して、スキャン全体に含める、またはスキャン全体から除外するポリシーを手動で選択します。これは、エッジのユースケースに適しています。「ファイル内」抑制オプションを使用して、選択したポリシーに対するテストから除外する必要があるリソースを指定します。これにより、ポリシーは、すべてのリソースではなく、特定のリソースに対してのみスキップされます。

設定

スキャン出力の例

Terrascanのデフォルトの出力は、スキャンされたIaCに存在する違反のリストです。サンプル出力:

スクリーンショット 2021-01-19 に 10 52 47 PM

テラスカンの建設

Terrascan can be built locally. This is helpful if you want to be on the latest version or when developing Terrascan. gcc and Go 1.19 or above are required.

$ git clone git@github.com:tenable/terrascan.git
$ cd terrascan
$ make build
$ ./bin/terrascan

独自のドッカーを構築するには、次の例(Alpine Linux)を参照してください。

FROM golang:alpine AS build-env

RUN apk add --update git

RUN git clone https://github.com/tenable/terrascan && cd terrascan \
  && CGO_ENABLED=0 GO111MODULE=on go build -o /go/bin/terrascan cmd/terrascan/main.go

テラスカンの開発

Terrascanの開発と貢献についての詳細は、貢献ガイドを参照してください。

行動規範

私たちは、オープンで包括的なコミュニティを持つことが私たち全員に利益をもたらすと信じています。このプロジェクトはコントリビューター行動規範とともにリリースされていることに注意してください。このプロジェクトに参加することにより、あなたはその条件に従うことに同意するものとします。

ライセンス

Terrascan は Apache 2.0 ライセンスの下でライセンスされています

スターゲイザー

スターゲイザーズ@tenable/テラスカン

フォーク

フォーク@tenable/テラスカン