1.Gmailの安全性の高いログイン方法(OAuth2認証)の正式承認を受けることを断念した理由
OAuth2認証を使えば様々なカテゴリのデータにアクセスできます。そのカテゴリのことをOAuth2では「スコープ」と呼んでいます。Gmail等のGoogle
APIを使いたいアプリは、必要なスコープを選んでOAuth2認証を経て利用できるようにします。スコープには、情報の機密性の高さによって3段階にランク分けされています。「推奨」、「機密性の高い」、「制限付き」の3つで、後ろに行くほど厳しい条件になります。今回VoicePopper4が利用しなければならないGmailというスコープは、最も厳しい機密性のランクである「制限付きスコープ」に属します。
※Gmailが「制限付きスコープ」である根拠は、こちらのGmail API開発者向けサイトをご参照ください。
Google APIを利用したいアプリは、Googleによってアプリの審査を受けてそれに合格しなければなりません。機密性のランクによってその厳しさが変わります。「推奨スコープ」については、審査を受ける必要がありません。「機密性の高いスコープ」では、「検証」と呼ばれる審査を通過する必要があります。最後にGmailが属する「制限付きスコープ」では、Googleによる「検証」と呼ばれる審査に加えて、セキュリティ評価機関による評価も毎年受ける必要があります。セキュリティ評価を受けるためにはコストがかかり、それがアプリの規模によって$10,000〜$75,000という金額となります(※小規模アプリの場合は$4,500という例外もあります)。セキュリティ評価コストはいわば受験料ですから合格しなくても払わなければならないものです。不合格であれば再評価にさらに金額が上乗せされます。
※「検証」に関する根拠は、Google Cloud PlatformのHelpのこちらのページをご参照ください。
※「セキュリティ評価」に関する根拠は、上記ページの"Security assessment"の項目をご参照ください。
残念ながらオンラインソフト工房の事業規模では、この「セキュリティ評価」の金額では赤字となり、受け入れることができない条件でした。個人的な印象となりますが、金額から察するに個人のメールソフト作者が承認の対象となっているとは思えませんでした。「一定以上の規模の企業以外には承認を与えない」という意志の表れではないかと思いました。実際に、GmailのOAuth2認証の承認を得たとアピールしている個人作成のメールソフトは見当たりません。それほど機密性の高い情報ということなのだと思います。
2.Gmailの安全性の高いログイン方法(OAuth2認証)を利用するその他の手段
GoogleのOAuth2認証には、「公開ステータス」というものがあります。公開ステータスは、最初は「テスト」という状態です。これは本番運用前にアプリが正常動作するかどうかをテストする状態です。この状態では100アカウント分のGmailユーザを恣意的に選んでテストに参加させることができます。テストが完了した後は、公開ステータスを「公開」という状態に変更することができます。「公開」の状態には2種類あり、「検証」や「セキュリティ評価」に合格してGoogleの承認を得た場合は、「不特定無制限のユーザ」がアプリを利用できます。しかしGoogleの承認をまだ得ていない場合は、「未確認のアプリ」という扱いとなり「不特定の100アカウント」に制限されます。つまり、Googleの承認を得ていない状態でも、100アカウントに限れば、VoicePopper4でもGoogleのOAuth2認証を利用できる可能性が残されているということです。
※「未確認のアプリ」の利用制限に関する根拠は、Google Cloud PlatformのHelpのこちらのページをご参照ください。
この100アカウントの制限を何とか突破できないか?ということも考えましたが、それはGoogle Cloud Platformの利用規約の3.3で明確に禁止されていますので、Googleのサービスを利用する限りはきちんと従う必要があり、100アカウント分をうまく利用していただこうという方向で考えることにしました。
ここで選択肢は「テスト状態の特定の100アカウント」か、「公開状態の不特定の100アカウント」ということになります。ユーザ側から見た手軽さという意味では、公開状態の方が事前の申し込みを必要としないため手軽ではあります。しかし早い者勝ちですのですぐに100アカウントの上限に達してしまう可能性が高いです。例えば一人で100アカウントを作ったユーザが、その利用枠を一人で独占してしまう可能性も考えられます。どなたが100アカウントの枠を取得されたのかを当方の側では知ることもできませんので、一人当たりの数を管理することもできません。少ない利用枠だからこそ、できるだけ公平に、本当に必要とされている方に分配されることが望ましく、そのためには「テスト状態の特定の100アカウント」を選ぶのが妥当だと考えました。一人1アカウント分という制限を付けて希望者を募り、応募者多数の場合は抽選を行うのです。