[和訳]Dockerを使って、エンタープライズソフトウェアサプライチェーンにより高いセキュリティを実現する #docker
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Securing The Enterprise Software Supply Chain Using Docker(2016/8/23) の和訳記事です。
Docker社ではコンテナ技術の中核部分として、ランタイムセキュリティとソフトウェアの分離について議論することに多くの時間を費やしてきました。しかし、それはソフトウェアパイプライン全体における一つの側面にすぎません。一回のタイムフラグや設定だけではなく、アプリケーションライフサイクルにおけるすべての段階で発生し得る、セキュリティ問題に対処する必要があります。組織は、セキュリティをソフトウェアサプライチェーンの中核として扱うべきです。その中核とは、人々がコードを書き、それらのコードやインフラストラクチャが常に動き変化し、相互に作用し合っている場所です。
電話のような物理的な製品を想定する場合、末端製品のセキュリティについて考えるだけでは不十分です。どのような盗難防止パッケージを使用するか決めることだけでなく、その原材料のソースはどこなのか、また、それらがどのように組み立てられ、箱詰めされ、輸送されたのか、知りたいと思うでしょう。さらに、輸送中に電話がいじられたり盗まれたりすることがないという保証があることも重要です。
ソフトウェアサプライチェーンのセキュリティは物理的な製品のサプライチェーンとほとんど同じなのです。原材料(コード、依存関係、パッケージ)が信頼できるものであり、それらを組み立て、商品(アプリケーション)を顧客に売れる(デプロイされる)ために海上、陸上や空輸(ネットワーク)を経て店舗(レポジトリ)に出荷できることを確認しなければなりません。
ソフトウェアサプライチェーンのセキュリティを高めることも同様に極めて似ています。やるべきことは次の通りです:
・パイプラインに存在するすべてに認証を行う:人々から、コード、依存関係、インフラストラクチャまで
・一貫性のある、質の高い構築プロセスを保証する
・保管中、輸送中の製品を保護する
・最終製品の配達の際、原材料の破損に対して保証、有効化を行う
この投稿では、Dockerのセキュリティ機能がどのように、ソフトウェアサプライチェーンにアクティブで連続的なセキュリティを提供するために使われているのかについて説明します。
アイデンティティ
パイプライン全体の基盤はアイデンティティとアクセスの上に構築されています。基本的に誰がどの資産にアクセスできるのか知る必要があります。そしてそれらに対してプロセスを実行します。 Dockerアーキテクチャには確固たるアイデンティティコンセプトがあり、ソフトウェアサプライチェーンのセキュリティを高くするためのセキュリティ戦略を支えています:暗号キーを使うことで公開者はイメージにサインできるようになり、開発元やソフトウェア内容の信頼性、Dockerのイメージを保証できるようになります。
一貫性のある構築:良いインプット=良いアウトプット
一貫性のある構築を行うことで、繰り返し使えるプロセスを作成することや、アプリケーションの依存関係や構成物をコントロールすることができるようになり、欠陥や脆弱性の検証がより簡単になります。ご自分の構成物をよく理解できれば、壊れそうなものや異常のあるものは簡単に分かるようになります。
一貫性のある構築を行うには、良い部品が追加できている事を確実にしなければなりません:
・依存関係の質を評価し、最新で互換性のあるバージョンであることを確認し、自身のソフトウェアで検証する
・部品が期待通りのソースから来ていること、輸送中に破損したり変更が加えられたりしていないことを確実にする
・欠陥がコードや依存関係における変更によるものである場合、修正箇所が簡単に見つかるように、その後の再構築と一貫性のあることが確かである依存関係をマークする
・Dockerコンテンツトラストを使用した信頼性のある、認証済みのベースイメージからイメージを構築する
アプリケーション認証があなたの成果物を保証します
アプリケーション認証は構築した成果物を有効に「封印」する手段です。イメージを認証することにより、あなたは受け取る側( pull)でサインを検証する誰とでも、あなた(公開者)とセキュリティチェーンを作成可能であることを保証します。この関係により、イメージが変更されたり、どこかに追加されたり、レジストリに保管している間や輸送中に削除されてしまうことがないことを保証します。さらに署名することにより、プルしたイメージが良いものであると公開者が「認めている」ことを意味します。
Dockerコンテンツトラストを構築マシンとランタイム環境の両方で利用できるようにすると、認証済みのイメージのみが、それらのDockerホスト上でプルされたり実行されたりできるよう、ポリシーが設定されます。認証済みイメージによって、公開者(構築者)が組織内にそのイメージは良いものであると宣言します。
セキュリティスキャニングとゲーティング(Gating)
Clシステムと開発部門は、自身の検証用の成果物が列挙されている依存関係とうまく機能するのか、アプリケーションのオペレーションが成功パスと失敗パスの両方で予想通りの挙動であるかという検証を行いますが、依存関係に脆弱性がないかどうか十分に吟味したことがあるでしょうか?構成物の依存関係のあるシステムライブラリの吟味を行ったことがあるでしょうか?依存関係のあるライセンスを知っているでしょうか?このような点検は行われるとしても、定期的にはほとんど行われません。それは、すでに配布してしまったアプリケーションのバグ修正や機能変更に加えて大きな負担となるからです。
Dockerセキュリティスキャニングはイメージレイヤーをスキャンすることで、確認プロセスの自動化を手助けします。これはイメージがレポジトリにプッシュされると同時に行われるので、コンテナが商用環境にデプロイされる前の最終チェックや最終ゲートのように機能します。Dockerクラウドで既に利用することができ、Docker Datacenterでも間もなく利用できるようになりますが、セキュリティスキャニングはパッケージとバージョンも含め、すべてのイメージのレイヤーにおいて部品表を作成します。この部品表は、様々なCVEデータベースに対して連続的に監視を行うために使用されます。これにより、このスキャンが何度も行われ、使用中のアプリケーションパッケージに新しい脆弱性が報告された時はシステム管理者やアプリケーション開発者に通知が行くことが保証されます。
閾値認証 ― すべてまとめて行うには
Dockerコンテンツトラストで認証を行うことによる、最強のセキュリティ保証の一つとして、複数のコンテナの認証プロセスに参加する認証者の存在が挙げられます。これを理解するために、次のステップでコンテナイメージを動かす簡単なClプロセスを想像してみてください。
- 自動Cl
- Dockerセキュリティスキャニング
- 本番テスト環境へ進む
- 商用環境へ進む
この単純な4つのステッププロセスにより、各ステージが完了した後にサインを追加し、CI/CDプロセスのすべてのステージを通ったことを確かめることができます。
- イメージがClを通りましたか? サインを追加します!
- Dockerセキュリティスキャニングが、イメージに脆弱性がないと言っていますか?サインを追加します!
- 構築が本番テスト環境で上手く動きますか? サインを追加します!
- 3つすべてのサインに対してイメージの検証を行い、商用環境にデプロイします
構築をプロダクションクラスタにデプロイする前に、Cl/CDプロセスの各ステージがイメージにサインをしたかどうか暗号化したままで検証を行うことができるのです。
結論
Dockerプラットフォームにより企業は、ソフトウェアライフサイクルの各ステップでセキュリティを階層化することができるようになります。ユーザーと信頼関係を築くことから、インフラストラクチャやコードまで、我々のモデルは自由と制限の両方を開発部門やITチームに提供します。セキュリティベースイメージの構築からすべてのイメージのスキャン、すべての層のサインに至るまで、それらの各機能によりIT部門は、信頼できるレベルで階層化された作業を行うことができ、アプリケーションの保証ができるようになります。アプリケーションがライフサイクルを通して変化するにつれ、セキュリティプロファイルが常に管理され、アップデートされ、最終的にデプロイされる直前に最後のゲートを通ります。
さらに情報が必要な場合は;
・ コンテナ分離ホワイトペーパー
・ Dockerによるソフトウェアサプライチェーンの高信頼度化
・ ADP社のDocker Datacenterによるエンタープライズコンテナの強化
・ Docker Datacenter の30日間試用
Dockerに関してさらに学ぶには
・Docker初心者は、10分のオンラインチュートリアルをご覧ください。
・画像、自動構築などを無料のDocker Hubアカウントでシェアしてみましょう。
・Docker 1.12リリースノートを読んでみましょう。
・Docker Weeklyを購読してみましょう。
・次に予定されているDockerオンラインMeetupに登録してみましょう。
・次に予定されているDocker Meetupに参加してみましょう。
・DockerCon 2016に登録してみましょう。
・DockerCon EU 2015のビデオを見てみましょう。
・Dockerコミュニティへの貢献を始めましょう。