みなさん、こんにちは。calloc134 です。
自分は 8/12~8/16 の 5 日間、セキュリティキャンプ全国大会 2025 に受講生として参加しました。5 日間、講師やチューターの方に非常に多くのサポートや交流をいただき、知りたい分野の解像度の大幅な向上・学習意欲の向上を行うことが出来ました。
今回は、そんなセキュキャンの振り返りを書いていこうと思います。
参加したクラス
自分が今回参加したクラスは「プロダクトセキュリティクラス」と呼ばれるクラス B の専門クラスです。このクラスは 2023 年まで「Web セキュリティクラス」と呼ばれるクラスでした。2024 年から「プロダクトセキュリティクラス」という名称に変わったようです。
このプロダクトセキュリティクラスはどのような設計方針をもって作られたのでしょうか?2024 年時点のプロダクトセキュリティクラスの概要について引用します。
個々のセキュリティ要素のみならず、あまたあるセキュリティの手段の中から、自身がこれから所属する組織やチームにおいて、プロダクトセキュリティを高めるために、どのような優先順位で、どのように推進していくかを身に着けることを目指します。
また、去年の内容とはなりますが、プロダクトセキュリティクラスのプロデューサを務めた藤田さんが、後日談としてこのクラスがどのような課題を解決するために設計されたクラスであるかということを書き記しています。
クラスの設計にあたり、課題を 3 つ設定したといいます。それは、
- セキュリティは個人戦ではなくチーム戦であり、組織におけるセキュリティ文化の醸成が必要になること
- 高度なハードスキルだけではなく、協調のためのソフトスキルも必要
- エンジニアリングを通してセキュリティに貢献する手法の習得が必要
セキュリティには技術だけでなく組織や取り組みの工夫も含まれているものです。
そのため、セキュリティを引っ張っていくためには、組織全体での理解と協力が不可欠である、ということが課題として挙げられています。
これらの課題を実現するため、個人で取り組むワークショップに加え、組織内部でのセキュリティ意識の向上と相互理解のためコミュニケーション・ディスカッションの比重を多くとるといった設計方針がなされているようです。
また、情報を正しく伝えるためのライティング手法についても探究できることが特徴的です。
ここで自分の参加の動機について書きます。
自分はすでに Web 系企業への就職が決まっており、ファーストキャリアとして Web アプリケーションの開発に携わることが決まっています。今まで参加したインターンの経験を通し、エンジニアはプロダクト開発をどのように進めるべきなのか、セキュリティ意識を開発プロセスに組み込むにはどうすべきなのかを考える機会を、何度か経験しました。
そのため、技術のハードスキルだけでなくチーム全体を考えたソフトスキルの向上やセキュリティ文化の醸成を目的とし、その目的に沿って学びを深めていくプロダクトセキュリティクラスは、自分にとって最適のクラスであると感じ取りました。
結果的に、プロダクトセキュリティクラスは自分の期待を大きく上回る内容であり、非常に充実した 5 日間を過ごすことができました。
特に印象に残った講義
自分の中で特に印象に残った講義は、2 つあります。どちらも初日の 2 つの講義です。
B1 クラウドプラットフォーム監視入門
この講義では、プロダクトセキュリティを考えるうえで「すべての活動はログに通じる」をスタンスとし、しっかり組織の小さい段階からログを溜めていくことの重要さを説きます。
今年の講義では、AWS を題材にクラウドプラットフォーム監視について学習を進める形のようでした。
クラウドを利用する場合、セキュリティ問題はクラウドが守ってくれると勘違いしがちです。しかしクラウドサービスではプロバイダと利用者の責任分界点が明確に定義されており、利用者はクラウドサービスを適切に設定・監視する責任があります。これを「責任共有モデル」と呼びます。
クラウド監視の種類や具体的なセキュリティサービスについて解説した後、それぞれに特徴があり何かひとつを選べば良いというわけではないこと、うまくこれらを組み合わせて足りない部分を補完していくことが重要であることを学びました。
ルールベースの脅威検知では汎用的な脅威しか検知することができないこと、数値的な異常検知では背景情報に基づいた異様さの検出が難しいこと、インフラレベルのログ監視ではアプリケーション詳細のログが取れないことなど、各種監視手法にそれぞれの限界があり、一筋縄ではいかないということを痛感しました。
想定される脅威に対し、どのような監視を行っていればそれを防ぐことができたかという事例、ビジネス組織の成長に伴って監視基盤の規模をどのように成長させていくべきなのかという成熟度の話、そして監視基盤を構築するための具体的な手法を学びました。
最後に演習として、AWS を用いた監視基盤の構築を行いました。簡単なデータ基盤が構築されており、これを用いて演習を行いました。
プラットフォームのアーキテクチャ図
具体的には、S3 に放り込んだ生データとしてのログを SNS/SQS を用いて 非同期に Lambda で処理し、情報としてのログに変換した後、Athena でクエリを実行し可視化するというプラットフォームが提供されます。
この上で実際に SQL を用いてクエリを実行し、適格な条件でアラートを発報するためのクエリを作成するという演習を行いました。
この講義を通して、プラットフォーム監視基盤を構築するうえでのマインド、監視をすることでどのような問題を防げるか、成熟度に応じた監視基盤構築の方法論、そして実際に監視基盤を構築するための具体的な手法を学ぶことができました。
B2 設計・開発・テストにおけるセキュリティの実践と考え方を知ろう
この講義は、セキュリティエンジニアというよりも、プロダクトを生み出す開発者の目線にセキュリティのマインドをインストールすることを目的とした講義でした。
講義時間に対してスライドの量が非常に多かったため、スライドの前半にスコープを絞って講義を行う形となりました。
まずグループワークとして、実際に過去のセキュリティインシデントを題材に、どのような脆弱性があったのか、自分が開発者だった場合そこからどのような教訓を得るかということを考えるワークを行いました。実際の被害額や被害の規模を知ることでセキュリティ投資の正当性を実感するとともに、自分たちは大丈夫だろうという過信を捨て、攻撃パターンの把握や準拠すべきセキュリティ基準の理解を深めることができました。
セキュリティインシデントの事例から学ぶこと
次に、開発プロセスでセキュリティを考えながら開発を進めるためのマインドについて学びました。開発者のなかで DevOps が提唱されて久しいですが、今回の解説ではそれを更に一歩進めた「DevSecOps」という考え方を学びました。
前提としてアジャイル開発・DevOps とは何かを解説したあと、既存の開発ライフサイクルの中にセキュリティの作業を組み込むプロセスである「SSDLC」について学びました。この考え方を DevOps の考え方と組み合わせた「DevSecOps」を実践することで、セキュリティを開発プロセスの中に組み込むことができるといいます。
SSDLC と DevSecOps の統合
この DevSecOps を実践する嬉しさとして、設計・開発段階からセキュリティを組み込むことで、後から取り返しのつかないような設計レベルでのセキュリティ問題を防ぐことや、継続的なセキュリティの改善を行うことができる、ということが挙げられます。
このような開発ライフサイクルの早期段階でセキュリティを統合するアプローチについて、命名がされているようです。開発の流れを左から右に流れる時間軸として見立て、できるだけ早期の段階でセキュリティのコストを払おうというマインドを表現し、Shift-left という命名がなされています。
Shift-left のようにコストを早期に負担し将来的なコストを減らすという考え方は何もセキュリティに限った話ではなく、「設計段階での修正は本番環境での 1/100 で行うことが出来る」という法則 (ベームの法則) があるように、ソフトウェア開発全般においても非常に重要な考え方です。
コストを早く払うことの重要性
その他、設計段階における脅威モデリングや、実際のプロダクトのシステムアーキテクチャ図を用いた脅威モデリングのグループワーク、ならびに実際の組織ではどのように DevSecOps を実践していくべきなのかいうことを話し合うディスカッションを行いました。
この講義は非常に抽象的な部分が多くかつ領域も幅広いため、経験豊富なエンジニアでないとピンとこない部分も多いのかなと感じました。しかし、セキュリティを開発プロセスに組み込みながら開発をしていくことの重要性や思考のフレームワークについて多くのことを学ぶことができました。
全体を通して得たこと
今回のプロダクトセキュリティクラスの講義設計スライドが共有されていたので、ここに引用します。
今回のプロダクトセキュリティクラスでは、架空の EdTech サービス「無敗塾」のプロダクトとしての成長をベースに、それぞれの講義がある一定のシナリオのもと進められるという形となっていました。
前述のとおり、このクラスはハードスキルである技術に特化したものではないことに注意が必要です。
このクラスの受講生が向き合うべき最大の課題は、実際に開発者の視点でプロダクトを伸ばしていく環境で、少なからずセキュリティのコストを支払わなければならないという状況下において、何を優先し、何を捨てるかを決断することにあると自分は感じます。
そのため、組織の成長フェーズに合わせたセキュリティ施策と技術が必要となってきます。
B1 講義ではすべての土台となるプラットフォームの監視のマインドを培います。
この B1 を前提としたうえで、B2 では開発プロセスにセキュリティに組み込むマインドと各種技術、B3 では認証部分、B4 ではアプリの一つ下となるコンテナプラットフォーム(k8s)、B6 では API の設計にクローズアップしたセキュリティを学びます。
そして B5 では、逆に今まで開発者の視点だったものを攻撃者の視点に切り替え、どのような思考回路が攻撃者で走っているのかを学びます。そして自分達のプロダクトでどのようなものが狙われるのかを掘り下げ、防御のための先手を打つための思考を学びます。
これらの B1~B6 の講義を通して、開発者としてもセキュリティエンジニアとしても一歩踏み込み、プロダクトにセキュリティを組み込むとは何かを体現する難しさ、そしてそのために必要なマインドと技術を習得することができました。この講義の内容は、自身がより安定性のあるプロダクトを開発し伸ばしていくことになっても、かならず役に立つものと確信しています。
一人前のプロダクト開発者としての一つの基準として、抽象的な言葉ですが、自分の中には「ハンドルを握らせても安心できるような人」 という言語化があります。今回のプロダクトセキュリティクラスの講義を通して、そのようなエンジニアになるための土壌としてとても貴重な体験をしたな、と感じています。
まとめ
自分がセキュリティ・キャンプを知ったのは大学 2 年生の頃です。以前からセキュリティに興味を持っており、セキュリティ・キャンプの存在は知っていました。ただ事前課題の難易度が高く、また大学の課題や就職活動・夏インターンの存在があり、大学二年・三年の夏はセキュリティ・キャンプに参加することができませんでした。
大学四年の夏は就職活動も終わり、大学の授業もなくなったため、絶好の機会と判断し一週間ほど課題を取り組み、熱意も伝えつつ申込みを行いました。
セキュリティ・キャンプ全国大会は U22 で学生であることを前提としたプログラムであり、今回が最後にして絶好のチャンスでした。審査の結果、ついに合格しプロダクトセキュリティクラスに参加することができました。今年の事前課題の内容が自分の開発領域ならびに認証認可という得意分野であったこともあり、完成度についてはかなり高いものを提出できたのではないかと思います。
セキュリティ・キャンプはすごくレベルの高いイベントですが、参加可能な最後の年に自分がついに参加できたということは非常に嬉しいことでした。
参加者のみなさんはもちろん、講師やチューターの方々も非常にレベルが高く、またセキュリティに対する熱意も非常に高い方々ばかりでした。
来年からは社会人となり、セキュリティ・キャンプのようなイベントに参加することは難しくなるかもしれません。しかし今回学んだ内容についてしっかり咀嚼し、今後のキャリアに活かしていきます。また、今後セキュリティ・キャンプを支援できるような機会があれば、積極的にサポートをしていきたいと感じています。
改めて、セキュリティ・キャンプ全国大会 2025 の運営に関わったすべての方々に感謝申し上げます。ありがとうございました。
ありがとうございました!
Views: 0