BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース インフラストラクチャ脆弱性スキャナーのCheckovがコンテキストアウェア評価を追加

インフラストラクチャ脆弱性スキャナーのCheckovがコンテキストアウェア評価を追加

原文(投稿日:2021/04/18)へのリンク

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ベンチマークの適用範囲は多くの分野に広がっている。

CIS benchmark coverage improvements with Checkov 2.0

Checkov 2.0によるCISベンチマークカバレッジの向上 (クレジット: Bridgecrew)

 

最新バージョンへのアップグレードは、pipbrewを介して、または最新のbridgecrewio/checkovコンテナーをpullすることで実行できる。Bridgecrewには、コミュニティのオフィスアワーSlackグループのサポートもある。

この記事に星をつける

おすすめ度
スタイル

BT