Bridgecrewは、Checkovの最初の2.xバージョンを発表した。Checkovは、Infrastructure as Code(IaC)用のオープンソーススキャナーである。2.0リリースには、再設計されたバックエンドが含まれており、グラフベースになっているため、マルチリソースクエリをより適切に処理できる。250近くの新しいポリシーが追加され、カバレッジも増加している。
Terraform処理ロジックにグラフベースのフレームワークを採用することで、評価において環境のコンテキストを考慮することが可能になった。CheckovのトレーニングリポジトリTerraGoatにある、このサンプルTerraformは、MySQL RDSデータベースを生成する。
resource "aws_db_instance" "default" {
name = var.dbname
engine = "mysql"
option_group_name = aws_db_option_group.default.name
parameter_group_name = aws_db_parameter_group.default.name
db_subnet_group_name = aws_db_subnet_group.default.name
vpc_security_group_ids = ["${aws_security_group.default.id}"]
identifier = "rds-${local.resource_prefix.value}"
engine_version = "8.0" # Latest major version
instance_class = "db.t3.micro"
allocated_storage = "20"
username = "admin"
password = var.password
multi_az = false
}
上記のサンプルには、データベースがパブリックにアクセス可能かどうかを示すものはない。そのためには、スキャンでセキュリティグループとVPCを評価する必要がある。Checkovの以前のバージョンでは、セキュリティグループが公開されているかどうかを示すことはできる。しかし、影響を受けるインスタンスに関連付けることはできない。グラフベースのアプローチにより、バージョン2では、セキュリティグループに対する過度な許可によって公開されていて、影響を受けるインスタンスを特定できる。
これらのチェックの記述を容易にするために、新しいYAMLベースのポリシー定義言語が追加された。この言語には、等式、存在、包含、論理和、以内といったフィルタリングの構成要素が多数含まれている。
これらの新しいポリシーは、CKV2_
命名スキームを使用して、既存のCKV_
ポリシーと容易に区別する。GCP、Azure、AWSで利用できる新しいグラフチェックは、GitHubリポジトリ内で利用できる。AWS向けの次のポリシーにより、暗号化されたEBSボリュームのみがEC2インスタンスにアタッチされることが保証される。
metadata:
name: "Ensure that only encrypted EBS volumes are attached to EC2 instances"
category: "ENCRYPTION"
id: "CKV2_AWS_2"
definition:
and:
- or:
- cond_type: "connection"
resource_types:
- "aws_volume_attachment"
connected_resource_types:
- "aws_ebs_volume"
operator: "not_exists"
- and:
- cond_type: "attribute"
resource_types:
- "aws_ebs_volume"
attribute: "encrypted"
operator: "equals"
value: true
- cond_type: "connection"
resource_types:
- "aws_volume_attachment"
connected_resource_types:
- "aws_ebs_volume"
operator: "exists"
- cond_type: "filter"
attribute: "resource_type"
value:
- "aws_ebs_volume"
operator: "within"
このリリースには、Dockerfilesの設定ミスをスキャンする機能も含まれている。以下の含まれているポリシーに加えて、カスタムポリシーを作成することができる。このポリシーは、EBSボリュームが接続されているかどうかに関係なくEC2インスタンスを処理できる。暗号化されていないEBSボリュームを識別できるだけでなく、グラフのコンテキストを使って、接続されているEC2インスタンスを識別することもできる。
- Dockerfilesで
ADD
の代わりにCOPY
が使用されることを保証する HEALTHCHECK
命令がコンテナイメージに追加されていることを保証する- Dockerfileでアップデート命令が単独で使用されていないことを保証する
- コンテナのユーザーが作成されていることを保証する
- ポート22が晒されていないことを保証する
このリリースでは、CKV_
(Python)形式とCKV2_
(graph)形式の両方で、約250の新しいポリシーが追加された。これらの新しいポリシーにより、CISベンチマークの適用範囲は多くの分野に広がっている。
最新バージョンへのアップグレードは、pip
、brew
を介して、または最新のbridgecrewio/checkov
コンテナーをpullすることで実行できる。Bridgecrewには、コミュニティのオフィスアワーとSlackグループのサポートもある。