Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

セキュリティエンジニアへの道:私のキャリアチェンジ物語 / The Road to Becoming a Security Engineer: My Story of Career Change

* English version follows after the Japanese

こんにちは。メルカリのProduct Securityチームでセキュリティエンジニアをしている@gloriaです。ブログを書くのが随分お久しぶりなのですが、前にQAと自動化テストについて記事をフォローしていた方がいらっしゃったら、当時に自動化テストエンジニアとして書いたISTQBテスト自動化エンジニア認定資格STARWESTカンファレンス、とAQA POP TALKの記事を読んだことがあるかもしれません。

今回は、自動化テストエンジニアからセキュリティエンジニアへのキャリアチェンジについてお話して、キャリアチェンジを検討中、またはしている方にアドバイスを共有したいと思います。最後に、セキュリティに興味がある方に、得に役に立った教材やお勧めのリソースなどを軽く紹介したいと思います。

そもそも何でキャリアチェンジ?

2017年11月に、自動化テストエンジニアとしてメルカリに入社しました。それ以来、自動化に関して様々なプロジェクトに関わらせていただきました:Android、iOS、RESTful API、マイクロサービスとウェブアプリの自動テスト、社内ツールの作成、など。そして、2019年10月、入社してからちょうど二年ぐらい、Product Securityチームに新しいセキュリティエンジニアとしてジョインしました。

キャリアチェンジをした理由なのですが、大半のエンジニアにはいつか、自分の成長と学習の速度に満足しなくなってしまう日が来るのではないかと思います。既に豊富な経験と専門知識を習得してしまっているため、これから先に学べられることが限られていて、役割により、新しいスキルを身に着けたり、新しい技術を触ったりする機会が減ることもあるでしょう。

ずっと成長や学びを続けたい人にとって、これはキャリアチェンジを検討するいいタイミングかもしれません。役割を変更すれば、新しいスキルセット、新しい技術を触る機会、新しい考え方も得られるでしょう。1つの分野のスペシャリストだけではなく、多様な分野の知識が得られ、1つ以上の分野のスペシャリストにもなれます。これはいわゆる「T形」と「パイ形」のスキルと呼ばれています。

f:id:gmgchow:20200512195706p:plain
専門家により、様々なスキルセットの形

現代のエンジニアは最低限として「T形」のスキルがどうしても必要だと言われています。得に近年、DevOpsなどの組織文化が浸透している為、エンジニアは開発とコーディングのスキルだけではなく、テスティング、リリースやモニタリング、リサーチなど、様々なスキルが必要になりました。「パイ形」と「櫛形」と言うパターンもありますが、特殊なスキルが多ければ、多いほど維持がし難くなってしまうので、「T形」か「パイ形」に目指す方が良いかもしれません。

キャリアチェンジへの道

もし一言でキャリアチェンジのアドバイスを言うなら、必ず勉強が必要だと思います。

私にとって、サイバーセキュリティは完全に経験のない分野で、前に開発や自動化で学んだ事が少しでも役に立ちましたが、ほとんどゼロから勉強し直しました。必要なスキルと知識を得る為、次の3つのリソースを推薦したいと思います。

  1. トレーニングコースと資格:もちろん資格のない分野もありますが、もしあれば取ってみれば良いのではないでしょうか。資格はあまり役に立たないと思っている方もいるかもしれませんが、目的のない勉強だったらなかなかモチベーションを出せない人も少なくないでしょう。決まったシラバスに従って勉強をすれば学びやすくなるし、資格は標準の知識を持っているのを証明するので履歴書にも書けるし、取ってみたらどうですか。

  2. 読書とリサーチ:新しい技術を勉強するための教材が山ほど存在していると思います。本、テックブログ、大学講座のスライド、過去のテックカンファレンスのプレゼンテーション、などがあるので、出来るだけたくさんの教材を読むのはお勧めです。

  3. 経験:資格や読書で勉強するのはもちろん良いですが、経験もとても大事だと思います。Product Securityチームに入った時、最初はメンターさんと一緒に簡単なタスクをしていましたが、経験を貯めて、だんだん自分で出来るようになりました。経験と言っても、自分の経験だけではなく、周りの人の経験も非常に勉強になると思います。先輩たちの働き方や考え方をしっかり観察して、覚えるのも1つの良い勉強手段だと思います。Product Securityチームは毎週、グループでタスクをレビューするためのミーティングがあるので、先輩たちの意見やアイデアをじっくり聞いて、対応の仕方などを把握してきました。

f:id:gmgchow:20200512200451p:plain
勉強の3つの重要な要素

サイバーセキュリティの勉強教材

トレーニングと資格

Product Securityチームのオンボーディングの一部として、SSCP (Systems Security Certified Practitioner)と言う人気なエントリーレベルの資格のCourseraオンライントレーニングコースを受けさせていただきました。このコースは動画講座、リーディング、模擬試験、筆記課題もあり、次の6つのドメインを中心に構成されています:

  1. アクセス制限
  2. セキュリティの運用と管理
  3. リスク、モニタリング、とインシデント対応・復旧
  4. 暗号
  5. ネットワークと通信
  6. システムとアプリケーションのセキュリティ

トレーニングコースを終えたら、まだ試験に合格できる自信がそれほどなかったので、補足教材を探しました。以下は今回利用したスタディガイド2冊で、お陰で合格が出来たのでとてもお勧めです!最後に、資格のシラバスを読み、学習事項を全て理解しているのかを再確認すれば良いと思います。※以下は英語での教材です

SSCP Systems Security Certified Practitioner All-in-One Exam Guide, Third Edition, 3rd Edition By Darril Gibson; Publisher: McGraw-Hill; Release Date: October 2018; ISBN: 9781260128710

  • この本は内容をとても分かりやすいように説明します。

(ISC)2 SSCP Systems Security Certified Practitioner Official Practice Tests By Mike Chapple, David Seidl; Publisher: Sybex; Release Date: January 2019; ISBN: 9781119543053

  • 内容を覚えたら、練習の質問で理解を深めるのは一番良いのではないでしょうか。この本の質問は他のガイドブックに比べて難しいので、試験の準備には特に良いと思います。

SSCP認定資格は取り甲斐がある資格だと思います。ネットワークセキュリティ、暗号、ポリシーやコンプライアンスなど、セキュリティエンジニアの知るべきことが含まれているので、とても良いエントリーレベルの資格です。ちなみに、移動する前にComptia Security+という別のエントリーレベルの資格も取りましたが、内容も試験の問題もあまり深くなく、比べると取りやすい気がするので、SSCPの方が役に立つではないかと思います。SSCPはセキュリティ業界の新人にはきっといいベースになると思うのでお勧めです。

読書とリサーチ

メルカリのProduct Securityチームは様々なプロダクトと開発チームと関わっている為、アプリケーションセキュリティの知識(モバイル、ウェブ、APIなど)、システム開発ライフサイクルにセキュリティを組み込む仕方、ハッカーのマインドセットなどを理解するのが必要です。以下はこの様な知識を勉強する時に特に役に立った本3冊です:※以下は英語での教材です

Threat Modeling: Designing for Security By Adam Shostack; Publisher: Wiley; Release Date: February 2014; ISBN: 9781118809990

  • この本はセキュリティのデザインレビューをする時に注意すべき点などを説明します。ハッカーのマインドセットを理解するのに非常に役に立った気がします。

The Web Application Hacker's Handbook, 2nd Edition By Dafydd Stuttard, Marcus Pinto; Publisher: Wiley; Release Date: September 2011; ISBN: 9781118026472

  • この本は少し古いですが、ウェブアプリケーションによくある脆弱性、どうやってセキュリティテスティングで見つけるのか、どうやって防ぐのかについて話します。手元で出来る自習的なチュートリアルもあります。

Agile Application Security By Michael Brunton-Spall, Rich Smith, Jim Bird, Laura Bell; Publisher: O'Reilly Media, Inc.; Release Date: September 2017; ISBN: 9781491938843

  • この本は開発スピードを減らしないでライフサイクル各ステージにセキュリティを組み込む仕方を教え、ベストプラクティスを提供します。

経験

私にとって、セキュリティの勉強の一番難しい所は実際の経験を得ることです。実際にハッキングをしてみたら、逮捕されてしまうでしょう!

幸いに、インターネット上にはアプリケーションハッキングを練習するためのリソースがいくつもあるので、利用してみれば良いと思います:NatasOWASP Juice ShopPortswigger Web Security Academy、など。しかし、ネットワークとシステムセキュリティの練習は精巧で、練習専用の環境がないと出来ないので、経験が割と得にくいです。今、ネットワークとシステムのハッキングを勉強するために、eLearnSecurityの侵入テストのトレーニングコースを受けています。 このコースが生徒専用のリモート環境を提供してくれるので、VPNで接続すればネットワークと脆弱性のスキャン、ブルートフォースアタックなどを練習することが出来ます。コースを終えたら、資格の試験もあります。一週間内、試験専用のネットワーク環境に完全に侵入が出来たら、eCPPT(eLearnSecurity Certified Professional Penetration Tester)資格に合格すると言う形の実践試験です。このコースをまだ始めたばかりなのですが、今のところはとても楽しんでいて、試験を終えたらまたブログを書こうと考えています。

キャリアチェンジの難点

キャリアチェンジは簡単に出来るわけではないと思います。前の分野で経験が多くてかなりシニアだったのに、新しい分野に入って新卒みたいになってしまう場合もきっとあると思います。会議に出ても内容がまだ把握できず、ちゃんと貢献することが出来ない場合もあるかもしれません。それでも大丈夫です、キャリアチェンジは時間が掛かるものですから。前に触ったことのない分野だったら、一瞬でスペシャリストになれるはずがないし、勉強を頑張り続けばきっとテキパキと仕事をこなせる日が来ると思います!

終わりに

近年、DevOpsやフルスタックのスキルが必要なポジションが増える中、エンジニアが様々な分野のスキルと知識を得て、中途でキャリアチェンジをするのはもう珍しくはありません。一瞬で別の分野のスペシャリストになれるわけがないし、時間とたくさんの勉強がどうしても必要です。キャリアチェンジで新しいスキルセットを得られるので、もし今のポジションで思ったより新しいことが学べられなく、成長ができなくなったような気がしたら、検討をしても良いのではと思います。


English Version

Hello, this is @gloria, a Security Engineer from Mercari’s Product Security Team. It has been a long time since I last wrote a blog article but if you were following our articles about QA and Automation, you may have seen my articles about ISTQB Advanced Test Automation Engineer certification, STARWEST Software Testing conference, and AQA Pop Talk event that I wrote in my previous role as an Automation Engineer.

Today, I want to write about my experience in transitioning from Automation Engineer to Security Engineer and share some tips for people who are considering or are in the middle of career change. I will also share some resources that I found useful in learning cybersecurity, for those who are also considering a transition to that field.

Why Change Roles?

I joined Mercari in November 2017 as a Software Engineer in Test (SET). Since then, I have worked on various projects involving automation such as automated UI testing for Android, iOS, RESTful API, microservices, and web applications, and building tools for testing. In October 2019, after almost two years at Mercari, I joined the Product Security Team as a new Security Engineer.

Why did I change roles? I believe that most engineers, at some point in their career, will eventually reach a point where their rate of learning has slowed down because they have become highly-experienced and specialized in their field. Depending on the role, there may not be many chances to acquire new skills or be exposed to new technologies.

For people who wish to continue growing and learning, I think this is a good time to consider a career change. When you change to a new role, you are exposed to a new set of skills, a new set of technologies, and a new way of thinking. Instead of being highly-skilled in only one area, you can become knowledgeable in multiple areas and highly-specialized in one or more fields. This is referred to as “T or Pi shaped skill”:

f:id:gmgchow:20200512201535p:plain
The different "shapes" of engineering skills

In today’s world, it is said that engineers need to have at least T-shaped skills. Especially with the emergence of DevOps and similar ideologies, it is necessary for engineers to have other skills like testing, release and monitoring, research, etc. in addition to their development and coding skills. Pi-shaped or Comb-shaped are also possible but the more fields you specialize in, the harder it is to keep your skills in all fields up-to-date so perhaps it may be better to aim for T or Pi.

The Transition

If I can only give you one word of advice, it would be “study”.

Security is a field that was completely new to me and although some knowledge about software development and automation can be applied, mostly I was starting from scratch. There are three main sources of information that I used to build up skills and knowledge:

  1. Training courses and certifications: Although these are not available for all fields, I would recommend it if it is an option. Some people say that certifications are meaningless but I think they are great for learning in a more structured way because studying on your own without a particular goal or direction can make it hard to stay motivated. Certifications also show that you have acquired a standard base level of knowledge so they will look great on your resume.

  2. Reading and Research: There are tons of resources available for learning new technology - books, blogs, university lecture slides, presentations from previous tech conferences, etc. I would recommend reading as much as possible to build up knowledge.

  3. Experience: Studying theory by taking certifications and reading is certainly helpful, but it needs to be paired with hands-on experience. I learned so much from working on small simple tasks with my mentor in the Product Security Team and then gradually building up to working on tasks on my own. Also, learning from experience doesn’t necessary mean that it has to be your own experience; you can learn a lot by observing how your senior team members work so their experience can also become a valuable learning resource to you. In the Product Security Team, we have weekly meetings where the team reviews tasks together and I find that just being able to listen to their thought processes and watch how they approach tasks has helped me learn so much.

f:id:gmgchow:20200512201716p:plain
Three important elements for learning

Resources for Learning Cybersecurity

Training and Certification

As a part of my on-boarding in the Product Security Team, I enrolled in Coursera's online training course for SSCP (Systems Security Certified Practitioner), a popular entry-level certification. The course had video lectures, reading, quizzes, and written assignments to check your understanding of concepts in six domains:

  1. Access Controls
  2. Security Operations and Administration
  3. Risk Identification, Monitoring, and Analysis/Incident Response and Recovery
  4. Cryptography
  5. Network and Communication Security
  6. Systems and Application Security

After I completed the training course, I felt that the material didn’t go into enough detail to prepare me for the exam so I searched for other resources to supplement my studying. Below are two study guides that I used, and I highly recommend them because they helped me passed the exam! You should also remember to check the certification’s syllabus to make sure that you have studied all of the concepts that will be tested.

SSCP Systems Security Certified Practitioner All-in-One Exam Guide, Third Edition, 3rd Edition By Darril Gibson; Publisher: McGraw-Hill; Release Date: October 2018; ISBN: 9781260128710

  • This guide explains concepts well and makes the material very easy to understand.

(ISC)2 SSCP Systems Security Certified Practitioner Official Practice Tests By Mike Chapple, David Seidl; Publisher: Sybex; Release Date: January 2019; ISBN: 9781119543053

  • After learning the concepts, you can test your knowledge and understanding by taking these practice exam questions! The questions in this book were more difficult than the ones in any other practice exams I found, so they prepared me well for the exam.

Overall, I feel that going for SSCP certification was worth it. It is a great entry-level certification that covers a very wide range of topics that every Security Engineer should have general knowledge about such as network security, cryptography, and policy and governance. By the way, before transitioning to my new team, I had also taken Comptia Security+, another popular entry-level certification. However, the material and exam questions for that certification don't go into as much detail and the exam felt easier to pass in comparison, so I think SSCP is better. It provides a good base for Security Engineers so I would definitely recommend it to newcomers to the field.

Reading and Research

The Product Security Team at Mercari works closely with our products and development teams so it is necessary to be knowledgeable about application security (mobile, web, APIs, etc.) and how to incorporate security into the software development process, as well as understand the hacker’s mindset. Below are three books that I found particularly helpful in building that knowledge:

Threat Modeling: Designing for Security By Adam Shostack; Publisher: Wiley; Release Date: February 2014; ISBN: 9781118809990

  • This book explains what to look for when conducting security design reviews. I found it very helpful in gaining insight about the hacker’s mindset.

The Web Application Hacker's Handbook, 2nd Edition By Dafydd Stuttard, Marcus Pinto; Publisher: Wiley; Release Date: September 2011; ISBN: 9781118026472

  • This book, although a little old, describes in detail vulnerabilities often found in web applications, how to detect them when conducting security testing, and how to prevent them. It also includes small hands-on tutorials that you can try.

Agile Application Security By Michael Brunton-Spall, Rich Smith, Jim Bird, Laura Bell; Publisher: O'Reilly Media, Inc.; Release Date: September 2017; ISBN: 9781491938843

  • This book teaches how to integrate security into every stage of the software development process without slowing down development, and it suggests some best practices to follow.

Experience

In my opinion, the hardest part of learning security is getting the hands-on experience - you can’t just go out and start hacking things or you will get arrested!

Thankfully, there are many online resources for learning application hacking including Natas, OWASP Juice Shop, Portswigger Web Security Academy, etc. so I would recommend checking them out. Unfortunately, network and system security are a bit hard to gain experience in because it requires setting up elaborate testing environments to experiment with. Currently, I am taking eLearnSecurity’s Penetration Testing course in order to learn and practice network and system attacks. The course includes labs where students can connect to the remote learning environment using a VPN and practice a variety of skills like network and vulnerability scanning, bruteforcing credentials, etc. so that there is no need to set up your own systems to practice on. At the end of the course, there is a certification exam (eCPPT eLearnSecurity Certified Professional Penetration Tester) where students are given one week to fully compromise a test environment. I have only started this course recently but I am enjoying it so far; maybe I will write another blog article when I finish the course and exam.

Challenges

Career change is not meant to be easy. You may find yourself going from relatively senior in your previous field to being a complete junior in your new field. Sometimes you might feel like you know nothing and it’s hard to participate in discussions because you don’t understand enough to be able to contribute. That’s fine, career change takes time - unless it is a field that you have already been extensively exposed to, you cannot magically transition in an instant. As long as you keep studying, you will get there!

Endnote

These days, it is very common for engineers to change roles because the emergence of positions requiring DevOps and full stack development have pushed many people to become skilled across multiple fields. Career change does not happen in an instant- it is an ongoing process that takes lots of time and studying. If you feel that you have reached a point in your career where you are not learning and growing as much as you would like, don’t be afraid to explore another field as it will certainly be a rewarding learning experience!