コンテナとマイクロサービスによって、ソフトウェアの作り方が急速に変わりつつある。しかし、どんな変化にも問題はつきものだ。コンテナが目の前にあるとき、それを誰が作ったのか、その中で何が動くのかを知りたいだろう。この基本的な問題を解決するために、Google, JFrog, Red Hat, IBM, Black Duck, Twistlock, Aqua Security, そしてCoreOSの計8社が今日(米国時間10/12)、共同のオープンソースプロジェクトGrafeas※を発表した(※: ギリシア語で“scribe, 書記官”の意味)。その目的は、ソフトウェアのサプライチェーンを検査し統轄するための標準的な方法を確立することだ。
併せてGoogleは、もうひとつの新しいプロジェクト、Kritis※を立ち上げた(※: ギリシア語で“judge, 鑑定人”の意味…Kubernetesの成功以来、Googleの新しいオープンソースプロジェクトにはほかの言葉を使えなくなったのだ!)。Kritisは、Kubernetesのクラスターをデプロイするとき、コンテナに一定のプロパティを強制する。
Grafeasは、コードのデプロイとビルドのパイプラインに関するすべてのメタデータを集めるための、APIの集合だ。そしてそのために、コードの原作者や出所、各コード片のデプロイ履歴〜デプロイ時の記録、どのようなセキュリティスキャンをパスしたか、どんなコンポーネントを使っているか(そして各コンポーネントの既知の脆弱性)、QAからの承認の有無、などの記録をキープする。そうすると、新しいコードをデプロイする前にGrafeasのAPIを使ってこれらの情報をすべてチェックでき、それが(得られた情報の範囲内で)脆弱性なしと認定されていたら、プロダクションに放り込める。
一見するとこれは、平凡すぎる感じがしないでもないが、でもこんなプロジェクトのニーズは確かにある。継続的インテグレーションや分散化、マイクロサービス、どんどん増えるツールセット、そして各種バズワードの奔流、といった動向の中でエンタープライズは、自分たちのデータセンターで実際に何が起きているのかを知ることに苦労している。今動かしているソフトウェアの本性を知らずに、セキュリティやガバナンスを云々しても空しい。そしてデベロッパーが使うツールは統一されていないから、そこから得られるデータもまちまちだ。そこでGrafeasは、どんなツールでも一定の標準化された、業界全員が合意しているデータ集合が得られるようにする。
Googleのオープンソースプロジェクトの多くがそうであるように、Grafeasも、この問題のGoogle自身の対処方法を模倣している。規模が大きくて、しかもコンテナやマイクロサービスを早くから採用しているGoogleは、業界全体の問題になる前にこれらの問題を数多く体験している。Googleによる本日の発表によると、Grafeasの基本的な内容は、Google自身がそのビルドシステムのために開発したベストプラクティスを反映している。
そのほかのパートナーたちも全員が、このプロジェクトにいろんなおみやげを持参している。しかしたとえばJFrogは、同社のXray APIにこのシステムを実装するつもりだ。Red Hatは、同社のコンテナプラットホームOpenShiftのセキュリティとオートメーションを強化するためにこれを導入し、CoreOSは同社のKubernetesプラットホームTectonicにこれを統合する。
Grafeasの初期のテスターの中には、Shopifyがいる。同社は現在、一日に約6000のコンテナをビルドし、それらが33万点の画像を同社のメインのコンテナレジストリに保存する。Grafeasがあると、たとえば、今どのコンテナがプロダクションで使われているか、それはいつレジストリからダウンロードされたか、その中ではどのパッケージが動いているのか、そして、コンテナの中のコンポーネントのどれかに既知の脆弱性はないか、などが分かる。
Shopifyは、今日の発表声明の中でこう言っている: “Grafeasによってコンテナの正確なメタデータが得られるので、セキュリティチームがこれらの質問に答えられるようになり、またShopifyでわれわれがユーザーに届けるソフトウェアの検査やライフサイクル管理に、適切な肉付けがなされるようになった〔形式だけではなくなった〕”。