支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Klocworkとは?詳しく解説させ

Klocworkの概要について

ここでは、Klocworkについて解説させていただきます。
Klocworkはソースコードにあるバグを発見することができるツールです。 利用することでデバックやテスト工数を削減することが可能となるだけでなく、セキュリティ対策や品質担保ができるといった様々なメリットがあります。
Klocworkは丸紅情報システムズ株式会社が提供するテスト分析ツールで、静的テストツールに分類されます。同社では1965年以来コンピュータ、ネットワーク、情報システム等における最先端技術を基軸として、あらゆる産業のITライフサイクル全般に対するソリューションを提供するビジネスを展開しております。 具体的な事業内容としては、先端技術の発掘や開発、コンサルティングサービス、システム/ソフトウェア/ハードウェアの販売/レンタル、システム企画/設計/開発/保守、システムインテグレーション、クラウドソリューション及びデータセンターサービスの提供などとなります。

ソフトウェアテストには静的テストツールと動的テストツールが存在しますので、簡単に説明させていただきます。
静的テストは簡単にまとめるとプログラミング自体を動かさずに実行するテストで、WebサイトまたはWebアプリで一連のテストを実行し、データを生成するWebパフォーマンステストツールを指します。 これを使用すると、ブラウザにロードしなくてもWebサイトまたはWebアプリケーションをテストすることが可能であり、1つ以上のWebサイトまたはアプリケーションに対して同時に実行できる自動化された反復可能なプロセスです。 静的テストツールは、Webサイトのパフォーマンスデータから実用的な洞察を生成し、より効率的な開発プロセスを可能にすることからますます人気が高まっています。利用することでページの速度、遅延、エラーなどの指標を収集し、サイトのパフォーマンスに関する洞察を含むレポートを作成することができます。 また、開発者が変更を加えた後のWebサイトの回帰テストにも使用できます。 静的テストは、Webサイトの品質をチェックするために使用されるプロセスであり、自動または自動化されたソフトウェアの助けを借りて行うことができます。 静的テストは、以下のようなケースで役立ちます。 Webサイトのパフォーマンスを最適化すること、手動テストに費やす時間を削減すること、すべてのシステムがスムーズかつ効率的に実行されていることを確認して、ビジネスを改善すること、 サイトで実行する手動テストを減らすことで費用を節約することなどです。 特に近年ではテクノロジーの発展によりAIや自動化の技術が進化しており、それが静的テストツールが導入され高いパフォーマンスをみせております。
次に、動的テストとは、プログラムコードを動かしたうえでソフトウェアのバグ検出や品質評価、動作確認を行うテスト方法のことを指します。動的テストはシステム実行時のトレース情報の収集と解析を実施し、それらに関しての情報をまとめます。 動的テストは本文で説明させていただきましたような静的テストの補完関係にあり、互いに補う関係となります。

では、これらをふまえたうえでKlocworkの説明をさせていただきます。 Klocworkは、C、C++、Java、C#のプログラミング上の重大な欠陥を自動検出する静的ソフトウェア欠陥・脆弱性検証ツールとして知られております。 Klocworkでは高機能とパフォーマンスを搭載しており、高度な静的解析手法を用いて、品質と信頼性担保、セキュリティの脆弱性、保全性の問題など700種類以上の問題を検出することができるツールとして開発者を強力にサポートします。
それだけでなく開発者自身が実行できるデスクトップ解析と、開発者のコードを一括して解析するシステム解析の両面をサポートすることが可能です。Klocworkでは豊富なソフトウェアメトリクスで開発プロセスを管理することで安定した品質の維持はもとより、アーキテクチャの視覚化と最適化によってリファクタリングの推進を支援し、保守性の高い構造への見直しを実現します。 以上が簡単ではありますがKlocworkの概要に関する説明とさせていただきます。
さらに詳しくKlocworkについて解説させていただきますので、是非参考にしてみてください。

Klocworkの特徴について

Klocworkの特徴と機能について解説させていただきます。

セキュリティ

特徴の一点目が静的解析ツールでセキュリティの脆弱性を見つけることです。
KlocworkではDevOpsにおけるスムーズなセキュリティ検知のための機能を搭載しております。 また、それらのセキュリティは国際的に認知されたセキュリティスタンダードに準拠しているため、開発者は安心してテストを実行することができるようになります。 KlocworkではCI/CDツール、コンテナ、クラウドサービス、およびマシンプロビジョニングと統合されます。 これらのテクノロジーや環境は現在のIT業界においては必須となりますが、これらの環境において Klocworkを導入することで自動化されたセキュリティテストを実施できるという点は大きな強みとなるでしょう。
Klocworkで導入されている基準のセキュリティスタンダードはCWE(Common Weakness Enumeration)、OWASP(Open Web Application Security Project)、CERT(Computer Security Incident Response Team)、PCI DSS((Payment Card Industry Data Security Standard)、Security Technical Implementation Guide (STIG) 、およびISO/IEC TS17961となります。 それぞれについて簡単に解説させていただきます。

CWEは共通脆弱性タイプ一覧となります。簡単に説明させていただくと、 ソフトウェアにおけるセキュリティ上の弱点(脆弱性)の種類を識別するための共通の基準を目指しています。 1999年頃から米国政府の支援を受けた非営利団体のMITREが中心となり仕様策定が行われ、2006年3月に最初の原案が公開され、その後40を超えるベンダーや研究機関が協力して仕様改善や内容拡充が行われて2008年9月9日にCWEが公開されたという経緯を持ちます。 ソフトウェアの脆弱性が多種多様にわたり複雑化する中で、関係者の共通理解を獲得するために脆弱性の種類(脆弱性タイプ)の一覧を体系化してIDを付与し誰でも理解できるように提供しています。 例えばクロスサイト・スクリプティングという用語がありますが、様々な型がありどのような対策が違うかなどを関係者が理解するのは容易ではありません。 CWEではこれらの問題を解決するために脆弱性の種類(脆弱性タイプ)の一覧を体系化して提供しています。CWEを用いると、ソフトウェア開発者やセキュリティ専門家などにとって 「ソフトウェアのアーキテクチャ、デザイン、コードに内在する脆弱性に関して、共通の言葉で議論できるようになる。」「脆弱性検査ツールなど、ソフトウェアのセキュリティを向上させるための、ツールの標準の評価尺度として使用できる。」「脆弱性の原因を認識し、脆弱性の低減を行い、再発を防止するための共通の基準として活用できる。」というようなメリットがあります。
それぞれにCWE識別子(CWE-ID)を付与して階層構造で体系化しています。上位層に近いほど抽象的な脆弱性タイプを表し、下位層にいくほど具体的な脆弱性タイプや個々の脆弱性を表しています。 CWEにおける脆弱性タイプは、ビュー(View)、カテゴリー(Category)、脆弱性(Weakness)、複合要因(Compound Element)の4種類に分類され、具体的にはビューとして22個、カテゴリーとして105個、脆弱性として638個、複合要因として12個、合計777個の脆弱性タイプを確認することができます。

OWASPはWebをはじめとするソフトウェアのセキュリティ環境の現状、またセキュアなソフトウェア開発を促進する技術・プロセスに関する情報共有と普及啓発を目的としたプロフェッショナルの集まる、オープンソース・ソフトウェアコミュニティです。The OWASP Foundationは、NPO団体として全世界のOWASPの活動を支えております。 OWASP Japanは国内全域におけるチャプター設立支援や、特にチャプターのない地域での普及啓発など全国でのセキュリティ啓発活動を行なっているOWASPの組織です。 また、成果物や各種翻訳プロジェクトなど、グローバルのOWASPコミュニティと連携しています。成果物は、政府・行政機関、教育機関、企業・団体などで活用されております。

CERTはコンピュータセキュリティインシデントに対応する活動を行う組織体を指します。 これらはコンピュータセキュリティに関係する人為的事象で、意図的および偶発的なもの (その疑いがある場合) を含んでおり、例えば、リソースの不正使用、サービス妨害行為、データの破壊、意図しない情報の開示や、さらにそれらに至るための行為などがあります。 CERTはコンピューターインシデントが起きた時に救急出動をするチームとして使われることが多く、これらの概念は国際的なセキュリティ団体などではスタンダードとなっている用語の一つです。

PCI DSSは クレジットカード情報および取り引き情報を保護するために2004年12月、JCB・American Express・Discover・マスターカード・VISAの国際ペイメントブランド5社が共同で策定した、クレジット業界におけるグローバルセキュリティ基準となります。 これは、支払いカードを使用する際のデータの盗難から消費者を保護するために開発された一連のルールで、PCI DSS規格では、企業はカード会員データを保護し、ペイメントカード業界のデータセキュリティ規格以上のセキュリティレベルを維持する必要があります。ビジネスでPOS(Point-of-Sale)端末を使用している場合は、PCIDSS準拠のソフトウェアを使用してカード会員データを保存することが推奨されております。 ビジネスで仮想プライベートネットワーク(VPN)を使用している場合は、PCIDSS準拠のソフトウェアを利用することが推奨されております。

STIGは米国国防総省の国防情報システム局 (DISA) が作成した構成した、システムの強化と脅威の軽減のための技術的なガイダンスです。 STIGシステムへのアカウント・アクセスを制限することによって、コンピューターへの悪意のある攻撃に脆弱な情報、システム、およびソフトウェアをロックダウンするための技術的なガイダンスが含まれています。 STIGではセキュリティ技術実装のためのガイドなどを提供しており、アプリケーションセキュリティ、クラウドセキュリティ、制御相関識別子、ネットワークやワイヤレスセキュリティなど多くのトピックを提供しユーザーの安全なセキュリティ環境についての技術提供を実施しております。
Klocworkではこれらのセキュリティスタンダードに準拠したテクノロジーを提供しております。

DevOps対応

Klocworkの特徴の二点目としてDevOps対応となります。
DevOpsでは、CI/CDが非常に重要です。KlocworkではCI/CDパイプラインの一部として静的コード解析を簡単に含めることができます。CI/CDはCI(継続的インテグレーション)とCD(継続的デリバリー)の略語であり、ソフトウェア開発を高速化するため、ビルドやインテグレート、テストなどを自動化するためのツールとなります。
KlocworkにおけるDevOps対応の一点目が差分解析となります。 Klocworkでは、システムコンテキストデータを使用して、変更されたファイルのみを解析すると同時に、 システム全体が解析されたかのように差分解析結果を提供することができます。これにより、解析時間を短縮できます。
二点目が自動化となります。 自動化はDevOpsにおける重要なキーワードになることについてはすでに説明させていただいた通りとなります。コマンドラインインターフェイスは、ユーザーがコマンドを入力してオペレーティングシステムに直接命令を発行できるようにするユーザーインターフェイスの一種です。 これは、Linux、macOS、FreeBSDなどのUNIXライクなオペレーティングシステムを実行しているコンピュータで最も一般的に見られます。これらは、PowerShellコマンドラインインターフェイスを備えたMicrosoftWindows10でも使用されます。 Klocwork共通のコマンドラインインターフェイスがあり、Klocworkの欠陥データにはREST APIを介してアクセスできます。 また、すべての出力形式はXML、JSON、PDFなどの標準形式を使用します。
三点目がコンテナ化されたビルドを提供することです。 Klocworkは、コンテナ化されたクラウドビルドシステム内で実行でき、必要に応じてマシンインスタンスのプロビジョンニングを支援します。 コンテナ化によってソフトウェアのコードをライブラリやフレームワークなどの依存関係にあるすべてのコンポーネントとともにパッケージ化して利用することが可能です。 また、Klocworkではコード解析に内部または外部のクラウドサービスを使用するための最大限の柔軟性を提供します。 これにより既存もしくは新規のクラウドサービスなどを利用することが可能となり、合理的にかつ生産的にKlocworkの機能を活用することができるようになります。 以上がKlocworkの特徴であるDevOpsに関する説明とさせていただきます。

ダッシュボード機能

Klocworkの特徴の三点目としてダッシュボード機能があります。
Klocwork Portalダッシュボードは関係者がWebブラウザ経由でアクセスすることが可能であり、様々なデータを利用することが可能となります。 また、ダッシュボード機能は多くの情報を可視化し管理するだけでなく、様々なカスタマイズを実行することが可能です。 ダッシュボード機能では、プロジェクト固有のQAとセキュリティの目標およびルール構成を定義、設定し 可視化することが可能となります。 また、プロジェクトに必要であるアクセス許可や承認ワークフローを制御することが可能です。 ロジェクトの品質とコンプライアンスに関するトレンドデータとメトリックデータを表示することができます。
以上がダッシュボード機能に関する説明とさせていただきます。

シームレスな統合

Klocworkの特徴の四点目としてシームレスな統合となります。
ソフトウェア開発においてITの分野では、システムやツールなど複数のテクノロジーを組み合わせて利用する現場がほとんどです。開発者やユーザーからみてそれらを統合しスムーズに利用できるという点は大きなメリットの一つです。 Klocworkが提供する静的コード解析は他の開発ツールセットとシームレスに統合を実現しております。 Klocworkを利用することでシフトレフトの欠陥検出を行い、開発者トレーニングと生産性向上のためのツールとして活用できます。
具体例を出しながら説明させていただきます。 Klocworkでは、何百ものコンパイラーとクロスコンパイラーをすぐにサポートし、ビルドの統合を自動的に実行します。 コンパイラは、特定のプログラミング言語で書かれたソースコードを受け取り、それを機械語に変換するプログラムを指します。 また、Klocworkは代表的なIDE(Microsoft Visual Studio、Eclipse、IntelliJなどを含む)用のプラグインを 提供します。IDEは、さまざまなプログラミング言語でコードを開発およびデバッグするために使用されるソフトウェアエディタです。 IDEは、使いやすいインターフェイスを提供し、開発者のニーズに合わせてカスタマイズできるため、通常、開発者によって使用されます。 一部のIDEには、構文の強調表示、コードの補完、リファクタリングなどの機能を追加するためにインストールできるプラグインもあります。 KlocworkではあらゆるIDE用のプラグインを提供しておりシームレスに統合することが可能となりますので、 IDEや開発環境などのプラットフォームに影響を受けずにスムーズに利用することができるという点もメリットとなります。 Klocworkは開発者のために様々な機能を提供しておりますが、詳細なフィードバックとヘルプを与えてくれる機能は非常に重要です。 例えば欠陥やコーディング違反などが検出された場合、そのリスクに応じて識別されアラートがあがります。 それだけでなく、欠陥とコーディング違反の内容に応じて豊富なヘルプと修復に関するガイダンスと原因の詳細情報を受け取ることができるため、品質の改善に役立てることができるというメリットがあります。
以上が簡単ですがKlocworkの特徴のシームレスな統合に関する説明とさせていただきます。

まとめ

いかがでしたでしょうか? Klocworkについて解説させていただきましたので、参考にしていただけましたら幸いです。