dely Tech Blog

クラシル・TRILLを運営するdely株式会社の開発ブログです

Androidアプリで歩数機能をリリースするためにCASA Tier2セキュリティ評価 をおこないました

🐰はじめに

クラシルリワードのAndroidアプリエンジニアをしているnozakingです、こんにちは!
先日、クラシルリワードのAndroid版でも歩数機能が遂にリリースされました(2023年12月現在はまだ一部のユーザーにのみ提供中です)。機能実現のためにGoogleのFitness APIを利用しているのですが、API利用申請の過程でCASAセキュリティ評価を受ける必要がありました。 今回の記事では、CASAセキュリティ評価を通過し、検証文書(LOV)が発行されるまでの流れを紹介したいと思います。

play.google.com

歩数機能の画面。歩数に応じてゲージが溜まってインセンティブがもらえます。

🐰CASAセキュリティ評価って?

CASA(Cloud App Security Assessment)はGoogleが提供するアプリのセキュリティ評価プログラムで、アプリの信頼性を徹底的に確保するものです。

🔗 App Defense Alliance
https://appdefensealliance.dev/casa

GoogleのFitness APIを利用するためには、CASAのTier2セキュリティ評価を完了する必要がありました。

🐰CASA Tier2セキュリティ評価を完了するためにやったこと

CASA Tier2セキュリティ評価を通過するために私たちがやったことを紹介します。 基本的に公式で案内されている通りの流れを行いました。

🔗 CASA Tier 2 Process | App Defense Alliance
https://appdefensealliance.dev/casa/tier-2/tier2-overview

1. 通知

API利用申請のメールの中でCASA Tier2セキュリティ評価を実施するように指示を受けます。いくつかの選択肢が提示されましたが、私たちはオープンソースツールを活用したTier2セルフスキャンを選択しました。

2. アプリのスキャン

ガイダンスに従い、アプリケーションのスキャンを実施します。スキャンをおこなうと結果としてCWEリストが出力されます。CWEは、ソフトウェアおよびハードウェアの弱点タイプのリストで、コミュニティによって開発されたものです。

cwe.mitre.org

この工程はプロセスに記載されているものの、結果のCWEリストを提出する機会はありませんでした。 とはいえ、何かCWE結果が何かしらあれば、後々対応することになるはずなのでここで対応しておいた方が後でスムーズだと思います。

3. 結果の送信
初回提出と修正対応

CASAポータルにアカウントを作成し、アプリに関する情報とアプリのソースコードを提出します。

rc.products.pwc.com

アプリのソースコード全体を提出可能な状態(zip)にまとめるのですが、詳しい手順は申請フォームの中に記載されているのでそれに従います。提出後、静的解析の結果が通知され、指摘事項があれば修正対応を行います。(たしか30〜1時間くらいで結果が来ました)

クラシルリワードのケースでは軽微な修正を数個対応するだけで済みました。 例えばセキュリティプロバイダにパッチを適用できるように対応するなどをおこないました。

🔗 Update your security provider to protect against SSL exploits
https://developer.android.com/training/articles/security-gms-provider

アンケート回答

静的解析を通過する連絡を受け取ったら、次はアンケートに回答を記入して提出します。こちらは十数ページに渡るほど項目数が多く、内容が難しく、すべて英語で記載する必要があったので時間が掛かりました。
アンケートの回答を提出すると、CASAの担当者から必要に応じて追加の質問が来ます。やりとりはCASAポータル内にあるメッセージ画面で行います。

質問に対して該当しない場合は N/A を記入し、その根拠を説明する必要があるのですが、ここが一番時間がかかったポイントです。

例えば、クラシルリワードにおけるアカウント管理はFirebase Authenticationを用いたGoogle認証だけなので、認証に関する質問内容についてN/Aと回答していました。これについて、Google認証APIの仕様(セキュリティ水準を満たすものかどうか)について詳細に説明を求められ、何度もやり取りを行いました。

4. ファイナライズ

アンケート回答後の問答を通過したら検証文書(LOV)が発行されます。このLOVをGoogleからのセキュリティ評価要求メールに返信し、Fitness APIの利用が承認されました。

🐰スムーズな完了のために

実は歩数機能の実装よりもGoogleからの承認を得るためのやり取りの方が多くの時間が掛かりました。スムーズに終えるために気をつけたいポイント、工夫を紹介したいと思います。

納得させるために必要なことは全て記載する

CASA担当者とのやり取りで、「これくらい説明すれば分かるだろう」と思っていてもなかなか伝わらなかった印象でした。何度もメッセージを送って返信を待つを繰り返すくらいなら、最初から具体的に詳細すぎるくらいに説明した方がスムーズに進んだなと思いました。

メッセージの作成はAIの助けを借りる

GoogleやCASA担当者からの返信は待つしかないですが、こちらボールになったらなるべく早く返すことが大事だと思います。今回のメッセージのやり取りは英語で行っていたのですが、私は英語が得意ではなかったため余計に時間を掛けないようにChatGPTを活用しました。

  • 伝えたい内容を箇条書きにする
  • ChatGPTで、このメールに箇条書きした内容を伝える返信メッセージを作成してほしいと依頼する
  • ChatGPTがいい感じの英語の文章を作成してくれる
  • 適切な形に修正して返信メッセージを送る

※質問の回答内容すべてを丸投げするのはNGです。伝えたい内容は自分でちゃんと考えましょう。

という感じで、返信する内容を考える以外は素早く行えました。ありがたい技術ですね。

🐰おわりに

時間はかかりましたが、CASAセキュリティ評価を受けることでセキュリティについて一定のレベルをクリアし、大きな達成感を得ました。

Android版のクラシルリワードでは歩数機能を一部のユーザーに公開中ですが、ユーザー体験や収益性をブラッシュアップさせ、全Androidユーザーにも使ってもらえるように改善を重ねているところです。歩数機能に対するユーザーからの期待も高まっているため、全Androidユーザーに最高の形で提供できるよう、これからも頑張ります。どうぞご期待ください!