2022-11-9
新しいことを学び挑戦するSecurity Engineeringは、グループのセキュリティを横断的かつ包括的にサポートする #MercariSecurityPrivacy
メルカリのセキュリティ&プライバシーに関するチームを紹介する連載、題して『Meet Mercari’s Security & Privacy Team』。今回は、Security Engineeringチームを特集します。
Security Engineeringチームは、広範囲のドメインを担当しており、Platform Security、Corporate IT Security、Chaos Security(Internal Red Teaming)、Threat Detection Engineeringの4つのコア・ファンクションに分かれています。今回の記事では「Platform Security」に焦点を当てていきます。
Platform Securityチームは、メルカリのマイクロサービスアーキテクチャ、Kubernetesクラスタ、CI/CDパイプラインなどのサプライチェーン、クラウドなど、インフラストラクチャのセキュリティを強化することをミッションとしています。これらの新しい技術はメルカリをスケールさせながら迅速に開発することが可能となる一方、実装にはさまざまなセキュリティ上の課題が伴います。メルカリでは、これらの課題解決を目指しプラットフォームセキュリティをサポートしているメンバー3人(Simon、Matt、末澤)に、メルカリにおけるセキュリティエンジニアリングの醍醐味を伺います。
※Mattは、冬に向けて薪割りに勤しんでいたため、写真撮影に参加できませんでした。
この記事に登場する人
-
Simon Giroux(@simon)Security Engineeringチームのマネージャー。大学卒業後からセキュリティに従事し、ペネトレーションテスト、コンピュータ・フォレンジック調査、ソリューションのデプロイメント、監査、モニタリングなどを担当。2018年3月にメルカリに入社し、以後、メルカリのインフラとお客さまをサイバー攻撃から守ってきた。マネージャーとして、チームメンバーのキャリア支援とメルカリでのセキュリティ上の重要課題の解決を目標として掲げている。 -
Matthew Lionetti(@batman)2018年にセキュリティエンジニアとしてメルカリに入社し、メルカリのインフラとクラウドセキュリティの強化に努めてきた。もうすぐ冬なので、空いた時間は薪割り用の木材の状態の確認に励んでいる。 -
末澤裕希(@rung)2019年2月にメルカリ入社。低レイヤーの技術とGo言語が好き。趣味は読書とおいしい紅茶を飲むこと。
https://www.suezawa.net/
フラットなチーム体制で4つのコア・ファンクションを支援
──はじめに、自己紹介をお願いします。
Simon:Security Engineeringチームのマネージャーをしています、Simonです。2018年の頭にメルカリに入社し、セキュリティチームのメンバーとなりましたが、大学を卒業してからずっとセキュリティの仕事をしています。
Matt: こんにちは、Mattです。セキュリティエンジニアとして、主にマイクロサービスやクラウドインフラのセキュリティを担当しています。また、社内レッドチーミングの構築も行っています。私はSimonの少しあとに入社しましたが、同じく学校を卒業してからずっとセキュリティの分野で仕事をしてきました。長い散歩に出かけたり、森に行ってロッククライミングしたり、寒い冬に向けて薪割りをするのが好きです。
末澤:こんにちは、末澤(@rung)です。Mattとともに、プラットフォームインフラのセキュリティを担当してます。2019年にメルカリに入社する前は、セキュリティベンダーに勤めていました。現在は、さまざまなチームやポジションの方と一緒にプラットフォームセキュリティやコーポレートITセキュリティ関連のプロジェクトなどを推進したり、新しくできたグループ会社のセキュリティのアーキテクト、フィッシングサイトの自動検知 / 対応などに携わっています。
Simon Giroux(@simon)
──Security Engineeringチームのミッションや業務内容について教えてください。
Simon:NikolayがCISO Officeについて紹介したこちらの記事でも説明したとおり、Security Engineering部門は2つのチームから構成されています。Product Securityチームはアプリケーションやビジネスロジックのレイヤー、Security Engineeringチームはインフラのレイヤーでのセキュリティに注力しています。外からはSecurity Engineeringは一つのチームとして一つの分野に注力していると思われているかもしれませんが、実際は多岐にわたるドメインを見ていて、それをPlatform Security、Corporate IT Security、Chaos Security(Internal Red Teaming)、そしてThread Detection Engineeringの4つのコア・ファンクションに分けています。
Matt:カバーすべき範囲が広いように感じるかもしれませんが、フラットなチーム体制で、協力しながら複数のファンクションを横断して対応を行っています。メルカリでは、物事が進むスピードが速く、優秀な人材もそろっています。1つのチームの配下に複数のファンクションを置くことで、スピーディーな対応が可能となり、プロジェクトに関わらずセキュリティに対して包括的なアプローチを取ることができます。
末澤:私とMattは主にプラットフォームセキュリティに取り組んでいます。メルカリのインフラストラクチャーは、Infrastructure as Codeでのコード管理、CI/CDツールやクラウドの使用など、モダンなツールを使用して構築されています。私たちは、このようなモダンなシステムのセキュリティ強化に重点を置いており、インフラのセキュリティに関するビジョンとロードマップを作成しました。このロードマップを使って、メルカリのPlatformチームとともにセキュリティリスクを特定し、ソリューションの設計を行っています。インフラの規模が拡大してもセキュリティを担保できるよう、自動化にも注力しています。
いくつか私の行った仕事の例を挙げますと、新しいグループ会社の全体的なセキュリティアーキテクチャをデザインするプロジェクトや、KubernetesやメルカリCI/CDパイプラインのセキュリティデザインや実装を行ってきました。
Hiroki “rung” Suezawa(@rung)
──チームの特徴を教えてください。
Simon:私は職務上、このチームのマネージャーですが、だからと言って一人ですべてを決めている訳ではありません。チームとして仕事し、お互いを信頼し、一緒に意思決定を行います。この連携こそがチームが上手く回っている秘訣だと思います。お互いを信頼し、失敗から学ぶことができれば、ビジネスの優先事項やセキュリティ・プライバシー要件を前提により良い意思決定が可能となり、セキュリティを担保しながらメルカリのバリューの一つであるGo Boldを体現することができます。
Matt:私たちのチームは多岐にわたるファンクションをサポートしないといけないため、非常に多様な技術的知識やスキルセットを有しています。私たちのセキュリティに対するアプローチは、どちらかというとハンズオン、ボトムアップのエンジニアリングスタイルだと思っています。つまりは、自分たちがプロジェクトの完全なるオーナーシップを持ち、実現に向けてリードしていく必要があります。また、セキュリティを強化していくためには、Secuirtyチームだけで物事を決めるのではなく、SREチームやMicroservice Platformチームなど、他のエンジニアリングチームと協力し、密に連携することもとても重要です。
末澤:このチームの何が素晴らしいかというと、チャレンジできる仕事の幅です。メルカリのインフラは、マイクロサービスアーキテクチャ、Kubernetes、CI/CDパイプライン、クラウドインフラなど、幅広くモダンな技術を使用し、私たちはそのセキュリティの強化に取り組んでいます。活用しているモダンな技術により開発者は、迅速にアプリケーションを開発し、スケールさせることができます。しかし、これらの新しい技術を使うことで、さまざまなセキュリティ上の課題も出てきますし、新しい技術は必ずしも、しっかりとしたセキュリティ対策が施されているとは限りません。このチームの一番素晴らしい点は、このような新しく、刺激的な技術やツールにおける新たなセキュリティ上の課題に挑戦できることです。
──そもそもメルカリ入社を決めた理由は?
Simon:未知の挑戦がたくさんあることです!メルカリは流動的で、常に変化し続けています。そのため、私たちがあらゆる情報をキャッチアップして理解できるようになるまで、プロジェクトで連携する他のチームに待ってもらうことは不可能です。カオスに従って前進し、すべてを把握できないことを受け入れ、チームとして何が重要かを見抜くことができると信じています。優秀なエンジニアがたくさんいる会社ですし、ものづくりを止めるべきではありません。
Matt:前職では、セキュリティをゼロから作り上げるのが本当に楽しかったのですが、セキュリティエンジニアとして、一人でできることは限界に達したと感じました。過去に一緒に仕事をし、キャリアを通して素晴らしいメンターでもあり、これからも一緒に仕事をして学び続けたいと思ったエンジニアもメルカリに転職したので、私もメルカリに入社することを決めました。
末澤:マイクロサービスアーキテクチャ環境におけるコンテナの活用といった、新しいテクノロジーを使う仕事がしたかったからです!また、業務で英語を使いたいというのもありました。Securityチームは大変多様性に富んでいて、業務を通して英語を使う機会がたくさんあります。メルカリに入社するまでは英語を使ったことがありませんでしたが、チームのメンバー全員がとても協力的でインクルーシブなため、仕事をしながら、同時にコミュニケーションスキルも向上させることができました。
──メルカリのセキュリティを強化するのはとても大変そうですね。どのような方針で取り組んでいますか?
Simon:私たちはプロダクトのリリースをブロックするゲートキーパーになろうとしているのではなく、むしろ逆です。絶え間なく流れてくるSlackのメッセージを追いつつ、新規 / 継続中のプロジェクトの進捗を把握するようにしています。何よりも、エンジニアと連携し、エンジニアがやりたいことができるように支援することを目指しています。できる限り全体像と長期計画を頭に入れながら、重要なトピックにフォーカスします。Security StrategyチームのJasonや、他のSecurityチームのメンバーからのサポートにより、長期的にビジネスやプランに最も影響のあることに注力できます。
Matt:可能な限りセキュリティを自動化・抽象化することで、セキュリティを設定に組み込もうとしています。そのためには、Simonがお話ししたとおり、他のエンジニアリングチームと密に連携する必要があります。SREやMicroservice Platformチームとともに、PoCを実施したり、Falco/SysdigなどのKubernetesセキュリティツールを導入したり、標準化されたTerraformの基盤に対してセキュリティ標準やガードレールを構築したりと、さまざまな取り組みを行なってきました。このようなプロジェクトは徹底したボトムアップのアプローチが必要なため、導入したいソリューションや統制について考えるにあたり、関係者全員に当事者意識を持って参加してもらい、Design Docなどを活用して協力していくことが重要です。これにより、全員が同じ時間・場所に集まらなくても各チームや関係者からフィードバックをもらい、合意形成することができ、その意思決定のプロセスも記録に残すことができます。メルカリにとって適切なセキュリティツールを選定し、実際に導入したツールを各チームが高く評価し、効果的に使用してもらうために、この協調プロセスは極めて重要だと考えています。
末澤:その通りです!最新のアプローチとしては抽象化によって、プラットフォームのインターフェイスを構築するアプローチを取っています。メルカリでは、マイクロサービスアーキテクチャを採用しています。メルカリのPlatformチームは、エンジニア向けにさまざまなテンプレートを提供するなどの抽象化を行っています。エンジニアの人数が多く、全員にセキュリティを徹底させることは難しいため、開発者に対して標準の抽象化レイヤーを提供することで、スケールしながらセキュリティを強化することができます。
また、最近はCI/CDのセキュリティに携わっています。エンジニアにActionsとしてセキュアなテンプレートを提供することで、あらかじめセキュリティを設定に組み込むことができ、PlatformチームやSecurityチームが簡単に中央のテンプレートの変更も行うことができます。これで、セキュリティを担保しながらスケールさせることができます!こちらのEngineering Blogにも抽象化を使った事例を紹介していますので、よかったら読んでみてください。
──昨年、メルカリではコードベースの一部が漏洩するインシデントが発生しました。Security Engineeringチームはこのインシデント対応にどのように関わりましたか?
Simon:昨年、Codecov(社内で使用していた外部のコードカバレッジツール)の脆弱性により、認証なしでソースコードの一部にアクセスできてしまうインシデントが発生しました。
先ほど、メルカリは誰かのために開発やサービスを決して止めないと言いましたが、本当に必要なときはストップします。2021年4月にインシデントが発覚し、社内に危険を知らせました。その際、社員全員が作業を一旦中断してもらい、インシデントの対応に集中しました。
Matt:インシデントの知らせを受けたとき、チーム全員が即座に対応に加わり、影響を受けているすべてのチームに連絡しました。エンジニアからも多くのサポートを受け、解決に向けて会社が一丸となって協力し合いました。ゴールデンウィーク中も業務することになりましたが、このような強いエンジニアリング文化とセキュリティに対する理解とオーナーシップがなければ、対応がもっと大変だったかと思います。幸運にも、インシデントの前にSourcegraph(コード検索ツール)を導入していたため、コードベース内のシークレットとなりうる情報の特定と対処を容易に進めることができました。
Simon:数時間後には、問題の対処に向けて全社で取り組んでいました。まさに、All for Oneです。会社でこのような光景を目の当たりにしたのは初めてです。また、多くの関係者やメンバーとのコミュニケーションも必要とし、Suezawaさんがレポーティングにおいて中心的な役割を果たしました。
末澤:そうですね。Securityチームは経営陣、広報、エンジニアリングチームから多くの注目を浴びていました。チームとして影響範囲の調査、対応策の検討、リスクの解消を行いながら、最新情報を共有することが求められました。メルカリ史上、最大のセキュリティインシデントでした。私としては、テクノロジーだけでなく、コミュニケーションおよびリーダシップの重要性を肌で痛感した出来事でした。まだまだセキュリティを改善していく必要があると考えていますが、光栄にも今年、インシデントの対応方法について賞をいただきました。インシデントで反省や学びを外部に広く公開してきたこともあり、受賞の知らせを聞いたときは嬉しかったです。
Matt:インシデント発生に伴い、やらないといけないことがたくさんありましたが、チームとしてCI/CDの全面的な刷新、シークレットの管理方法の改善、Infrastructure as Codeの自動化の推進と対策に取り組みました。GitHubにコミットしたシークレットを検出するためにコードをスキャンする社内のソリューションはいくつかありましたが、ただ単に検出するだけでなく、予防策を強化する必要がありました。そのため、他チームと協力しながらGitのpre-commit hookツールを導入したり、CIチェックを行ったりしつつ、GitHub Advanced Securityやシークレットをスキャンしたり、コミットを予防できるGitHubのサービスの検討を開始しました。また、CI/CDをCircleCIからGCP Cloud Buildに移行し、イングレス/エグレスのトラフィックのセキュリティをよりコントロールできるようにセルフホステッドのGitHub Actionsランナーのプランニングを始めました。
コンテキストが莫大に増えている。あらゆる課題において鍵となるのは密なコミュニケーション
──チームとして取り組んでいる代表的なプロジェクトを教えてください。
Matt:さまざまなビジネスやプロダクトが使用しているインフラのセキュリティを強化するために、よりグローバルなアプローチを取っていきたいと考えています。そのために、インフラに関する長期的なセキュリティロードマップを作成し、状況を確認したり、会社の成長に合わせたガイドとして利用しています。その中でも、現段階ではMicroservicesの開発におけるデプロイや設定変更のためのパイプラインが最もセキュリティの影響が大きそうなので、そこのセキュリティを強化するために多くの時間と労力を割いています。つまりは、クラウド、GitHub、CI/CDインフラ、マイクロサービス、Kubernetesセキュリティ上のリソースへのアクセス管理の強化に努めています。パイプラインの中にも、さまざまなセキュリティのメカニズムが入り混じっていますので、すべてを整理し、取りまとめる必要があります。
Simon:チームとしては、あまり運用タスクを扱っていません。典型的なプロジェクトを例として挙げると、チームのメンバーはメルコインのような重要プロジェクトに初期段階から関与したり、本番環境のインフラプラットフォームなど基盤となるシステムに携わってきました。
──成果に対する周囲からの反応はありましたか?
末澤:実績については、一部外部にも公開しています。例えば、Kubernetesのセキュリティについて2回ほど外部のMeetupで説明していますし、外部のセキュリティカンファレンスでもCI/CDセキュリティについて発表しました。社内においても評価いただいており、たとえば私は社内表彰としてAll for One賞、MattがGo Bold賞を過去にいただきました。功績が認められ、会社としてもセキュリティに対する理解が深まっているのは嬉しい限りです。
Simon:チームとしては、あまり運用タスクを扱っていません。典型的なプロジェクトを例として挙げると、チームのメンバーはメルコインのような重要プロジェクトに初期段階から関与したり、本番環境のインフラプラットフォームなど基盤となるシステムに携わってきました。
https://engineering.mercari.com/en/blog/category/security/
──では、現在抱えている課題は?
Simon:メルカリは急速に拡大しており、ここ数年、事業の成長に合わせて、多くの新しいプロジェクトやビジネスが立ち上がったり、新しいアイディアも出てきています。過去数年かけて蓄積してきた知識を維持することが難しくなってきたため、その知識が失われないように、そしてできる限り拡散するためにもドキュメント化することがとても重要です。会社が成長するにつれて、把握しておかないといけないコンテキストも莫大に増えています。そのため、力を合わせて協働できる結束力のあるチームが不可欠です。全員の協力のもと、常に最新状況を把握していく必要があります。
Matt:すべてにセキュリティ対策を施すには時間が足りません。やりたいプロジェクトがたくさんあり、セキュリティにも貢献したいですが、私は一エンジニアにしか過ぎません。メルカリでは、変化のスピードが速く、インフラも常に進化しています。そのため、変化に付いていくだけでも大変なときもあります。幸運にもDesign Docがありますので、これらを活用して参考にしたり、レビューすることで最新状況を把握することができます。
Simon:概して、あらゆる課題においてコミュニケーションが鍵となります。メンバーと密に連絡を取り合い、期待値を適切に管理することが重要です。
求められるのは、新たなスキルを学び挑戦する姿勢
──現在、メンバーを採用中ですが、どのような方だとチームにぴったりの人材だと思いますか?
Simon:理想の人物像としては、アジャイル開発者で、Go言語を使ったコーディングの経験があり、GCP Cloudインフラの専門知識を持つSREであり、ログ解析やインシデント対応の経験があるレッドチームのメンバーであり、専門的な話を経営陣に対して噛み砕いて概要を説明することができる方です。本番環境のテックスタックを理解することで業務もやりやすくなるため、このようなスキルを持ち合わせておくことはとても重要だと考えています。また、インシデント対応にも関わっているため、いざというときにとても役立つ知識です。
Matt:理想的な候補者は、セキュリティとコンピュータサイエンスの基礎がしっかりと身に付いていて、かつSREとしての業務経験もしくはBackendの開発経験が多少でもある方です。エンジニアとも密に連携する必要があるため、私たちとしても同じツールで作業してセキュリティを構築できることが重要です。メルカリの環境は人材、テックスタックの両面において大変多様で、速いスピードで変化し続けているため、新たなスキルを学んだり、新しいことに挑戦する姿勢を持つことは必須条件です。
末澤:そうですね。私もエンジニアリングを楽しんでいて、プロダクト側と一緒に仕事をすることが好きな方と一緒に働きたいですね。
──メルカリでは、今後どのようなチャンスが待ち受けていますか?
Simon:メルカリはグローバル展開を目指しています。つまりは、多種多様な経験や文化的背景を持った人材を必要としています。我々のチームとしても、各カンパニーが必要とする異なるタイプのインフラに対応していくことが求められています。異なるインフラやメソッドが混在すると、複雑性が増し、メンテナンスも大変になります。しかし、同時にやりがいのあるプロジェクトが無限に存在することも意味し、スピードとセキュリティのバランスを見極めながら進めていく必要があります。
末澤:メンバーは、プロジェクトに対してオーナーシップを持ち、クラウド環境のセキュリティ対策、プラットフォームインフラストラクチャ、サプライチェーンセキュリティなど、さまざまな新しいセキュリティ上の課題に取り組むことができます。以前、セキュリティベンダーで働いた経験がありますが、当時、プロダクトを開発している会社が抱えているリアルなセキュリティの課題をうまく想像することができませんでした。しかし、メルカリではプロダクト組織の内部で、ユニークで興味深いセキュリティ課題に取り組むことができます。多くのセキュリティエンジニアにとって、素晴らしいチャンスだと思います。
Matt:よりグローバルなアプローチに向けて多くの改善と検証を繰り返しながら、セキュリティロードマップを作成し、更新していかなければいけません。自動化を活用して、さまざまな改善をおこなっていきたいですし、サプライチェーン周りのセキュリティ強化も必要です。
──チームとしての将来の目標は?
Simon:メンバーがStaff Engineerとして活躍し、専任メンバーとして主要なプロジェクトに参加してもらいたいです。プロジェクトから上がってくるセキュリティ要件に対応し、プロジェクトの開始からセキュリティアーキテクチャの意思決定までをリードしてほしいと思っています。すでにプロジェクトや新会社のサポートは行っていますが、メルカリの新たな挑戦に、より深く関与し、インパクトを与えることができると信じています。
Matt:プラットフォームセキュリティの領域により多くのリソースを割り当てて、エンジニアリングチームとより密接に連携してセキュリティの強化を行いたいです。また、社内レッドチーミングの活動も強化していきたいですね。
末澤:Securityチームをよりグローバルなチームにし、大きなテック企業とグローバルにわたり合えるようなセキュリティ対策を実践していきたいです。
──最後に読者の皆さんにメッセージをお願いします!
Simon:面接でお会いする候補者の皆さんにもお伝えしていますが、メルカリは非常にチャレンジングというよりはカオスな職場です。常に、色々な方向に向かって走っています。と同時に、仕事は楽しく、ワクワクするような目標を掲げています。チームの内外には優秀で刺激的な人たちが多く、そのような方々に囲まれながら仕事することができます。退屈する暇もありませんが、それでも息抜きも兼ねて、業務後にボードゲームをして遊んだりし、同僚の枠を越え、素晴らしい友人・仲間たちでもあります。
Suezawa:メルカリでは、マネージャーパスだけでなく、Individual Contributorとしてキャリアを詰むことができますし、たくさんのことに挑戦できます!私も、面白いテクノロジーや事業領域など、新しいことを経験する機会に恵まれてきました。ぜひ、一緒に働きましょう!
Matt:セキュリティアーキテクチャやカオスセキュリティ(社内レッドチーミング)にご興味がありましたら、ぜひ応募してみてください!メルカリはエンジニアにとって楽しい職場でありながら、キャリアを前進できる多くの機会も提供しています。