Japan
サイト内の現在位置
クラウドネイティブ技術によるセキュリティ演習環境の改善
NECセキュリティブログ2025年7月18日
NECサイバーセキュリティ技術統括部 セキュリティ技術センターの森本です。
著者は、2025年3月10日(月)~2025年3月14日(金)に開催されたSEC540: Cloud Security and DevSecOps Automationに参加しました。この研修では、SANS Cloud Security Flight Simulator[1]と呼ばれる、AWSまたはAzureのクラウド環境上にGitLab CI/CD、VSCode、Vault、Kubernetesなどを組み合わせた、クラウドネイティブアプリケーションの開発やリリースの流れを疑似体験できる演習環境が用意されていました。研修テーマ自体は、クラウドやコンテナを前提としたセキュリティ対応の自動化ノウハウが中心でしたが、演習環境自体もよく作り込まれていることが印象的でした。特に、クラウドネイティブ技術を演習環境に組み込むことでこそ実現できたとされる仕組みや演習コンテンツもあり、社内のセキュリティ研修講師を務める身としては、新鮮な経験をすることが出来たと考えています。
本ブログでは、社内研修の講師経験やSANS研修の受講経験をもとに、クラウドネイティブ技術をセキュリティ演習環境に取り込む意義について紹介します。なお、SANS研修の研修コンテンツ自体ではなく、あくまで演習環境の構成やその特徴に焦点を当て、ハンズオン系研修の開催者や講師の方向けに執筆いたしました。
目次
従来のインフラ技術と演習環境
はじめに従来のセキュリティ演習環境や構成インフラ技術について触れます。セキュリティのテーマは多岐に渡るため、各教育内容や目的も様々といえます。システムの開発や運用の中で適切なセキュリティ対応を実践する能力を身に着けるという観点では、上流工程におけるセキュリティリスクや対策方針を洗い出すセキュリティリスクアセスメントや、下流工程における、ネットワークのアクセス制御やOSのセキュリティ設定強化の実践などが挙げられます。とりわけ、システムの実装工程以降を想定した演習では、事前に用意された環境上で受講者が実際に手を動かすハンズオン形式が多く採用されます。ハンズオン形式の研修は、理論(知識)を学んだ後に、実際に手を動かすことで、その知識を実用的なスキルとして定着させることが期待できます。一方、演習環境は、講師側が事前に用意する必要があり、その構築方法によっては、研修の実施形態や受講者の研修体験に影響を与えます。
具体例として、実機で受講者個別の演習環境を用意する場合、同時受講者用の端末やネットワーク機器が求められ、それが受講者数を制限する要素になります。この観点に限れば、仮想化技術やクラウド技術を基盤とすることで、より柔軟なリソース確保が行えます。これらの技術はサーバ機器に加えてネットワーク機器の仮想化も可能なため、複数のサーバや機器を組み合わせた演習環境であっても演習環境のリソースを確保しやすくなります。また、仮想化技術やクラウド技術で提供されるシステムやデータの状態をコピーして保存するスナップショット機能も、演習環境でトラブルが発生した際の復旧や受講者への代替環境の提供に役立ちます。さらに、クラウド環境では、インターネット越しに演習環境の提供ができるため、実地の集合研修に限らず、リモートの研修体制も実現しやすくなります。
演習環境へのクラウドネイティブ技術の活用による効果
ここまで、演習環境とそれらを構成する一般的なインフラ技術との関連について紹介しました。環境構築へのクラウド技術の単純活用であっても、研修運営の幅が広がるといえますが、追加でクラウドネイティブ技術を組み合わせることで、研修講師の負担軽減や受講者の得られる学習体験をより改善することが期待できます。具体的な効果の説明に入る前に、要素技術について簡単に補足をしておきます。
CI/CD
CI(Continuous Integration)は、開発者が頻繁にソースコードをGitLabのようなソースコード管理システムのメインブランチにマージすることで、自動でビルドやテストを実行するプロセスを指します。また、CD(Continuous Deployment)は、開発されたコードが自動的に本番環境にデプロイされるプロセスを指します。CI/CDの活用によりコード変更からビルド、テスト、デプロイなどの従来人手で行っていた開発やリリース作業を自動化、言い換えると、迅速に実行することができるとされます。
IaC
次に、IaC(Infrastructure as Code)は主にクラウドサービスの派生技術で、JSON形式、YAML形式、XML形式等のデータフォーマットに仮想マシンや仮想ネットワークのパラメータを記述することで、意図したクラウドリソースを自動構築できる技術になります。IaCをシステム開発や運用に組み込むことで、テスト環境やリリース環境の雛形となる仮想マシンの立ち上げなど、手動作業の自動化が可能になります。
コンテナ
コンテナ技術もクラウドネイティブ技術の一種と言えますが、ホストOSのカーネルを共有する特徴をもち、従来の仮想マシンに比べて計算機リソース(メモリ、ストレージ)の使用量が少ない点が挙げられます。さらに、BIOSのようなファームウェアレベルからではなく、既存ホストOSの計算機リソースを切り分けて起動するため、立ち上がりの時間も高速になります。
演習内容や研修運営を改善する観点として、受講者が学習でより充実した経験を得られることや講師側(開催元)の運用制約や負荷の軽減が挙げられます。以降、従来のインフラ技術を使用した演習環境と対比をしつつ、クラウドネイティブ技術を活用することでどのような効果が期待できるかについて紹介します。
なお、CI/CD、IaC、コンテナのセキュリティについてはこちらをご参照ください。
演習環境の立ち上げや復旧の省力化
前述のとおり、演習環境は受講者ごとに割り当てることも多く、演習環境自体の複雑さや受講者数の規模に比例して、講師側の演習環境整備のコストも増加します。また、演習環境でトラブルが発生した際、演習内容が依存関係のある複数のステップで構成、または、演習手順の実施場所が複数サーバやネットワーク機器に分散している場合、復旧に多くの時間を要することになります。これは、受講者視点では演習時間の喪失につながるとともに、サポートに回る講師側の負担も無視できません。仮想マシン単体であれば、従来の仮想マシンスナップショットのみで対応可能ですが、システム構成が複雑な場合には、ネットワーク設定等の復元も併せて必要となり、手動対応とならざるを得ないケースもあります。
そこで、演習環境の構成をIaCで一括記述しておくことで、比較的複雑な環境構成であっても仮想マシンやネットワーク設定等を含めたシステム全体の構築や復旧を広く自動化できます。受講したSANS研修においても同様の仕組みが用意され、演習手順を誤った場合であっても要所の作業ポイントに数分で復元できるようになっており、受講者目線で安心して取り組めたと記憶しています。
演習リソース確保の柔軟性
コンテナ技術は、仮想化と同様に隔離環境を提供しつつ、初期起動や再起動のダウンタイムを抑え、限られた物理的な計算機リソースを効率的に活用できることから、CTF(Capture The Flag)のように参加者が大規模となるケースや演習環境がwebサーバやデータベース等の複数ノードで構成されるケースに相性が良いといえます。
従来の演習環境では利用できる仮想マシンの台数に制限があることによって複雑な構成のシステム構成の演習提供が難しくなることや、次の演習内容に取り組む際に、直前の演習で操作した環境のクリーンアップ(削除や上書き)を求められることがあります。これらは、受講者が学習でより充実した経験を得るという目的に対して、重要ではない作業であることや、後日の振り返りができなくなってしまうといった課題に繋がります。SANS研修では開発成果物がコンテナとして作成される仕組みとなっていたため、2台程度の物理マシン上で複数のwebサービスを並行稼働させることもでき、片方の演習を実施するためにもう片方の演習環境を仕方なく削除するといったことが少なかった点も印象的でした。
独立した演習環境の統合
CI/CDの最も大きな特徴は、手動操作が介在しつつ独立していた開発工程やリリース工程を自動化によって短時間で実施できる点にあります。実装以降の開発工程には、大まかに以下のような操作が含まれますが、より具体的な実行コマンドの粒度に換算すると100を超える操作になる場合もあります。
- コーディングを行う
- 開発コードをコードリポジトリに保存する
- コードリポジトリからビルド環境にソースコードをダウンロードする
- ダウンロードしたソースコードをビルドして実行バイナリやソフトウェアパッケージを生成する
- 作成したソフトウェア成果物をテスト環境に配置して機能テストや性能テストを実施する
- ソフトウェア成果物を配置して本番環境に配置して実行する
仮にこれらの手動操作を受講者に委ねた場合、多くを作業時間がかかります。この観点は開発工程上で実施されるセキュリティ対応にも当てはまります。例えば、セキュアコーディング、OSのセキュリティ設定、脆弱性診断、WAF (Web Application Firewall)の定義ファイル更新等の操作を一連の作業として体験するには、ビルド環境の立ち上げやビルド実行などのステップまで踏む必要があり、限られた時間内での手動実施は困難と言えます。
一方、CI/CDをベースとした演習環境を組み立てることで、短時間でこのプロセスを自動実行でき、短時間でセキュリティ対応を含めたリリースの流れを体験できます。
CI/CDを導入することで実現が容易になる演習シナリオの一例として、Webアプリケーションの脆弱性対応が挙げられます。Webアプリケーションのソースコードに問題がある場合、ソースコードの修正・ビルドを行い、本番環境にリリースすることが恒久対策になります。加えて、運用環境でWAFを導入している場合には、WAFの定義ファイル更新が代替策や多層防御の位置づけになります。片方の対策で攻撃を防止できることや両方の対策を実施することで防御がより強固になることを短時間で確認できれば、受講者の得られる経験もより充実することが期待できます。
また、従来独立性の高かった個別のセキュリティ演習環境が単一のCI/CDパイプラインに収まることで、構築用インフラや演習内容自体の集約にも繋がります。さらに、CI/CDパイプライン上の処理は柔軟に追加や削除が行えるため、研修内容の調整にも柔軟に対応しやすく、重要ではない作業を自動化しつつ、重要な操作に絞って利用者に実施させることもできます。
実行コマンドを束ねた従来のシェルスクリプトであっても実現余地はあるものの、シェルスクリプトは主に単一マシン内の自動化に特化しているため、コーディング環境、コードリポジトリ、テスト環境、ビルド環境を束ねるような自動化には不向きといえます。
まとめ
今回はクラウドネイティブ技術がどのようにセキュリティ演習環境に寄与しうるかについて紹介しました。本来、クラウドネイティブ技術はクラウド環境を活用して柔軟かつ俊敏な開発を行うことを目的としていますが、演習環境に組み込むことで演習の運営や受講者側の学習体験を阻害する計算機リソースや演習時間の制約を取り除くことが期待できます。ただし、リスクアセスメントやペネトレーションテストのように人手に強く依存したセキュリティタスクをテーマとした研修には効果が限定的と考えられます。総じて、自動化の余地がありシステムライフサイクルと紐づいたセキュリティタスクをテーマとした研修の質を大きく向上させる手段といえます。演習環境へのCI/CDやIaCの導入にはコストもかかりますが、相応のメリットもあります。紹介内容が、セキュリティ研修の企画や改善を検討する際の参考になれば幸いです。
参考文献
- [1]SANS:What is the SANS Cloud Flight Simulator?
https://www.sans.org/blog/sans-cloud-flight-simulator-sec540/
執筆者プロフィール
森本 康太(もりもと こうた)
担当領域:セキュリティ実装技術
専門分野:セキュリティ実装技術
NECグループのセキュア開発・運用を推進。

執筆者の他の記事を読む
アクセスランキング