こんにちは。CTOのzoo(YOUTRUST/Twitter)です。
最近はタルトを作ることを覚えました。日曜日に仕込んで月曜日の朝に焼くと、一週間の始まりがとても素敵になることを知りました。
今回は、先日行ったMeta社のデータ保護評価の対応を紹介したいと思います。
Meta社のデータ保護評価の概要
Meta社のプラットフォームを利用したアプリを開発し利用する際に、Meta社から「データ保護評価」を行うことを求められます。 アンケート形式で答えることになるのですが、内容によっては評価の回答を裏付ける証拠を提出することが求められます。
データ保護評価の詳細が気になる方は、こちらのMeta社のページをご覧ください。
データ保護評価 - Metaアプリ開発 - ドキュメンテーション - Meta for Developers
YOUTRUSTでもFacebookのAPIを利用しているため、このアンケートに答えています。 そして先日、アンケートの回答に対して、「Platform Term 6.a.i.1 - Data security requirements」に関する指摘を受け、追加の対応を行いました。
指摘を受けた時には、正直どうしたらいいかすぐには分からず、対応に苦慮しました。 一方で、振り返るとなんということはなかったのですが、それは普段からセキュリティを担保する対応を取っていたからに他なりません。
インフラ領域やセキュリティ領域は何も起きないことが良いことであり、日頃の成果が見えづらい部分ではあります。しかし、今回の対応を通して、自分たちを褒めてあげてよいな、と改めて思いました。
指摘を受けた当時は、もう少し世の中に情報があればと思いながら、右往左往を繰り返しつつ対応を進めました。まさに暗中模索でした。 そこで、同じような境遇になった人に参考にしてもらえればと思い、実際にYOUTRUSTが対応した内容を記事にしたいと思います。
対応内容
まずは指摘内容をきちんと読む
『正直どうしたらいいかすぐには分からず』とは書いたのですが、指摘内容をよくよく読むと、対応に関するアドバイスが含まれていました。 Test the App and Systems for Vulnerabilities and Security Issues を参考に証拠を提出してください、というアドバイスであり、そのページを見ながら対応方針を決めました。
方針を決める
上記該当箇所のデータセキュリティの要求事項を確認すると以下のように書かれています。
Applicable to all developers:
- You must have tested the software used to process Platform Data for security vulnerabilities by either conducting:
- A penetration test of the app/system, or
- A vulnerability scan/static analysis of the software
- The output of the test must show that there are no unresolved critical or high severity vulnerabilities
- The test must have been completed within the past 12 months
Additional requirements for developers that process Platform Data server side:
- You must have specifically tested server side software for security vulnerabilities by either conducting:
- A penetration test of the app/system, or
- A vulnerability scan/static analysis You must have also tested the cloud configuration for security issues if you are using a cloud hosting provider This requirement applies irrespective of the hosting approach (e.g., BaaS, PaaS, IaaS, self hosted, or hybrid)
また、静的アプリケーションセキュリティテストに関しては、Source Code Security Analyzers | NIST を参考にするといいよ、と書かれており、 クラウド構成に関しては、NCC Scout SuiteとAWS Security Hubが具体的に紹介されていました。
上記の情報を元に、以下のように考え、最終的に4つの診断を行うことを決めました。
- インフラの構成においては、紹介されているNCC Scout SuiteとAWS Security Hubの診断を実施して、問題がないことを示せればよさそう
- アプリケーションの脆弱性診断を5月に実施する予定だが、それだと間に合わないため、要求事項に記載の『A vulnerability scan/static analysis』を実施する必要がありそう
- FacebookのAPIを利用しているアプリケーションはバックエンドアプリケーションとiOS/Androidアプリケーションのため、それらに関して Source Code Security Analyzers | NIST からツールを選択する
- バックエンドアプリケーションに関しては、そもそもCIで Brakeman による診断を実行しているので、それを提出すれば良さそう
- iOS/Androidアプリケーションに関しては、日本語でも情報が出てくる MobSF を使うのが良さそう
実施した4つの診断
- NCC Scout Suite による診断
- AWS Security Hubによる診断
- BrakemanによるRailsで作成されたバックエンドアプリケーションのセキュリティ診断
- MobSFによるモバイルアプリのセキュリティ診断
NCC Scout Suite と AWS Security Hub による診断
Cloud Configuration Review に記載されている診断を実施しました。
セキュリティ上の問題が見つかれば対応した上でMeta社に報告する必要があると考えていたのですが、問題はありませんでした。 診断結果としては、Criticalと判断された項目がいくつかあったものの、実際には問題がないものであり、診断結果の送付とともに問題がないことをしっかりと説明しました。
なお、上記ページにはターミナル上での診断の実行結果が具体例として載っていますが、GUIの診断結果画面を送付し受け入れられました。
BrakemanによるRailsで作成されたバックエンドアプリケーションのセキュリティ診断
診断の結果、問題は見つからなかったので、診断結果をそのまま送付しました。 また、診断結果を送付する際に、Brakemanとは何か、という説明も合わせて行いました。
MobSFによるモバイルアプリのセキュリティ診断
NCC Scout SuiteやAWS Security Hubと同様に診断結果にCriticalな項目がありましたが、それらの項目について調べた結果、問題がないことが分かり、診断結果とともに問題がないことを送付しました。
まとめると
診断をする、診断の結果にCriticalなものがありそれが本当に問題なのだとしたら改善した上で再度診断する(ことが必要だと思います)、Criticalなものが実際には問題ではなければそうであることをしっかり説明する、ということを愚直に行いました。
心強い出会いと感謝
実は、Meta社に指摘を受けた際には非常に焦っていました。 振り返ると、「そんなに焦る必要あるの?」という感じに見えるのですが、「何をしたらいいのか分からない」からのスタートであり、FacebookのAPIを使えなくなることは弊社サービスにおいては致命的であるため、冷静でいるのが難しかったです。
そんな中、NewsPicksの高山さんの記事に出会い、1つずつ向き合うしかないという強い気持ちが持てたと同時に、大変な状況になっているのは自分たちだけではないのだ、頑張ろうという気持ちになりました。また、対応を進める中で、高山さんに直接お話を伺うこともでき、アドバイスと同時に大きな勇気をもらいました。感謝してもしきれないです。 tech.uzabase.com
そのようなことがあり、自分たちが行ったことも誰かの参考になればと思い、対応が完了して落ち着いたら、記事を書こうと決めていました。
YOUTRUST、いい会社です
手前味噌にはなるのですが、YOUTRUSTを改めて良い会社だと思うエピソードもありました。
Meta社からの指摘に対してはエンジニアが対応するしかありませんでしたが、もし万が一対応が間に合わずにFacebookを使えなくなった場合にどうするかということをビジネスチームが猛スピードで検討してくれて、「もし対応が間に合わなくてもFacebookを使えなくなっても大丈夫ですよ」と多くの人が言ってくれました。
何してるんだ!と言われてもおかしくはない状況にもかかわらず、前向きな言葉を投げかけてもらえて、エンジニアたちの大きな力になりました。
おわりに
きっかけはなんであれ、今回の対応を行ったことで、セキュリティに関する知識・経験を増すことができました。当時は辛いという感情が強かったですが、今となっては良い機会だったと思っています。
この件を機に一回り成長したYOUTRUSTエンジニアチームに興味がある方は、ぜひご応募ください。お待ちしております。