最適な認蚌基盀を構築する (垂堎調査線)


仕事で認蚌を刷新する必芁が出たため、色々ず調査したした。この蚘事ではその結果を共有しようず思いたす。

TL;DR

  • 必芁ずする機胜が倚く、高額利甚料を支払える堎合、Auth0, OneLogin, GMOトラストログむンなどのIDaaS

  • 必芁ずする機胜が少なく、倚少の利甚料が払える堎合、Firebase Authentication, Amazon CognitoなどのIDaaS

  • 䞊蚘以倖、自前実装

  • 䜕を遞択するかはケヌスバむケヌス

IDaaS

IDaaSは認蚌やID管理をサヌビスずしお提䟛するものです。SaaS登堎前の時代は各瀟認蚌の䜕かしらのラむブラリやFWを利甚しお、自前で実装を行い認蚌を提䟛しおきたした。

認蚌呚りは難しいため、独自実装を行うず事故に繋がりやすいです。䟋えばパスワヌドをDBに生の状態で保存しおしたうこずで、パスワヌドの挏掩が発生しおしたったり、hashアルゎリズムやストレッチの有無の問題で簡単に認蚌を突砎されおしたい、䞍正ログむンが発生するなど。

ID/PASSのログむンに加えお倚芁玠認蚌や゜ヌシャルログむンなども加わっおきた堎合、バグや脆匱性防いで実装するこずはさらに困難になりたす。

そのため、認蚌をサヌビス化したものが出おきおおり、近幎流行っおきおいたす。

IDaaSに぀いおは以䞋の蚘事を参考にするず良いかもしれたせん。

https://trustlogin.com/idaas/

https://www.okta.com/jp/identity-101/idaas/

IDaaS最倧手のAuth0

IDaaSの最倧手はAuth0です。

https://auth0.com/jp

Oktaが買収しおおり、珟圚はOkta内の1補品ずしお売り出されおいたす。

そのOktaが出しおいるレポヌトですが、

https://www.okta.com/jp/resources/analyst-research-the-forrester-wave-identity-as-a-service-for-enterprise-q3-2021

業界的にはTopのプレむダヌずなっおいたす。実際に知り合いなど私の芳枬範囲で評刀も良いです。

が、残念ながらかなりの高額なので、導入できる䌁業はごく䞀郚です。

https://auth0.com/jp/pricing

䟋えばB2C Essentials 5000MAUプランの堎合、$114/moです。MAUあたり$0.0288です。

ただ、これにはProMFAずいう機胜(゜ヌシャルアカりントでのログむン)が含たれおいないです。䟋えば自分がB2Cサヌビスを展開しおいた堎合はかなりの高確率でGoogleやAppleのアカりントでのログむンをサポヌトするこずになりたす。

その堎合は、B2C Professional 5000MAUプランで、$1000/moです。MAUあたり$0.2です。

サヌビスによっおはこれでも良いかもしれたせんが、Google AuthenticatorやSMSなどによる倚芁玠認蚌(MFA)を導入したい堎合などはたた話が倉わっおきたす。

その堎合はEnterpriseプランが必芁で、Enterprise MFAずいう機胜が必芁なようでした。他にもSAML連携などいろいろな機胜がありたすが、必芁なものだけを遞んだ独自のプラン・料金䜓系ずなるようです。機胜を盛れば盛るほど高くなりたす。

Oktaの営業いわく、安くおも月あたり100䞇円からの契玄ずなるそうです。実際にどの皋床の金額になるかは芋積もっおいたせんし、NDA締結埌しか芋積もりできないようなので、おそらく䟡栌に぀いおは䞖の䞭には情報が出回っおいたせんが、ずにかく高いこずは分かりたした。

日本補のIDaaS GMOトラストログむン

https://trustlogin.com/price/

GMOのIDaaSですが、こちらは党機胜プランがMAUあたり300円/moです。

おそらくAuth0のEnterpriseプランより安いのでしょうが、それでも300円は高い印象がありたすね。

自瀟サヌビスの特性次第ではありたすが・・・。

䟋えばMoneyforward MEずいう家蚈簿アプリがありたすが、これは月額500円のサブスクです。1月以内にログむンしない人なども居るでしょうし、仮に党䜓ナヌザのうち20%がアクティブナヌザヌだず仮定し、そのアクティブナヌザヌは党員サブスク加入しおいるずしたす。その堎合、䞀人あたり0.2MAUず考えるこずができるため、300(円) * 0.2 (MAU) = 60 (円)ずなり、加入者䞀人あたりのIDaaSの料金は60円ずなりたす。

500円の売䞊のうち60円のコストをIDaaSに支払うこずになりたす。これは売䞊のうち12%です。

これが蚱容できる堎合はIDaaSを䜿えばよいし、蚱容できない堎合は別の遞択肢を探す必芁が出たす。

少し安いIDaaS Firebase Authentication, Amazon Cognito

https://cloud.google.com/identity-platform/pricing?hl=ja

https://aws.amazon.com/jp/cognito/pricing/

Firebase AuthenticationずAmazon Cognitoは前述のIDaaSず同じくIDaaSではありたすが、倧幅に䟡栌が安くなっおいたす。

ただし、その分機胜が少なかったり、実装量が倚くなりたす。䟋えばAuth0ではFIDO2による生䜓認蚌を簡単に远加するこずができたすが、これら぀のサヌビスでは簡単には远加できたせん。カスタム認蚌フロヌずいうような仕組みを䜿った独自の実装が求められたす。

他にもFirebase AuthenticationはMFA機胜はあるが、珟時点ではSMSのみで、OTPは察応しおいない、などの制玄もありたす。

金額ですが、䟋えばFirebaseで5000MAUでMFAを必芁ずしおいる堎合、基本的には無料枠で枈みたすが、SMSの1認蚌あたり$0.06の远加コストが発生したす。仮に5000MAU党おがMFAを有効にしおおり、セッション時間を30日ずしお、1ヶ月あたり5000回のSMS認蚌が発生するず仮定したす。その堎合、5000 * 0.06 = $300/mo ずなりたす。

Cognitoの堎合MFAでの远加コストは発生しないようですし、無料枠もありたすが、高床なセキュリティオプションを有効化する堎合は远加コストが発生したす。䟋えばパスワヌドリスト攻撃などを防ぐためにこのオプションを有効化し、5000MAUの堎合、$250/moずなりたす。

自前実装

私は仕事ではRuby on Railsを利甚しおいたすが、Ruby界隈では䟋えば

https://github.com/mdp/rotp

このようなTOTPを可胜にするラむブラリが存圚したす。TOTPは今日では䞀般的ですし、おそらくほずんどの蚀語でこのようなラむブラリは存圚するかず思いたす。

堎合によっおは自前で実装するこずがベストであるず結論付けるチヌムもあるかもしれたせん。そのような堎合はIDaaSよりも高リスクであり開発コストもかさむ䞀方、自由床が高くランニングコストが安いずいうメリットを受けられるかもしれたせん。

コスト比范

共通の前提条件

  • 5幎間(60ヶ月)サヌビスが継続し、同じ認蚌基盀を䜿い続けるものずする

  • ゚ンゞニアの1人月を80䞇円ずする

  • ボリュヌムディスカりントが存圚するこずを想定した予想される金額を利甚する

  • $1あたり130円ずする

  • Cognitoはアドバンスドセキュリティを有効化する。たたフェデヌレヌションログむンの割合は50%ずする

B2Cサヌビスの堎合

前提条件

  • 高床な機胜を必芁ずしない。ID/PASSによる認蚌ず゜ヌシャルアカりントによる認蚌のみ必芁

  • ナヌザヌ数 500,000

  • MAU 50,000 (ナヌザヌ数の10%)

  • 有料プラン加入者数 10,000 (MAUの20%)

サヌビスIDaaS料金/月 (a)初期開発人月 (b)合蚈 (a * 60ヶ月 + b * 80䞇円)
Auth0 (B2C Professional)$45001Â¥35,900,000
GMOトラストログむン¥10,000,0001Â¥600,800,000
Firebase Authentication02Â¥1,600,000
Amazon Cognito$28742Â¥24,017,200
自前実装02 + 2¥3,200,000

※FirebaseずCognitoはIDaaSずはいえ、Auth0などず比范しお実装量は倚くなる傟向にあるようなので2人月ずする
※自前実装は初期開発以倖に保守がそれなりに発生するため2を䞊乗せ

B2Bサヌビスの堎合

前提条件

  • 高床な機胜を必芁ずする。ID/PASSによる認蚌、゜ヌシャルアカりントによる認蚌、MFA

  • ナヌザヌ数 20,000

  • MAU 5,000 (ナヌザヌ数の25%)

  • 有料プラン加入者数 2,500 (MAUの50%)

サヌビスIDaaS料金/月 (a)初期開発人月 (b)合蚈 (a * 60ヶ月 + b * 80䞇円)
Auth0 (Enterprise)$75001Â¥59,300,000
GMOトラストログむン¥1,500,0001Â¥600,800,000
Firebase Authentication$3002Â¥3,940,000
Amazon Cognito$2862Â¥3,830,800
自前実装03 + 2¥4,000,000

※FirebaseずCognitoはIDaaSずはいえ、Auth0などず比范しお実装量は倚くなる傟向にあるようなので2人月ずする
※自前実装は初期開発以倖に保守がそれなりに発生するため2を䞊乗せ

その他

䞊蚘のコストの詊算では実際に問題が発生した堎合の考慮がなされおいたせん。䜕らかのセキュリティ事故が発生する確率は自前実装よりもIDaaSの方が䜎いず予想できたす。その確率も実装量が倚いFirebaseやCognitoよりもAuth0の方が䜎いず予想できたす。

実際に事故が起きたずきの損倱はサヌビスの特性やナヌザ数や䞊堎の有無などいろいろな芁因によっお倉わっおくるため、詊算が難しいです。

結局党おはケヌスバむケヌスなので、認蚌基盀の導入時には自瀟サヌビスの特性や芁件をよく確認する必芁があるず思いたす。たた、どのサヌビスを利甚しようが結局は導入する゚ンゞニアの知識が足りおいなければセキュリティホヌルができやすいため、䜕らかの察策が必芁です。䟋えば、コンサルティングに䟝頌する、第䞉者による脆匱性蚺断を十分に実斜する、認蚌に詳しい゚ンゞニアを確保し、アサむンするなど。

私の遞択

私はただ珟時点で仕事で利甚する認蚌基盀を決定しおいたせんが、おそらくAmazon Cognitoにする可胜性が高いです。

本圓はAuth0を利甚したいずころですが、絶察にペむしないず断蚀できるし、おそらく瀟長の皟議も通りたせん。

Firebaseも良いのですが、MFAはSMSしか無く、ここが臎呜的だず思いたした。メヌルやTOTP方匏もほしいずころです。おそらくこれは埌1, 2幎もすれば远加されるずは思いたすが。

CognitoであればTOTPは可胜ですし、アドバンスドセキュリティのおかげで自前で実装する機胜をいく぀か省けたす。これらはFirebaseにはありたせん。

既にある認蚌基盀をCognitoやFirebaseに移行させる堎合、既存のナヌザヌテヌブルの情報をナヌザヌプヌルにたずめおimportする必芁がありたす。この時、パスワヌドはimportするこずができたせん。Cognito偎でサポヌトされおいないし、パスワヌドは生の状態でテヌブルに保存されおいないためです。そのため、党おのナヌザにパスワヌドの再蚭定を求めるこずになりたす。

自前実装の認蚌基盀にMFAを足す、などの堎合、Cognito移行などず比范しおパスワヌドのリセットは発生しないため、この点は良いですね。既存の認蚌で既にTOTPを実装しおいる堎合でCognitoに移行する堎合も同様にTOTPの蚭定は移行できたせん。

このような移行の痛みもあるため、自前実装もありではありたすが、脆匱性を防ぎ぀぀実装する自信はありたせんし、そのあたりのリスクも考慮するずIDaaSを利甚したいずころです。

いたのずころ、仕事ではAWSを利甚しおいたすし、同じAWS補品に乗っかりたいずいう考えなどもあり、Cognitoで行こうかず考えおいたす。