研修 セキュリティ

GMOインターネットグループ全体の新人研修でセキュアコーディングについて講義した際に工夫・実践したこと

研修 セキュリティ

こんにちは、EC事業部カラーミーショップグループのたかぴー(@takapi86)です。

新卒パートナー向けの技術研修「GMOテクノロジーブートキャンプ」にて、セキュリティ基礎というカリキュラムの中でセキュアコーディング入門というパートの研修を担当しました。 今年は、新型コロナウィルスの影響のためリモートでの開催となりましたが、その際に実践したことや工夫したことをまとめていきたいと思います。

GMOテクノロジーブートキャンプとは?

GMOインターネットグループの新卒社員のための技術研修です。 今年は、5/7〜5/29までの約1か月間開催されました。

詳しくは、以下のリンクをご参照ください。

https://prtimes.jp/main/html/rd/p/000001350.000000136.html

なぜ、セキュアコーディングというテーマを選んだか

セキュアコーディングとは、攻撃者やマルウェアなどの攻撃に耐えられるよう、脆弱性のない堅牢なプログラムを書くことです。 これをテーマとして選んだ理由は、現場に入ったとき具体的にどういうポイントで脆弱性に気をつけなければならないのか?という観点を養うことが新人教育では必要だと感じたためです。 例えば、XSSはHTMLに値を埋め込んだ箇所によって対応が変わってくるため、単純に値をエスケープするだけでは対応できない部分があります。また、Railsのようにセキュリティ対策が行われているフレームワークを使っていても、どういう部分で、何の目的で対策されているかを知っていないと知らず知らずのうちに脆弱性を作り込んでしまう原因となってしまうと思ったからです。

研修の準備段階で、思い描いていたこと・やらなければならないこと

現場に入ったときに気をつけるべきポイントを理解してもらいたい

「どういう脆弱性があって、こういうリスクがあるので、こう対応していきましょう」という一連の流れを説明し、具体的にどのようなポイントに気をつけていかなければならないかを理解してもらいたいと考えておりました。 また、セキュアコーディング研修というとエンジニア向けというイメージがあると思いますが、今回はクリエイターも参加します。そのため、より広い人に理解してもらえるような研修内容にする必要がありました。

受講者とのコミュニケーションを取りながら研修を進めたい

私よりも前に研修を行った講師陣からは「受講者の反応を見つつ話すことができないため、講義が行いにくい。」という感想をよく目にしました。そのため、受講者から何かしら反応をもらえるような工夫が必要と考えました。 また、今回はリモートでの開催となっておりますが、一方的に資料を説明していくような研修の形式にはしたくないと考えておりました。そのような形式であれば、各自好きな時間で配信した動画を見てレポートを出してもらう方が、効率的であると思うからです。しかし、今回の研修ではリアルタイムでの集合研修という形式をとっているので、受講者とのコミュニケーションを取りながら研修を進めていきたいと考えておりました。

とにかく研修できる状態にしたい

業務の都合により、あまり余裕のない期間で作成しなければなりませんでした。 そのため、資料はあまり時間をかけずに作成する必要がありました。

思い描いていたこと・やらなければならないことに対して、取り組んだこと

現場に入ったときに気をつけるべきポイントを理解してもらいたい => デモを行うようにした

脆弱性を再現させ、実際にコードを修正し、修正されたことを確認するまでの一連の流れをデモとして行うようにしました。 一連の流れをデモとして行うことによって、具体的にどのようなポイントを気をつけなければならないか、イメージを持ってもらうことが狙いです。

研修後、一部の受講者から一連の流れがデモになっていて理解しやすかったという感想をいただきました。

また、デモについては、あらかじめ動画として撮っておき、その撮っておいた動画を研修時に再生するようにしました。 これによって、リアルタイムでデモを成功させなければならないという心理的負担が減り、また講義中にも気持ちに余裕を持つことができました。

受講者とのコミュニケーションを取りながら研修を進めたい => 定期的に受講者から何かしらの反応をもらえるようにした

定期的に受講者からレスポンスをもらえるように、こちらから積極的に以下のようなコミュニケーションを取るようにしました。

  • 各脆弱性の解説を行った後に、具体的にどう脆弱性対策をしてけばよいか。わかる人がいれば都度チャット等に書いてもらう。
  • 質問がないか細かい単位で聞く。
  • チャットに書かれた内容は必ず口頭かチャットですぐに返す。なるべく、そこから会話を発展させるようにする。

基本的なことですが、上記を意識することで、一方的に話してしまっているようなやりにくさは感じることなく講義を進めることができました。 また、デモを動画で流すようにしたことで、チャットで受講者とコミュニケーションを取る時間を確保することができ、会話しつつ講義以外の発展した内容なども共有することができました。

とにかく研修できる状態にしたい => Marpを使って一気にスライドを仕上げた

他の業務との兼ね合いで、研修資料を作成する時間がなかなか確保できなかったので、とにかく仕上げることを優先としました。 今回は工数削減のため、Marp というMarkdownでスライドを作成できるツールを使いました。 こちらのツールを使うことでレイアウトに関する工数を削減できたのに加え、GitHubでMarkdownを管理することにより修正をPull Request単位で行えるようになったので、パワーポイントで作成していたときよりも非常に修正が行いやすくなりました。

結果として、研修資料の作成時間はいつもの半分以下で抑えられました。

まとめ

  • デモを行うと口頭や文章では伝わりにくい部分を補うことができ、理解しやすくなる。
  • デモを動画で予め準備しておくと、気持ち・時間的余裕が生まれる。
  • 受講者へ、講師から積極的にコミュニケーションを取るようにしていくと良い。
  • スライドのレイアウトはこだわらなくて良いのであれば、Marpを使うと素早く仕上げられる。

最後に

自分自身、新人研修の講師として、さらにはリモート環境で行うのは初めての経験でしたが、初回にしては上手くいったのではないかと思います。 来年も、機会があれば是非チャレンジしていきたいと思います。

なお、今回の研修内容については、こちらで公開しております。

secure-coding-training