DevSecOps時代のCloud Security!
AWSとトレンドマイクロでどう実現するのか?
~AWS Summit Tokyo 2018 After Report~

公開日
2018年7月30日

2018年 AWS Summit Tokyoのトレンドマイクロのセッションは、AWSとの共同セッションを行いました。
オートメーション、コンテナなどDevSecOps とは切り離せないテクノロジーと共に、DevSecOpsの概念から、AWSマネージドサービスとTrend Micro Deep Securityで実現するDevSecOpsの実装例をご紹介しています。Compliance as Code、セキュリティオートメーション、コンテナセキュリティ等にご興味ある方向けのセッションとなっており、本誌はその内容をまとめたレポートです。

DevSecOpsとは? & AWSで実現するDevSecOps

アマゾン ウェブ サービス ジャパン株式会社
技術統括本部 レディネスソリューション本部
シニアセキュリティソリューションアーキテクト 桐山 隼人

1.DevSecOpsとは?

セキュリティは企業の全ての事業活動において必要な要素です。従来より、事業活動を裏で支える共通基盤としてのIT環境、いわゆるSystem of Record(SoR)領域では、安定性や品質に関する要件を満たすセキュリティが求められてきました。それに加え昨今では、事業活動そのものを直接的に実現するIT技術、いわゆるSystem of Engagement(SoE)領域が注目されています。この領域では、顧客が満足するサービスを一早く届けること、つまり、価値実現の速さが重要となります。このような背景から、開発したサービスを顧客に提供しつつ、顧客のフィードバックを次の開発に素早く反映させるライフサイクルを実行するDevOpsモデルが生まれました。

DevOpsモデルを実現するには3つの要素が必要です。1つ目は組織文化(Culture)です。開発チームや運用チームがサイロ化しないよう、共通のビジネスKPIを持たせ、全体ライフサイクルに責任を持つDevOps組織を醸成する必要があります。2つ目は手法(Practices)です。継続的インテグレーション(Continuous Integration: CI)、継続的デリバリー(Continuous Delivery: CD)、マイクロサービス、コードとしてのインフラストラクチャ(Infrastructure as Code)、モニタリングとロギング、コミュニケーションと共同作業、という6つの手法がDevOpsモデルの実現には欠かせません。そして3つ目はツール(Tools)です。先の6つの手法を効率的に実現するための手段として、様々なツールが世の中に溢れています。AWSもそのようなツールをクラウドサービスとして提供しています。

このDevOpsモデルの上で実行される、開発と運用が統合されたライフサイクルでは、あらゆる段階にセキュリティの要素を組み込むべきです。セキュリティを全ての段階に組み込むことで、ビジネス目標達成のためのライフサイクルを迅速かつ安全に実行することが可能になります。DevOpsモデルにセキュリティが統合され、DevOpsのビジネス目標が更に達成しやすくなることでDevSecOpsが完成されると言えるでしょう。

2.AWSで実現するDevSecOps

前章では、8の字を横にした無限大(∞)のような形でDevSecOpsのライフサイクルを表現しました。ここからは、各段階にどのようなセキュリティを組み込むことができるかを例示するために、その一部のプロセスを切り出して見ていきましょう。

2-1. CI/CDパイプライン

まずは、CODE > BUILD > TEST > DEPLOYの段階についてです。継続的インテグレーションや継続的デリバリーという手法を適用しているDevOps組織では、このサイクル、いわゆるCI/CDパイプラインが何度も反復的に繰り返されることになります。AWSサービスというツールを用いて、セキュリティを組み込む例をここで示します。

まず、新規作成や更新したプログラムコードがAmazon S3に格納されたことをきっかけに、AWS CodePipelineでワークフローを開始します。最初の段階ではソースコードを静的解析するAWS Lambda関数を実行します。問題なければ、テスト段階に移行し、AWS CloudFormationにてテスト環境をデプロイします。テスト環境では動的な妥当性検証を行うLambda関数を実行します。検証が通れば本番段階に進み、CloudFormationでの本番環境のデプロイへと進んでいきます。ここにある全てのAWSサービスはAPIで連携するので、各段階のセキュリティに関する解析や検証は自動で行われます。

CI/CDパイプライン上で反復的に行われる処理を、自動化されたワークフローとして管理することにより、セキュリティが組み込まれ確実に実行することが可能になります。

2-2. デプロイ時の自動構成

続いて、DEPLOY > CONFIGURE > MONITORの段階を見てみましょう。最近ではゼロデイ攻撃などから分かるように、既に利用中のライブラリであっても、後から脆弱性が判明することがあります。よって、デプロイ時にセキュリティ評価を行い、その後も定期的に正しく構成されていることを確認する、いわゆる継続的な監視は必要不可欠と言えます。

はじめに、AWS CodeDeployによりデプロイされたEC2インスタンス上のOSやアプリケーションに対して、Amazon Inspectorにより脆弱性診断を行っています。続いて、診断結果から一部のEC2インスタンス上のOSやアプリケーションに脆弱性が発見されると、AWS Systems Manager Run Commandによりモジュールのアップデートを実行し、パッチが適用されるようにしています。最後はAWS Systems Manager Inventoryにより、各インスタンス上のソフトウェアバージョンなどの構成情報を取得し、パッチが適用されているか確認ができます。(図中のコマンドは説明用の例です。実際はユーザーガイドなどを参照に、適切なコマンドを実行してください)

上記以外にも、リソース構成変更を記録し続けるAWS Configや、事前定義されたセキュリティルールに適合しているかを監視するAWS Config Rulesなどの有用なサービスがあります。AWSでは、デプロイした時点から正しい構成がどうかを継続的に監視する仕組みが実現可能です。

2-3. ワークロード監視と評価

最後は、MONITOR > PLAN > CODEの段階です。これで、この無限大ループを一周し、DevSecOpsモデルのスタート地点に戻ってきました。運用中のシステムやアプリケーション(ここではワークロードと呼びます)から得られるフィードバックを、次の計画や設計に活かす段階です。

ここでは、Amazon GuardDutyという脅威検知サービスにより、ワークロードを継続的に監視しています。GuardDutyはネットワークログやDNSクエリログ、API操作などを監視し、セキュリティ脅威をFindingsという形で表示してくれるサービスです。Findingsには大きく3つの種類があります。1つ目は悪意のあるスキャンで、これには総当たり攻撃やポートスキャンなどが含まれます。この種類のFindingsにより、特定の攻撃元や不必要に開かれたポートが判明したら、AWS WAFなどを使ってネットワーク保護をすることが考えられます。2つ目はインスタンスへの脅威で、C&Cサーバとの通信など比較的重要度が高いものです。バックドアが仕掛けられ、リモートから不正なコマンドが実行される可能性がある状態なので、エンドポイント要塞化やネットワークのセグメンテーションをセキュリティ設計に反映させ、CloudFormationで、より安全なインフラを構成するテンプレートを再定義するのがよさそうです。3つ目はアカウントへの脅威で、不正ユーザーによるなりすましなど最も危険度が高い脅威です。AWS IAMによって即座に該当ユーザーのアクセス権限を制限すると同時に、クレデンシャル(認証情報)漏えいに対応する必要があるでしょう。

以上、DevSecOpsライフサイクルのあらゆる段階にセキュリティを組み込む例を見てきました。AWSの充実したサービス群をツールとしてご利用いただき、皆さまの組織でのDevSecOps実現にお役立てください。

トレンドマイクロで補完するDevSecOps

トレンドマイクロ株式会社
セキュリティエキスパート本部 パートナービジネスSE部
シニアセールスエンジニア 姜 貴日

3.トレンドマイクロで補完するDevSecOps

ここではまずTrend Micro Deep Security™(以下、Deep Security)を簡単に紹介いたします。

Deep Securityはサーバセキュリティに必要とされる7つの機能を1つの製品に実装させた「総合サーバセキュリティ対策製品」です。
複雑化している昨今の脅威に対して、Deep Securityの製品コンセプトの一つ「多層防御」を用いてお客さまの大切な資産を守ります。

クラウドへの対応も迅速に行っており、特にAWSとの機能連携に関しては、AWS マネージメントコンソール連携(Auto Scalingへの対応)、Amazon SNS対応、Amazon WorkSpaces連携など、AWSユーザがSecurityに割く工数を削減する事が可能となっています。

次にトレンドマイクロが支援出来るサービスについてですが、トレンドマイクロが提供しているサービスやDeep Securityを用いて支援出来るサービスは上図の赤色箇所です。
AWSが提供していない、上記セキュリティについて支援しています。

DevOps環境でのDeep Securityユースケース

ここではDevOpsの環境において、どのようにDeep Securityが利用出来るのか、ユースケースを用いて説明いたします。

ユースケース 1

CI/CD Pipeline環境へのSecurity実装

ここでのセキュリティ課題は、継続的にアプリケーションがデプロイされるように自動化されている環境に対してどのようにセキュリティを実装していくのか?となります。
DevOpsを考慮していないセキュリティ製品を組み込んだ場合、そもそもの目的であった「新機能を追加しながら安定稼働させていく」といった活動は実現出来なくなるでしょう。
DevSecOpsを実現していくには、DevOpsを邪魔しないセキュリティ(セキュリティ製品)を検討する事が重要となってきます。
APIの提供は当然のこと、製品の設計思想がDevOpsを考慮したものになっていないと、既存DevOps環境への導入は難しくなってくるでしょう。

ここでは1つのユースケースとして、ホワイトリスト型の「Application Control」という機能を例にあげて説明いたします。
例えば、上図のようにCDが既に自動化された環境下へセキュリティを投入する場合を考えてみましょう。「Application Control」のようにホワイトリストを利用してアプリケーションを制御するものは、デプロイする前に新規アプリケーションをホワイトリストへ追加する作業が必要となります。この作業を怠ると、ホワイトリストに登録されていないアプリケーションは実行出来ないので、新たなサービスがデリバリ出来ない状態が発生します。
DevOpsのような継続的なデリバリを行っている環境では、セキュリティがボトルネックになり得ます。

Deep SecurityはDevOpsを考慮しながら開発しています。
Deep Securityの「Application Control」には「メンテナンスモード」という機能が実装されています。この機能が有効な間は新規アプリケーションが自動的にホワイトリストへ登録されるようになっているので、継続したデプロイを邪魔する事なく、サービスをデリバリする事が可能です。また、それらは全てAPIで制御出来るようになっているので、上図のようにCIツールと連携させる事で既存のPipelineにセキュリティを組み込んだ自動運用が可能です。
アプリケーションが頻繁にデプロイされるDevOpsの特性を考慮した場合、その特性を考慮した製品選定が必要になってくるかと思います。

ユースケース 2

Containerを展開するDevOps環境へのSecurity実装

ここではContainer環境でのセキュリティ対策についてDeep Securityを用いて説明いたします。
まずアプリケーションやサービスが稼働するデプロイ後のEC2インスタンス及びContainerへのセキュリティですが、上記右端、Deep Securityのアイコンがあるように、Container内の不正プログラム対策についてはDeep Securityで対応する事が可能です。
また、ContainerのホストとなるEC2インスタンスには上述した7つの機能で多層防御を実現する事で、脅威からEC2インスタンスを守る事ができます。
故に、デプロイ後のEC2インスタンスのセキュリティ対策については、Deep Securityを利用する事で対応可能なのです。
一方、デプロイ前のセキュリティ対策ですが、以前であれば、デプロイ後の環境に対策を講じる事が有効な手段だったかもしれませんが、DevOpsを利用したサービスデリバリーの場合は、違った視点を持つ必要があります。

こちらは、Docker Hub上のImageに含まれる脆弱性の数を表した図です。
Community Imageだけでなく、Official Imageにもかなりの脆弱性が存在していますが、どれだけのユーザがこの脆弱性の存在に気付く事が出来るでしょうか?

こちらはRegistryに置いてあるライブラリやイメージを悪用した事例となります。
左図はPyPIに悪意あるライブラリを配置しておいて、ユーザのタイポを利用して不正なライブラリやプログラムをダウンロードさせるものです。
右図はCCleanerというアプリケーションのイメージにバックドアを仕掛けて、それをRegistryに配置しておき、ユーザが気付かないところで感染されるというものです。左図・右図ともに、これらに関連する多数のインシデントが報告されています。

このような状況からContainer環境では、デプロイ後の脅威対策だけでなく、デプロイ前のContainer Imageの段階で脅威を可視化、対応する事が求められております。
それを実現するのが「Deep Security Smart Check」です。(以下、Smart Check)

Smart CheckはContainer Imageをスキャンする製品です。Deep Securityとは別の製品として提供されており、Container Imageに存在する脆弱性の洗い出しや不正プログラムの検出を行う事が出来ます。
Smart Checkを利用する事で、セキュリティ対策を「Shift Left」させ、Dev側に持ってくる事が可能です。
これにより、デプロイ前にセキュリティリスクを低減するだけでなく、Ops側の手戻りをなくし、不必要なセキュリティ運用工数を抑制する事に繋がります。

※ Deep Security Smart Checkの日本でのリリースは2019年を予定しています。
  本製品に関する詳細な説明等ご希望される場合は「 aws@trendmicro.co.jp 」までご一報頂けますと幸いです。

4.まとめ

AWS選定理由:
まずは、組織文化 + 手法 + ツールの3要素が重要で、いずれかが欠けていてもDevOpsの実現は難しいです。
その中でもツールに関してはAWSが既に提供しているので、DevOpsチェーンを即実行する事が可能です。
更に、AWSのセキュリティサービスと組み合わせる事でDevSecOpsを容易に実現する事が可能となります。

Deep Security選定理由:
AWSの各種サービスとの連携、例えばAuto-scaling、Amazon SNS、Workspacesなどと連携し常にAWSの進化にキャッチアップする製品となっています。
更に、セキュリティがPipelineを邪魔しない、DevOpsと融合しDevSecOpsを実現していく製品です。
最後に、一つの市場に留まるのではなく、物理、仮想、クラウド、コンテナ、サーバーレスといった市場の変化と共に一緒に成長していく製品となっています。是非貴社のDevOps環境への導入をご検討下さい。

関連記事